.TITLE BYEOVR .IDENT /V7.09/ ;**************************************************************************** ; ; PROCESS A LOGOFF REQUEST ; ; THIS OVERLAY IS LOADED AND CALLED WHEN THE LOGGING TASK ; DISPATCHER RECEIVES A LOGOFF REQUEST SENT FROM ...BYE. ; TERMINAL SESSION PARAMETERS ARE RETURNED TO ...BYE AND ; THE USER'S ENTRY IS DELETED FROM THE UAB LIST. ; ; VERSION: V6 MAY 1979 ; VERSION: V7 JAN 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. THIS REQUIRES ; THE UIC FIELD IN THE UAB TO BE CLEARED AT ; LOGOFF. ; ; SMT753 7 OCT 1981 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 ; ; SMT814 12-APR-82 LOWER CASE MESSAGES FOR RSX-11M V4.0 ; ; SMT821 23-APR-82 CHANGED ENTRY POINT NAMES OF ACCOUNTING ; SUPPORT ROUTINES (SEE MODIFY.TXT) ; ; 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... -- Can't satisfy logoff for / ERR1A: .ASCII /DDNN:/ .EVEN .PAGE .SBTTL MAIN BYEOVR ROUTINE $BYEEP:: ; OVERLAY TRANSFER ADDRESS MOV B.UCB(R5),R0 ; GET UCB ADDRESS MOV B.BTCB(R5),-(SP) ; SAVE BYE TCB ADDRESS ON STACK CALL $LUAB ; LOOK FOR THE DATA PACKET BCC 5$ ; OK, FOUND IT MOV B.UCB(R5),R3 ; ERROR, GET THE UCB ADDRESS MOV #ERR1A,R0 ; AND THE PLACE TO STUFF IT CALL FM.DEV ; FORMAT THE DEVICE NAME SUB #ERR1,R0 ; CALCULATE MESSAGE LENGTH MOV #ERR1,$QIO+Q.IOPL ; STORE MESSAGE ADDRESS MOV R0,$QIO+Q.IOPL+2 ; AND MESSAGE LENGTH CALL $ASGCO ; ASSIGN LUN TO CO: CALL $PRINT ; AND PRINT IT OUT BIS #1,B.UCB(R5) ; SET BIT 0 IN THE UCB WORD TO LET... ; ... BYE KNOW WE HAD NO INFORMATION BR 25$ ; RESTART REQUESTOR 5$: MOV L$NTSK(R1),B.BTCB(R5) ; OVERWRITE TCB ADDRESS WITH NUMBER... ; ... OF TASKS RUN MOV $CHGFL,B.ACFL(R5) ; SEND A/C ENABLE FLAG MOV L$PAGE(R1),B.BPAG(R5) ; SEND TOTAL OF PRINTED PAGES MOV L$UIC(R1),B.UIC(R5) ; SEND THE LOGON UIC BACK TOO MOV L$CPU+2(R1),B.SCPU+2(R5) ; SEND CPU TIME USED MOV L$CPU(R1),B.SCPU(R5) ; .IF DF AA$MEM MOV L$CORE+2(R1),B.BCOR+2(R5) ; SEND MEMORY USAGE MOV L$CORE(R1),B.BCOR(R5) ; .ENDC ; DF AA$MEM .IF DF AA$QIO & AA$TCQ MOV L$QIO+2(R1),B.SQIO+2(R5) ; SEND # I/O REQUESTS MOV L$QIO(R1),B.SQIO(R5) ; .ENDC ; DF AA$QIO & AA$TCQ MOV L$TEFF(R1),B.ECPU(R5) ; PUT EFFECTIVE CPU IN PACKET MOV L$TEFF+2(R1),B.ECPU+2(R5) ; (PRIORITY ADJUSTED) MOV L$CONN(R1),R2 ; GET HIGH ORDER LOGON TIME MOV L$CONN+2(R1),R3 ; AND LOW ORDER NEG R2 ; CHANGE ITS SIGN NEG R3 ; SBC R2 ; MOV R2,B.CONN(R5) ; STORE IN PACKET MOV R3,B.CONN+2(R5) ; MOV L$SPCN(R1),B.BSCN(R5) ; SEND NON-STANDARD CONNECT RATE WORD MOV L$SPCP(R1),B.BSCP(R5) ; SEND NON-STANDARD CPU RATE WORD MOV L$ACNO(R1),B.BACN(R5) ; SEND THE ACCOUNT NUMBER MOV L$CHWD(R1),B.BCHW(R5) ; AND THE CHAIN WORD CALL $SWSTK,20$ ; SWITCH STACKS MOV $ACCHD,R2 ;; GET ACCOUNTING LISTHEAD ADDRESS BNE 10$ ;; IF NON-ZERO WE KNOW WHERE IT IS CLR B.CONN(R5) ;; CAN'T CHARGE CONNECT TIME RIGHT NOW CLR B.CONN+2(R5) ;; BR 15$ ;; CARRY ON AS IF NOTHING HAPPENED 10$: MTPS #PR7 ;; LOCK OUT INTERRUPTS ADD 10(R2),B.CONN+2(R5) ;;; ADD ON TIME AT LOGOUT... ADC B.CONN(R5) ;;; ...TO GET CONNECT TIME ADD 6(R2),B.CONN(R5) ;;; MTPS #0 ;;; ENABLE INTERRUPTS AGAIN 15$: RETURN ;; BACK TO USER LEVEL 20$: CLR L$UCB(R1) ; MAKE THE PACKET AVAILABLE CLR L$UIC(R1) ; MAKE SURE PRINT REQUESTS DON'T GO ASTRAY 25$: MOV (SP)+,R0 ; GET BYE TCB ADDRESS CALL $SWSTK,30$ ; SWITCH TO SYSTEM STACK CALLR $EXRQN ;; RESTART BYE AND RETURN 30$: RETURN ;; BACK TO USER STATE AND DISPATCHER ;; (THE PACKET IS NOT DEALLOCATED HERE. ;; BYE USES THE INFORMATION AND THEN ;; DEALLOCATES IT.) .END