.TITLE LOGGER -- RECORD TERMINAL LOGON - LOGOFF .IDENT /JRBARR/ .MCALL SMACIT SMACIT ;CALL IN SUPER MAC .MCALL VRCX$,QIOW$,DIR$,MOUT$S .MCALL FINIT$,FSRSZ$,FDBDF$,FDAT$A,FDOP$A,FDRC$A,FDBF$A .MCALL OPEN$,PUT$,CLOSE$ ; FSRSZ$ 1 ; ; PROCEDURE LOGGER FINIT$ REPEAT DIR$ #RDOREX ;GET A PACKET OR GO AWAY IF TASK EQ HELLO THEN LET LENGTH := #2 LET STRING := #ON ELSE IF TASK EQ BYE THEN LET LENGTH := #3 LET STRING := #OFF ELSE IF TASK EQ CHANGE THEN LET STRING := #TO LET LENGTH := #2 ELSE IF TASK EQ BOOTED THEN LET STRING := #BOOT LET LENGTH := #10. FI FI FI FI LET PUNIT := UNIT LET R0 := #TIME LET YEAR := (R0)+ LET MONTH := (R0)+ LET DAY := (R0)+ LET HOUR := (R0)+ LET MINUTE := (R0)+ LET SECOND := (R0)+ LET GROUP :B= UIC+1 LET PROG :B= UIC MOUT$S #STR,#PARM,,CONT,USBUF,#BUFF,#80. LET QIO+Q.IOPL+2 := BUFF+2 DIR$ #QIO OPEN$ #FILE ON.ERROR FDOP$R #FILE,,,,#FO.WRT OPEN$ #FILE END PUT$ #FILE CLOSE$ #FILE END ENDPROCEDURE LOGGER ; ; QIO: QIOW$ IO.WVB,2,2,,IOSB,, RDOREX: VRCX$ ,PACKET,13. PACKET: .BLKW 2 TASK: .WORD 0 UIC: .WORD 0 DEVICE: .WORD 0 UNIT: .WORD 0 TIME: .WORD 0,0,0,0,0,0,0,0 IOSB: .WORD 0,0 HELLO: .RAD50 /HEL/ BYE: .RAD50 /BYE/ CHANGE: .RAD50 /UIC/ BOOTED: .RAD50 /TON/ BUFF: .BLKW 40. STR: .WORD MASKL,MASK MASK: .ASCIZ ^ON %D/%D/%D AT %D:%D:%D %2A%O: LOGGED %VA BY [%O,%O]^ MASKL=.-MASK ON: .ASCII /ON/ OFF: .ASCII /OFF/ TO: .ASCII /TO/ BOOT: .ASCII /AND BOOTED/ .EVEN PARM: MONTH: .WORD 0 DAY: .WORD 0 YEAR: .WORD 0 HOUR: .WORD 0 MINUTE: .WORD 0 SECOND: .WORD 0 .WORD DEVICE PUNIT: .WORD 0 LENGTH: .WORD 0 STRING: .WORD 0 GROUP: .WORD 0 PROG: .WORD 0 ; ; FILE: FDBDF$ FDAT$A R.FIX,,26. FDOP$A 1,DATSET,,FO.APD FDRC$A ,PACKET+2,26. FDBF$A 1 DATSET: .WORD 4 .WORD DVC .WORD 5 .WORD FUIC .WORD 12. .WORD FILEN DVC: .ASCII /SY0:/ FUIC: .ASCII /[1,1]/ FILEN: .ASCII /LOGGER.DAT;1/ .EVEN .MOLUN::.BLKW 1 .END LOGGER