.TITLE HELOVR .IDENT /V7.08/ ;*********************************************************************** ; ; PROCESS A LOGON REQUEST ; ; THIS OVERLAY IS LOADED AND CALLED WHEN THE LOGGING TASK ; DISPATCHER RECEIVES A LOGON REQUEST SENT FROM ...HEL. ; AN ENTRY IS CREATED IN THE USER STORAGE REGION FOR THE ; TERMINAL/USER. ; ; VERSION: V6 MAY 1979 ; VERSION: V7 JANUARY 1981 ; ; STEVE THOMPSON SCHOOL OF CHEMICAL ENGINEERING ; OLIN HALL ; CORNELL UNIVERSITY ; ITHACA NY 14853 ; ; REVISION HISTORY ; ---------------- ; ; SMT718 20-JUL-81 ADD PAGES PRINTED/QMG INTERFACE ; ; SMT753 7-OCT-81 CHANGED NAMES OF CONDITIONAL ASSEMBLY ; PARAMETERS; SEE THE FILES MODIFY.TXT AND ; CONDEF.MAC FOR DETAILS. ; ; SMT757 7-OCT-81 ADDED CODE FOR MEMORY USAGE ACCOUNTING. ; ; SMT767 12-OCT-81 TRANSMIT A UAB ALLOCATION ERROR TO HELLO ; IF WE ARE NOT ABLE TO BUFFER THE NECESSARY ; ACCOUNTING DATA STRUCTURES. ; ; SMT814 12-APR-82 LOWER CASE MESSAGES FOR RSX-11M V4.0 ; ; SMT828 27-JUL-82 REPLACED "$FMTDV" BY "FM.DEV" ; ;********************************************************************** .MCALL HWDDF$ HWDDF$ ; DEFINE HARDWARE PARAMETERS ; ; ERROR MESSAGES ; .NLIST BEX .IIF DF AA$V40, .ENABL LC ERR1: .ASCII /LOG... -- Multiple logon - continuing session for / ERR1A: .ASCII /DDNN:/ ERR2: .ASCII /LOG... -- Buffer overflow - logon ignored for / ERR2A: .ASCII /DDNN:/ .EVEN $HELEP:: ; OVERLAY TRANSFER ADDRESS MOV B.UCB(R5),R0 ; GET THE TERMINAL'S UCB ADDRESS CALL $LUAB ; CHECK IF IT'S ALREADY BEING USED BCS 5$ ; CARRY SET IS GOOD MOV #ERR1,R4 ; SET MESSAGE ADDRESS MOV #ERR1A,R0 ; AND LOCATION FOR DEVICE NAME BR 10$ ; GO SEND THE ERROR MESSAGE 5$: CLR R0 ; LOOK FOR AN EMPTY PACKET CALL $LUAB ; IS THERE ONE? BCC 15$ ; IF CC YES BIS #1,B.UCB(R5) ; SET BIT TO INDICATE UAB ALLOCATION ERROR MOV #ERR2,R4 ; NO, SET ERROR MESSAGE ADDRESS MOV #ERR2A,R0 ; AND LOCATION FOR DEVICE NAME 10$: MOV B.UCB(R5),R3 ; PUT UCB ADDRESS IN R3 BIC #1,R3 ; JUST IN CASE THIS BIT IS SET CALL FM.DEV ; FORMAT DEVICE NAME SUB R4,R0 ; CALCULATE MESSAGE LENGTH MOV R4,$QIO+Q.IOPL ; SET MESSAGE ADDRESS IN DPB MOV R0,$QIO+Q.IOPL+2 ; AND ITS LENGTH CALL $ASGCO ; ASSIGN LUN TO CO: CALL $PRINT ; SEND OUT THE MESSAGE BR 30$ ; AND DEALLOCATE THE PACKET 15$: CALL $SWSTK,25$ ; SWITCH STACKS MOV $ACCHD,R2 ;; GET ACCOUNTING LISTHEAD ADDRESS BEQ 20$ ;; IF ZERO, CAN'T FIND SYSTEM TIME MTPS #PR7 ;; LOCK OUT INTERRUPTS MOV 6(R2),L$CONN(R1) ;;; SET HIGH ORDER START TIME MOV 10(R2),L$CONN+2(R1) ;;; AND LOW ORDER MTPS #0 ;;; ENABLE INTERRUPTS AGAIN 20$: RETURN ;; RETURN TO USER LEVEL 25$: CLR L$NTSK(R1) ; SET NO TASKS RUN YET CLR L$PAGE(R1) ; OR PAGES PRINTED MOV B.UCB(R5),L$UCB(R1) ; SET UCB ADDRESS IN PACKET MOV B.UIC(R5),L$UIC(R1) ; AND LOGON UIC MOV B.HACN(R5),L$ACNO(R1) ; SAVE ACCOUNT NUMBER MOV B.HCHW(R5),L$CHWD(R1) ; AND CHAIN WORD CONTENTS CLR L$CPU(R1) ; ZERO INITIAL CPU TIME CLR L$CPU+2(R1) ; .IF DF AA$QIO & AA$TCQ CLR L$QIO(R1) ; ZERO INITIAL NO. OF QIO'S CLR L$QIO+2(R1) ; .ENDC ; DF AA$QIO & AA$TCQ CLR L$TEFF(R1) ; ZERO INITIAL "EFFECTIVE" TIME USED CLR L$TEFF+2(R1) ; .IF DF AA$MEM CLR L$CORE(R1) ; ZERO INITIAL CORE/TIME FIELD CLR L$CORE+2(R1) ; .ENDC ; DF AA$MEM .IF DF AA$CPU ! AA$ENA .IF DF AA$PUO .IF NDF AA$ENB MOV #,L$OPT(R1) ; CPU /ON AND /DS AT LOGON .IFF MOV #AC.RPT,L$OPT(R1) ; CPU /ON AND /EN AT LOGON .ENDC ; NDF AA$ENB .IFF .IF NDF AA$ENB MOV #AC.DIS,L$OPT(R1) ; CPU /OFF AND /DS AT LOGON .IFF CLR L$OPT(R1) ; CPU /OFF AND /EN AT LOGON .ENDC ; NDF AA$ENB .ENDC ; DF AA$PUO .ENDC ; DF AA$CPU ! AA$ENA MOV B.HSCN(R5),L$SPCN(R1) ; SAVE NON-STANDARD CONNECT RATE WORD MOV B.HSCP(R5),L$SPCP(R1) ; SAVE NON-STANDARD CPU RATE WORD 30$: CALL $SWSTK,40$ ; SWITCH STACKS MOV B.HTCB(R5),R0 ;; GET REQUSETOR'S TCB ADDRESS CALLR $EXRQN ;; RESTART THE TASK AND RETURN TO USER STATE 40$: RETURN ;; RETURN TO ROOT .END