;TASK BUILD OPTIONS: ; ;ACCLOG/-CP/-FP/PR=ACCLOG ;[1,1]EXEC.STB ;/ ;UNITS=2 ;ASG=TI:2 ;STACK=64 ;LIBR=SYSRES:RO ;PRI=235 ;UIC=[1,5] ;// ; .PAGE .SBTTL MACRO CALLS. ; .MCALL $STRUC,CLEF$S,SPND$S,RDEF$S,EXIT$S .MCALL FINIT$,OFID$A,PUT$,CLOSE$,QIOW$S .MCALL OFNB$W,FDBDF$,FDAT$A,FDOP$A,FDBF$A .MCALL FSRSZ$,NMBLK$,GTIM$S $STRUC ; ; .SBTTL DATA ; ACTFDB: FDBDF$ ;FDB. FDAT$A R.VAR,FD.CR FDOP$A 1,DESCR FDBF$A 1 FSRSZ$ 1 ;FSR DEFINITION. ACTFNB: NMBLK$ ;FILENAME BLOCK DESCR: .WORD 0,0 .WORD DIRSZ,DIRNM .WORD 0,0 DIRNM: .ASCII /[001,005]/ DIRSZ=.-DIRNM .EVEN ACTDFN: NMBLK$ TTLOG,DAT,0,SY,0 ;DEFAULT FILENAME BLOCK. EXITFL: .WORD 0 ;NON-ZERO TO EXIT. ; OPERR: .ASCII /TTLOG -- FILE OPEN ERROR./ OPERRL=.- OPERR IOERR: .ASCII *TTLOG -- I/O ERROR.* IOERRL=.- IOERR ENDAC: .ASCII /TTLOG -- ACCOUNTING STOPPED./ ENDACL=.- ENDAC .EVEN LOGDON: .ASCII /TT/ UNIT: .WORD 0 UIC: .WORD 0 TIME: .BLKW 8. LRECL=.-LOGDON .PAGE .SBTTL MAIN PROGRAM. ACCLOG: FINIT$ ;IMT FILES-11. CALL FINDFL ;TRY TO FIND FILE. $IF <,CS> ;IF OK JMP ABC $END GTIM$S #TIME ;MOVE TIME TO DATE AREA CALL OPENFL ;--OPEN THE FILE. DOPUD: MOV @#.PUDBA,R0 MOV @#.PUDEA,R1 ;PUD BEGIN AND END POINTERS $WHILE ;SEARCH ALL PUDS $IF ;LOOK FOR "TT" DEVICE $ANDIF ; IF IT'S LOGGED ON MOVB U.UN(R0),UNIT ; GET UNIT NUMBER MOV U.UI(R0),UIC ; AND USER UIC MOV R0,-(SP) CALL LOGIT ; LOG THE RECORD MOV (SP)+,R0 $END ADD #U.SZ,R0 ;GO TO NEXT PUD $END CLOSE$ #ACTFDB ;--CLOSE THE FILE. EXIT$S ; $ELSE ;ELSE OPEN ERROR, ABC: MOV #OPERR,R1 ;-WRITE MESSAGE. MOV #OPERRL,R2 CALL MSG ; $END ;-END. EXIT$S .PAGE .SBTTL LOG A TTY RECORD. LOGIT: PUT$ #ACTFDB,#LOGDON,#LRECL ;----WRITE THE RECORD. $IF <,CS> ;----IF ERRORS, MOV #IOERR,R1 ;-----WRITE MESSAGE. MOV #IOERRL,R2 CALL MSG $END RETURN .PAGE .SBTTL FIND FILE I.D. ; ;OUTPUTS: ACTFNB, CC=SUCCESS, CS=FAILURE. ; FINDFL: MOV #ACTFDB,R0 ;R0=FDB ADDRESS. MOV #ACTFNB,R1 ;R1=FNB ADDRESS. CLR R2 ;R2=0: NO DSPT. MOV #ACTDFN,R3 ;R3=DFNB ADDRESS. CALL .PARSE ;FILL IN FNB. $IF <,CC> ;IF SUCCESS, CALL .FIND ;-FIND FILE. $IF <,CS> ;-IF ERROR, $IF ;--IF FILE NOT FOUND, MOV #S.FNBW,R2 ;---MOVE ACTFNB INTO FDB. ADD #F.FNB,R0 $LOOP MOV (R1)+,(R0)+ $SOB R2 OFNB$W #ACTFDB ;---OPEN FILE. ADD #F.FNB+N.FID,R0 ;---SAVE FILE I.D. MOV (R0)+,ACTFNB+N.FID MOV (R0)+,ACTFNB+N.FID+2 MOV (R0)+,ACTFNB+N.FID+4 CLOSE$ #ACTFDB $ELSE ;--ELSE STILL ERROR. SEC ;---KEEP CARRY SET. $END ;---END. $END ;--END. $END ;-END. RETURN ;DONE. ; ; OPEN TO LOG. ; OPENFL: MOV #ACTFDB+F.FNB,R0 ;RESTORE FILENAME BLOCK. MOV #ACTFNB,R1 MOV #S.FNBW,R2 $LOOP MOV (R1)+,(R0)+ $SOB R2 OFID$A #ACTFDB ;OPEN FOR NEXT ACCOUNTING. ;ERRORS CAUGHT LATER. RETURN .PAGE .SBTTL MESSAGE SUBROUTINE. ; ;INPUTS: R1=MESSAGE ADDR. ; R2=MESSAGE LENGTH. ; MSG: QIOW$S #IO.WLB,#2,#2,,,, RETURN .END ACCLOG