BYEV7.MAC/-AU=BYE.MAC -1,4 .TITLE BYEV7 .IDENT /V7.3/ ; ; COPYRIGHT (C) 1976,1977,1979,1980 -24,24 ; VERSION 2.9 -69,74 ; RA300 REPLACE STOP BIT WITH WAIT FOR ; ; DD041 FIX EXIT WITH OUTSTANDING I/O (DLG) ; ; SA303 FIX BUG OF LOG OFF WHILE CMDS ; STILL IN Q TO MCR ; ; SA304 INIT USER MODE CARRY CLR IN GIVMCR ; ; SA305 CHECK ERROR CODE FOR RESOURCE IN ; USE. IF TERMINAL BUSY, TRY AGAIN ; ; SMT712 13-JUL-81 ADDED ACCOUNTING SYSTEM VERSION 7 SUPPORT AND ; UPDATED BYE TO AUTOPATCH E LEVEL ; ALSO CORRECTED AN ERROR IN THE SA305 PATCH FOR ; THE DEASSIGN COMMAND WHICH PREVENTED ASSEMBLY, ; AND ANOTHER PROBLEM WITH THE RA300 PATCH WHICH ; CAUSES AN ASSIGN FAILURE AT LOGOFF. ; ; SMT715 13-JUL-81 FIX A MISTAKE IN THE POSITION OF ONE OF THE ; ACCOUNTING ROUTINE CALLS. ALTER "MSG1A" SO A ; PROMPT DOESN'T APPEAR IN THE MIDDLE OF THE ; OUTPUT (LF,> REMOVED) ; ; SMT776 26-OCT-81 RESTORED ORIGINAL USE OF THE $USRSB ROUTINE FOR ; INSTALLATION-SPECIFIC PROCESSING BEFORE LOGGING ; OFF. ; .MCALL MRKT$S,DIR$,EXIT$S,WTSE$S,QIO$,GMCR$,ABRT$ .MCALL CMKT$S,WTLO$S,GTIM$S,MTADF$ .MCALL QIOW$ ; ;MLG006 .MCALL SPWN$,WTSE$ ;RA300 .MCALL QIOW$C ;DD041 MTADF$ ; DEFINE ANSI MAGTAPE DATA STRUCTURES ;**-1 -97,98 MSG1: .ASCII <12>/XX-XXX-XX XX:XX / MSG1A: .ASCIZ /DDNN: LOGGED OFF/<15> -105,106 MSG5: .ASCIZ <15>/GO TO BED, YOU DESERVE A REST/ LGOMSG: .ASCIZ /LOGOUT USER / -113,114 DEASSN: .ASCIZ %ASN =/LOGIN%<33> ; DEASSIGN ALL LOGIN LOGICAL UNITS ;SA305 DEALEN=.-DEASSN-1 -119,122 WTEDPB: WTSE$ 1 ;RA300 UCB: .WORD 0 ; UCB ADDRESS OF TI ;**-1 ERRDPB: QIO$ IO.WBT,1,1,,IOSTAT,,<0,0,40> ; DPB FOR TI: I/O ;MLG057 IOSTAT: .BLKW 2 ; I/O STATUS BLOCK -142,142 2$: MOV $TKTCB,R0 ; GET OUR TCB ADDRESS -174,175 DIR$ #WTEDPB ;WAIT UNTIL DEASSIGN COMPLETED ;RA300 BR 6$ ;**-1 -203,203 27$: CLR U.OWN(R3) ; DEAALOCATE DEVICE -211,211 BYE1: CALL $GBLOG ; GET LOG...'S TCB ADDRESS CALL LGOLOG ; LOG LOGOUT ON CO: -216,216 1$: CALL $RQBYE ; DO ACCOUNTING PROCESSING -240,240 CALL DATTIM ; CONVERT TIME TO ASCII -251,256 CALL $FINBY ; FINISH ACCOUNTING PROCESSING ROR (SP)+ ; NEED TO WAIT ON CO:? BCS 20$ ; IF CS NO CALL $COWAT ; YES--WAIT FOR IT 20$: BYEXIT: ;SA303 CLC ; CLR USER MODE CARRY ;SA303 CALL $SWSTK, 40$ ; GO TO SYSTEM STATE ;SA303 MOV $MCRPT, R0 ;; POINT TO MCR... TCB ;SA303 MOV T.RCVL(R0), R0 ;; LOCATE CMD BUFFER ;SA303 BEQ 30$ ;; BR IF DONE.. SUCCESS ;SA303 10$: ;SA303 CMP 2(R0), UCB ;; CMD FROM OUR TI:? ;SA303 BEQ 20$ ;; BR IF YES ;SA303 MOV (R0), R0 ;; LINK TO NEXT ;SA303 BNE 10$ ;; LOOP ;SA303 BR 30$ ;; IF END OF LIST W/O MATCH-SUCCESS BRAN;SA303 20$: ;SA303 MOV @$HEADR, R2 ;; SET USER CARRY BIT ;SA303 INC 6(R2) ;SA303 30$: ;SA303 RETURN ; BACK TO USER STATE ;SA303 40$: ;SA303 BCC 50$ ; IF SUCCESS IN SYSTEM STATE, BRANCH ;SA303 MOV $TKPS, R0 ; GET TICKS PER SECOND ;SA303 ASR R0 ; SHIFT ;SA303 MRKT$S #2,R0,#1 ; WAIT 1/4 SEC ;SA303 WTSE$S #2 ;SA303 BR BYEXIT ; CHECK MCR QUEUE AGAIN ;SA303 50$: ;SA303 MOV UCB, R0 ; GET TI: UCB ADDRESS ;SA303 BIS #U2.LOG,U.CW2(R0) ; LOG TERMINAL;**-1 -263 QIOW$C IO.KIL,1 ; KILL ANY OUTSTANDING I/O ;DD041 -335,336 GIVMCR: ;SA304 CLC ; INIT TO USER MODE CARRY CLEAR ;SA304 CALL $SWSTK, 15$ ; SWITCH TO SYSTEM STATE ;SA304 MOV #84.,R1 ; SET LENGTH OF MCR BUFFER ;**-1 -351,351 15$: RETURN ; RETURN TO USER STATE -368,370 DIR$ #ERRDPB ; ISSUE MESSAGE BCS 30$ ; ERROR ;SA305 15$: ;SA305 MRKT$S #2,#5,#2 ; SET TIMER FOR 5 SECONDS ;**-1 -379,380 CALLR WAIT1 ; WAIT FOR KILLED I/O TO COMPLETE 20$: RETURN ; ; ;SA305 30$: ;SA305 MOV #3.,R1 ; COUNTER FOR 3 IO RETRIES ;SA305 35$: ;SA305 CMP #IE.RSU,IOSTAT ; WAS ERROR RESOURCE IN USE? ;SA305 BNE 20$ ; IF NOT, RETURN ;SA305 CALL WAIT1 ; WAIT A SECOND FOR TERMINAL ;SA305 DIR$ #ERRDPB ; RETRY IO ;SA305 BCC 15$ ; IF NO ERROR, FINISH UP ;SA305 SOB R1,35$ ; IF ERROR, LOOP TO TRY AGAIN ;SA305 RETURN ; AFTER 3 UNSUCESSFUL TRIES, RETURN ;SA305 /