.TITLE TSKOFF .IDENT /02/ .MCALL QIOW$C,EXIT$S,TCBDF$,MRKT$C,WTSE$C TCBDF$ ; DEFINE TCB OFFSETS .ENABL LSB ; ; G.A. BASSETT 5-MAY-77 ; ; ACCOUNT LOGGING OFF TASK ; START: MRKT$C 1,30.,1 ; WAIT FOR MCR TO PRINT PROMPT WTSE$C 1 ; CLR ERROR ; CLEAR ALLOCATION ERROR INDICATOR CALL $LOCKL ; LOCK THE SYSTEM LISTS MOV #TSKLOG,R3 ; GET TASK NAME ADDRESS IN R3 CALL $SRSTD ; SCAN THE STD FOR TSKLOG BCS INSERR ; IS C=1, THEN NO TSKLOG BIT #TS.EXE,T.STAT(R0) ; IS IT ACTIVE? BNE ACTERR ; NO. ERROR. MOV R0,R5 ; SAVE TCB ADDRESS MOV #BLKSIZ,R1 ; GET BLOCK SIZE TO ALLOCATE CALL $SWSTK,10$ ; SWITCH TO SYSTEM STATE CALL $ALOCB ;; GET IT BCS ALLERR ;; IF C=1, THEN ALLOCATION FAILURE MOV R0,R1 ;; COPY BLOCK TO R1 MOV #1,2(R1) ;; SET WORD TO INDICATE EXIT MOV R5,R0 ;; RESTORE TCB ADDRESS CALLR $EXRQF ;; QUEUE AND START ACCLOG ALLERR: INC ERROR ;; INDICATE ERROR RETURN ;; AND EXIT SYSTEM STATE 10$: TST ERROR ; WAS THERE AN ERROR? BNE ALLER1 ; YES. SAY SO! 20$: CALL $UNLKL ; UNLOCK THE SYSTEM LISTS EXIT$S ; NO. EXIT. BLKSIZ=24 ; ACCOUNT BLOCK SIZE INSERR: QIOW$C IO.WVB,5,5,,,, BR 20$ ACTERR: QIOW$C IO.WVB,5,5,,,, BR 20$ ALLER1: QIOW$C IO.WVB,5,5,,,, BR 20$ ERROR: .WORD 0 TSKLOG: .RAD50 /TSKLOG/ .NLIST BEX INSM: .ASCII /TSKOFF -- "TSKLOG" NOT INSTALLED/ INSS=.-INSM ACTM: .ASCII /TSKOFF -- "TSKLOG" NOT ACTIVE/ ACTS=.-ACTM ALLM: .ASCII /TSKOFF -- MEMORY ALLOCATION FAILURE/ ALLS=.-ALLM .LIST BEX .END START