/*** TSS/8 WATCH *** VERSION 7 ***\ / / BY JOHN YOUNG [NHHS] / / WATCH IS A PROGRAM WHICH KEEPS / TRACK OF ALL ACTIVITY ON THE SYSTEM / AT USER LEVEL. / / IT TYPES OUT EACH TIME A USER / LEAVES ONE PROGRAM TO ANOTHER, / THE JNN, [P,PN], KNN, PROGRAM / COMMING FROM, AND PROGRAM GOING TO / AND THE TIME-OF-DAY THAT IT OCCURED. / AN EXTENDED FEATURE OF FREE DISK / STATUS EVERY 5 MINUTES WAS ALSO / IMPLEMENTED. / / / *0000 CLA CLL TAD RESTRT SRA UND JMP I .+1 INIT *0010 AUX1, 0 AUX2, 0 *0020 RESTRT, .+1 CLA TAD MSG3 PRINT CRLF CMA CLOS CRLF HLT / SPECIAL DEFINITIONS PEEK= 6423 / SUBROUTINE DISPATCHES TODAY= JMS I . TODAY0 CRLF= JMS I . CRLF0 PUTNUM= JMS I . NUMOUT PRINT= JMS I . PRINT0 PUTPRG= JMS I . PRGRM SETPNT= JMS I . SETEM PUTTIM= JMS I . TIME TYPE= JMS . 0 TLS CLA JMP I .-3 SPACE= JMS . 0 TAD P240 TLS TYPE JMP I .-4 PKBLK, .+1 10 /MONITOR FIELD #1 3274 AAAAAA -61 RNPNT, NUMHO-1 NUMPNT, NUMHO JOB, 0 NUMHO, 0 0 0 /TIME STACKS FOR TSS/8.24 (10 TICKS PER SECOND) /DOUBLE PRECISION WORDS...HIGH ORDER BITS HIORD, 7650 /-TICKS PER 10 HRS 7767 /-TICKS PER 1 HR 7776 /-TICKS PER 10 MINS 7777 /-TICKS PER 1 MIN 7777 /-TICKS PER 10 SECS 7777 /-TICKS PER 1 SEC /DOUBLE PRECISION WORDS...LOW ORDER BITS LOORD, 0700 /-TICKS PER 10 HRS 1540 /-TICKS PER 1 HR 4220 /-TICKS PER 10 MINS 6650 /-TICKS PER 1 MIN 7634 /-TICKS PER 10 SECS 7765 /-TICKS PER 1 SEC ACOUNT, 0 BUFF1, AAAAAA BUFF2, AAAAAA+100 COLN, ": COUNT1, 0 DASHES, 1515 DSKCNT, 0 JOBCNT, 0 MSG1, MG1-1 MSG2, MG2-1 MSG3, MG3-1 MSG4, MG4-1 MSG5, MG5-1 MSG6, MG6-1 NUM, 0 POINT1, 0 POINT2, 0 TMP0, 0 TMP1, 0 N454, -454 N61, -61 N20, -20 N10, -10 N4, -4 N3, -3 P7700, 7700 P260, "0 P240, " P215, 215 P100, 100 P77, 77 SLH, "/ P7, 7 *0200 /MAIN LINE OF PROGRAM INIT, CRLF TAD MSG1 PRINT TODAY CRLF CRLF TAD MSG2 PRINT CRLF CRLF CMA DCA DSKCNT JMP SYSLOP DSKLOP, TAD N454 /300 DECIMAL SECONDS (5 MINS.) DCA DSKCNT SYSLOP, DCA JOB TAD N20 /20 JOBS ON SYSTEM DCA JOBCNT IAC STM /WAIT ONE SECOND, SO WE DON'T GRIND TAD N61 /LENGTH OF PRGTBL+1 DCA COUNT1 TAD BUFF1 DCA AUX1 TAD BUFF2 DCA AUX2 TAD I AUX1 DCA I AUX2 /PUT BUFF1 INTO BUFF2 ISZ COUNT1 JMP .-3 TAD PKBLK PEEK /GET UPDATED PRGTBL JOBLOP, ISZ JOB SETPNT TAD JOB ACT SNA JMP DASPUT DCA ACOUNT CMA CLL RTL DCA COUNT1 TAD POINT1 DCA AUX1 TAD POINT2 DCA AUX2 CHKLOP, TAD I AUX1 /CHECK IF THIS JOB IS RUNNING CIA /A DIFFERENT PROGRAM TAD I AUX2 /IF HE IS, TELL THE USER THAT SZA CLA /HE HAS CHANGED, OTHERWISE JMP DIFPRG /CHECK THE REST OF THE SYSTEM ISZ COUNT1 JMP CHKLOP JMP NODIFF DIFPRG, SPACE TAD JOB AND P77 PUTNUM /JNN S 2 SPACE TAD ACOUNT RTR RTR RTR AND P77 PUTNUM /PROJECT # S 2 TAD MSG4 PRINT /"," TAD ACOUNT AND P77 PUTNUM /PROGRAMMER # S 2 SPACE TAD JOB CON SZA JMP .+4 TAD MSG6 PRINT /"CTY" JMP CTY PUTNUM /TTY # S 3 CTY, SPACE TAD POINT2 PUTPRG /PROGRAM COMMING FROM SPACE TAD POINT1 PUTPRG /PROGRAM GOING TO SPACE TAD RNPNT URT PUTTIM /USER RUNTIME SPACE TAD NUMPNT TOD PUTTIM /TIME-OF-DAY CRLF /EOL NODIFF, ISZ JOBCNT /HAVE WE DONE 20 JOBS? JMP JOBLOP ISZ DSKCNT /HAVE WE WAITED 5 MINUTES? JMP SYSLOP SEGS PUTNUM /AMOUNT OF FREE DISK S D 3 TAD MSG5 PRINT /" FREE DISK SEGMENTS AT " TAD NUMPNT TOD PUTTIM /TIME-OF-DAY CRLF /EOL JMP DSKLOP DASPUT, CMA CLL RTL DCA COUNT1 TAD POINT1 DCA AUX1 TAD DASHES DCA I AUX1 ISZ COUNT1 JMP .-3 JMP NODIFF *0400 /PUT 6 CHARS PACKED IN SIXBIT, OUT TO TTY;ADDRESS /IS IN THE AC OF THE CHARS-1 PRGRM, 0 DCA AUX1 CMA CLL RTL DCA COUNT1 PRGLOP, TAD I AUX1 DCA TMP0 TAD TMP0 RTR RTR RTR JMS PRGOUT TAD TMP0 JMS PRGOUT ISZ COUNT1 JMP PRGLOP JMP I PRGRM PRGOUT, 0 AND P77 TAD P240 TYPE JMP I PRGOUT /PAL-TEXT SIXBIT OUTPUT ROUTINE PRINT0, 0 DCA AUX1 TAD I AUX1 DCA TMP0 TAD TMP0 RTR RTR RTR JMS PRIOUT TAD TMP0 JMS PRIOUT JMP PRINT0+2 PRIOUT, 0 AND P77 SNA JMP I PRINT0 DCA TMP1 TAD TMP1 AND P240 SNA CLA TAD P100 TAD TMP1 TYPE JMP I PRIOUT /SET UP POINTERS TO PROGRAMS IN BUFFERS 1 AND 2 /ACCORDING TO THE JOB # WE ARE WORKING ON. SETEM, 0 TAD JOB CIA DCA COUNT1 TAD BUFF1 DCA POINT1 SETLOP, ISZ COUNT1 SKP JMP SET2 STL IAC RAL TAD POINT1 DCA POINT1 JMP SETLOP SET2, TAD BUFF1 CIA TAD POINT1 TAD BUFF2 DCA POINT2 JMP I SETEM CRLF0, 0 CLA TAD P215 TLS TAD N3 TYPE JMP I CRLF0 /ROUTINE TO CONVERT TIME STORED IN NUMHO AND NUMHO+1 /AND TO OUTPUT THEM TO THE TTY /AS HH:MM:SS TIME, 0 TAD PTABX DCA PTIMX TAD PTABX1 DCA PTIMX1 TAD PTFORM DCA PTCONT PTLOOP, TAD P260 DCA NUM CLL TAD NUMHO+1 PTIMX, NOP DCA NUMHO+2 RAL TAD NUMHO PTIMX1, NOP SNL JMP PTIMA DCA NUMHO TAD NUMHO+2 DCA NUMHO+1 ISZ NUM JMP PTLOOP+2 PTIMA, ISZ PTIMX ISZ PTIMX1 CLA TAD NUM TYPE TAD PTCONT SNA JMP I TIME CLL RAL DCA PTCONT SZL JMP PTLOOP TAD COLN TYPE JMP PTLOOP PTABX, TAD LOORD PTABX1, TAD HIORD PTCONT, 0 PTFORM, 5200 *0600 /COMBINATION OCTAL-DECIMAL OUTPUT ROUTINE /ENTER: TAD VALUE / JMS NUMOUT / S D 3 / RETURN / / /S MEANS TO SUPPRESS LEADING ZEROS /D MEANS TO OUTPUT IN DECIMAL /3 DIGITS TO OUTPUT, 1 TO 4 DIGITS / / S= 4000 D= 2000 AUX= 17 NUMOUT, 0 DCA NUM TAD I NUMOUT CLL RAL /OCTAL OR DECIMAL OUTPUT? SPA CLA TAD DECOCT /DECIMAL TAD OCTPNT /OCTAL DCA STKPNT /PUT IT IN STACK POINTER TAD P260 DCA DATA+1 TAD P260 DCA DATA+2 TAD P260 DCA DATA+3 TAD DATPNT DCA DATA /SET DATA POINTER CMA CLL RTL DCA COUNT /SET UP ISZ LOOP TAD NUM /GETETH OUT NUMBER NUMLOP, TAD I STKPNT /TAKE AWAY VALUE SPA JMP .+3 /IF NEG, CHANGE TO POWER-1 ISZ I DATA /TAKEN AWAY VAL, INCRE VALUE JMP NUMLOP /TAKE AWAY MORE DCA NUM /WE TOOK TOO MUCH TAD I STKPNT /ADD THAT VALUE BACK CIA TAD NUM ISZ DATA /INCRE DATA TO NEXT CHAR ISZ STKPNT /INCRE STKPNT TO NEXT VALUE ISZ COUNT /ARE WE DONE? JMP NUMLOP /NOPE, GOWAN BACK! TAD P4260 /THIS IS A ZERO, BUT IT IS DCA DATA+4 /NEGATIVE, INDICATES END OF STACK TAD I NUMOUT /ARE WE TO SUPPRESS SMA CLA /LEADING ZEROS? JMP NUMPUT /NO, GO OUTPUT TAD DATPNT DCA DATA CMA CLL RTL DCA COUNT NUMSUP, TAD P260 CIA TAD I DATA /IF THIS IS A ZERO SZA CLA /PUT A SPACE HERE JMP NUMPUT /IF NOT, DON'T SUPPRESS ANYMORE TAD P240 DCA I DATA ISZ DATA ISZ COUNT /IF THIS IS ALL ZERO NUMBER JMP NUMSUP /DON'T SUPPRESS THE LAST ONE NUMPUT, TAD I NUMOUT /FIGURE NUMBER AND P7 /OF CHARS TO OUTPUT CIA TAD OUTPNT DCA AUX TAD I AUX TLS SMA CLA JMP .-3 ISZ NUMOUT JMP I NUMOUT /HERE IS ALL THE DATA NEEDED FOR THE ROUTINE P4260, 4260 COUNT, 0 STKPNT, 0 DECOCT, DECSTK-OCTSTK OCTPNT, OCTSTK DECIMA DECSTK, -1000 /-1000 DECIMAL -100 /-100 DECIMAL -10 /-10 DECIMAL OCTAL OCTSTK, -1000 /-1000 OCTAL -100 /-100 OCTAL -10 /-10 OCTAL DATPNT, .+2 DATA, .+1 0 /THOUSANDS 0 /HUNDREDS 0 /TENS 0 /ONES+4000 OUTPNT, .-1 *1000 TODAY0, 0 CLA DATE JMS DATER TAD P240 TLS TYPE TAD NUMPNT TOD PUTTIM JMP I TODAY0 /ROUTINE TO UNPACK DATE WORD /DATE WORD MUST BE # OF DAYS /FROM 1/1/74 DATER, 0 DCA DATDAY /SAVE DATE WORD TAD DAT112 DCA DATYR /CALCULATE # OF YEARS DATE1, TAD DATDAY SMA CLA JMP DATE2 ISZ DATYR TAD DAT564 TAD DATDAY DCA DATDAY JMP DATE1 /NOW CALCULATE DAY OF MONTH DATE2, DCA DATMON TAD DATDAY TAD DAT37 SPA JMP .+4 ISZ DATMON DCA DATDAY JMP DATE2+1 CLA ISZ DATDAY /NOW HAVE DAY OF MONTH IN DATDAY DATE3, TAD DATMON TAD DAT14 SPA JMP .+4 ISZ DATYR DCA DATMON JMP DATE3 /NOW HAVE DAY IN DATDAY /YEAR IN DATYR /AND MONTH IN DATMON CLA IAC TAD DATMON PUTNUM S D 2 TAD SLASH TYPE TAD DATDAY PUTNUM S D 2 TAD SLASH TYPE TAD DATYR PUTNUM S D 2 JMP I DATER SLASH, "/ DATDAY, 0 /DAY DATMON, 0 /MONTH DATYR, 0 /YEAR DAT564, -564 /-372 DECIMAL DAT14, -14 /-12 DECIMAL DAT37, -37 /-31 DECIMAL DAT112, 112 /74 DECIMAL MG1, TEXT *WATCH V10 * MG2, TEXT * JOB P,PN TTY FROM TO RUNTIME DAYTIME* MG3, TEXT *^C* MG4, TEXT *,* MG5, TEXT * FREE DISK SEGMENTS AT * MG6, TEXT *CTY* AAAAAA= . TEXT *MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM* *.-1 TEXT *MMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM* $$$