File F1094.PA (PAL assembler source file)

Directory of image this file is from
This file as a plain text file

/TSS/8 EXTENDED SYSTAT	(VERSION 0005)
/
/BOB CURRIER	[ 0, 4]
/
/	****TSS/8 SYSTEM STATUS PROGRAM****
/

/THIS PROGRAM IS AN EXTENDED SYSTAT DESIGNED TO RUN
/ON A TSS/8 MONITOR. IN SPECIFIC IT HAS BEEN DESIGNED
/TO RUN ON THE 8.22B AT NMUSD DATA PROCESSX. THIS
/PROGRAM MAKES USE OF 'SWITCHES' OR OPTIONS TO ALLOW
/THE USER TO GET AT THE VARIOUS PARTS OF THE PROGRAM
/WITHOUT HAVING TO SEE IT ALL. THE SWITCHES ARE AS
/FOLLOWS:
/	?	TYPES OUT AN INSTRUCTION SET EXPLAINING
/		THE USE OF THIS PROGRAM
/	F	A QUICKIE SYSTAT THAT LISTS ONLY THE
/		BARE ESSENTIALS.
/	E	AN EXTENDED SYSTAT WHICH OUPUTS THE WORKS
/	B	THIS LISTS THE BUSY DEVICES, OUTPUTING THE
/		OWNING JOB, ACCT, CONSOLE, WETHER OR NOT
/		ITS ACTIVE AND THE TIME IT WAS ASSIGNED
/	D	TYPE OUT THE NUMBER OF AVAILABLE DISC
/		BLOCKS
/	C	TYPE OUT THE AMOUNT OF FREE CORE
/	U	TYPE OUT THE NUMBER OF USERS CURRENTLY LOGGED IN
/	T	OUTPUT THE USER RUNTIMES BY JOB NUMBER
/	I	INITIALIZE--THIS IS A PRIORITY COMMAND AVAILABLE
/		ONLY TO A USER LOGGED IN UNDER THE SYSTEM
/		LIBRARY ACCOUNT (0,2) IT ALLOWS THE SYSTEM
/		OPERATOR TO INPUT AN INSTRUCTION SET AND SET
/		UP POINTERS WHICH DEPEND UPON THE VERSION OF
/		MONITOR BEING RUN. THESE POINTERS
/		ARE STORED ON PAGE ZERO AND DOCUMENTATION
/		WILL BE FOUND THERE
/
/
/IN ADDITION TO THE ABOVE SWITCHES THERE ARE SECONDARY SWITCHES
/THAT ALLOW THE USER TO GET THE INFORMATION PERTAINING TO ONE
/JOB.
/
/ALL SWITCHES TAKE THE FORM:	:X
/
/THUS:		SYSTAT:F
/	WOULD GIVE YOU A QUICKIE SYSTAT
/AND:		SYSTAT:F:2
/	WOULD GIVE YOU A QUICKIE FOR JOB 2 ONLY
/
/NOTE:	IF NO SWITCH IS SPECIFIED AN EXTENDED SYSTAT IS GIVEN
/
/	AN ERROR MESSAGE IS GIVEN FOR NON-EXISTANT SWITCHES
/	OR IF A NORMAL USER TRYS THE :I SWITCH
/
/	IF A USER SPECIFIES A SECOND SWITCH FOR A ROUTINE
/	THAT ONLY TAKES ONE, THE SECOND SWITCH IS IGNORED
/


/ /PAGE 0 / / /AUTO INDEX REGISTERS / *0010 PRGPNT, 0 PRGPUT, 0 QUOPNT, 0 HALTP, HALT-1 C7770, 7770 / /ENTRY TO PROGRAM / *0000 JMP I .+1 0200 JMP I HALTP K7, 7 /HAD TO PUT IT SOMEWHERE K4400, 4400 K4403, 4403 K100, 100 K5, 5 *0020 CRLF=JMS I . CRLFB BSW=JMS I . BSWB PRGOUT=JMS I . PRGM PUTDATE=JMS I . DATER PUTNUM=JMS I . NUMBER PUTCHR=JMS I . ASCOUT PUTIME=JMS I . TIME0 SPACE=JMS I . BLANKS
/THESE ARE THE REGISTERS THAT MUST BE SET UP PRIOR /TO RUNNING. THE VALUES MAY BE TAKEN FROM THE SYMBOL TABLE /OF TS8II. THEY ARE CURRENTLY SET UP FOR THE 8.22B MONITOR /AT NMUSD. THEY MUST BE CHANGED TO RUN JOBTBL=3256 /LOCATION OF JOBTBL IN TS8II FRECNT, 47 /LOCATION OF FRECNT IN TS8 DEVTBL, 3200 /LOCATION OF DEVTBL IN TS8II DEVTBE, 3240 /LOCATION OF DEVTBE IN TS8II PRGTBL, 3341 /LOCATION OF PRGTBL IN TS8II JOBMAX, 20 /MAXIMUM JOB NUMBER (IN OCTAL)!!! TIMEUP, 173 /LOCATION OF UPTIM2 IN TS8II DECIMAL VERNUM=218 /THIS VERSION OF SYSTAT OCTAL
/ /GENERAL PURPOSE COUNTERS, POINTERS, VARS, AND CONSTANTS / CHRTMP, 0 /TEMP STORAGE CNTMP, 0 /GENERAL PURPOSE COUNTER CNTR, 0 /DITTO DDBPNT, 0 /USED AS POINTER TO DDB'S DEVACT, 0 /NUMBER OF ACTIVE DECICES DEVASS, 0 /NUMBER OF ASSIGNED DEVICES DEVPNT, 0 /POINTER DEVTIM, 0 /TIME AT ASSIGNMENT ISIT, 0 /SUBROUTINE STORAGE JOBCNT, 0 /USED TO COUNT OFF MAX # OF JOBS JOBHLD, 0 /TEMP STORAGE JOBNUM, 0 /USED TO HOLD JOB BEING SOUGHT JOBSPC, 0 /STORAGE FOR JOB SPECIFICATION K10, 10 /MOSTLY USED AS PEEK FIELD K17, 17 /MASK K77, 77 /6-BIT MASK K204, 204 /KEYBOARD BREAK MASK K212, 212 /ASCII <LINE FEED> K240, 240 /CONVERSION CONSTANT K260, 260 /DITTO K1000, 1000 K2000, 2000 K4777, 4777 K6773=K6777 /ITS THE ONLY # THAT WORKS! K6777, 6777 K7000, 7000 K7600, 7600 K7601, 7601 K7603, 7603 K7700, 7700 /6-BIT MASK M1, -1 M2, -2 M3, -3 M4, -4 /INITIALIZE ON ACCT 4 ALSO M10, -10 M17, -17 M40, -40 M60, -60 M260, -260 /CONVERSION CONSTANT M377, -377 /- ASCII <RUBOUT> M5000, -5000 OPTPNT, 0 /POINTER ROUTINE PRGCNT, 0 /COUNTER PT0260, 260 /CONVERSION CONSTANT PTCOLN, 272 /ASCII <:> PTCONT, 0 /TEMP STORAGE PTDIGI, 0 /DIGIT ASSEMBLY REGISTER TTYTIM, 0 /HAS TO BE ON PAGE ZERO / /BLOCK STORAGE / TIMEQ, 0 /HOLD THE JOB # FOR A URT NUMHO, 0 /IT MUST PRECEDE THIS LOCATION 0 /WHICH IS USED FOR DECODING 0 /THE TIME PEKBLK, .+1 /BLOCK FOR A PEEK FIELDR, 0 /FIELD TO LOOK AT MONADR, 0 /START OF MONITOR PEEK AREA BUFFER, 0 /START OF USER BUFFER WDCNT, 0 /2'S COMP OF WORDS FOR OPERATION
/ /THE FOLLOWING ARE BLOCKS USED IN THE DECODING /OF THE TIME / /THE HIGH ORDER BITS PTAB, 7520 /- NUMBER OF TICKS IN 10 HOURS 7756 /- NUMBER OF TICKS IN 1 HOUR 7775 /- NUMBER OF TICKS IN 10 MINUTES 7777 /- NUMBER OF TICKS IN 1 MINUTE 7777 /- NUMBER OF TICKS IN 10 SECONDS 7777 /- NUMBER OF TICKS IN 1 SECOND /THE LOW ORDER BITS PTAB1, 1600 /- NUMBER OF TICKS IN 10 HOURS 3300 /- NUMBER OF TICKS IN 1 HOUR 0440 /- NUMBER OF TICKS IN 10 MINUTES 5520 /- NUMBER OF TICKS IN 1 MINUTE 7470 /- NUMBER OF TICKS IN 10 SECONDS 7754 /- NUMBER OF TICKS IN 1 SECOND / /THE FOLLOWING BLOCKS ARE USED INSTEAD OF THE ABOVE /IF THE SYSTEM CLOCK IS A DC08 (I.E. THE CLOCK RATE IS /NOT 24 TICKS PER SECOND) THEY ARE IN THE SAME FORAMT /AS THE OTHERS /THE HIGH ORDER BITS DCTAB, 7637 7766 7776 7777 7777 7777
/THE LOW ORDER BITS DCTAB1, 2440 2520 3070 6554 7622 7765 / /THIS IS THE BUFFER AREA USED BY THE TIME ROUTINE / CHRBUF, 0 0 0 0 0 0 0 0 0
*200 CLA CLL UND /THE DUMMY JUST SITS THERE CLA CLL CML RAR /AC_4000 KSB /ANY CHARACTER CLA CLL IAC RAL /AC_0002 SRA /HALT ON ^C CRLF /MAKE IT NEAT CLA CLL DCA JOBSPC /CLEAR IT KSF /ANY OPTIONS? JMP EXTEND /NO--GIVE HIM A LONG ONE KRB /YES--WHAT IS IT? DCA CHRTMP /TUCK IT UNDER OUR BELTS FOR A WHILE TAD OPTION /START OF OPTION STACK DCA PRGPNT /AUTO INDEX TAD I PRGPNT /GET THAT VALUE SNA /IS IT 0? JMP ILLEGL /YES--HE BLEW IT TAD CHRTMP /NO--GET OUR OPTION SZA CLA /HAVE WE HIT IT? JMP .-5 /NO--TRY AGAIN MOROPT, KSF /YES--DID HE SPECIFY ANYTHING ELSE ? JMP DOIT /NO--GO DO IT TO SOMEONE KRB /GET THAT CHAR DCA STORER /HOLD THAT CHAR TAD STORER /GET IT AGAIN TAD M215 /-<CR> SNA CLA /WAS IT A <CR> JMP MOROPT /YES-- TAD STORER /NO--GET THE CHAR AGAIN TAD MCOLN /-<:> SNA CLA /WAS IT A <COLON> JMP MOROPT /YES--IGNORE IT JMS ASTER TAD JOBSPC /SET UP FOR PACKING CLL RTL CLL RAL DCA JOBSPC TAD STORER /NO--TRY AGAIN TAD M260 /CONVERT SPA /WAS IT <260? JMP ILLEGL /YES-- TAD M10 /TRY AGAIN SMA /WAS IT >270? JMP ILLEGL /YES-- TAD K10 /NO--PUT IT BACK TOGETHER TAD JOBSPC /GET THE REST OF IT. DCA JOBSPC /STICK IT AWAY JMP MOROPT /TRY FOR MORE
/ /A LIST OF THE LEGAL OPTIONS / OPTION, . -"? -"B -"D -"E -"F -"C -"U -"I -"T -"A -"Q 0 0 0 0 / /POINTERS TO THE ROUTINES /THESE CORRESPOND DIRECTLY TO /THE OPTION STACK / PNTSTK, . INSTR BUSY DISC EXTEND FAST FRECOR NUMUSE INIT RUNTIM AMOUNT QUEUE 0 0 0 0
/ /ROUTINE TO JUMP TO THE RIGHT SPOT / DOIT, TAD OPTION CIA TAD PRGPNT TAD PNTSTK DCA OPTPNT TAD I OPTPNT DCA OPTPNT JMP I OPTPNT STORER, 0 M215, -215 MCOLN, -"/
/BEGINNING OF THE REAL ROUTINES / / /ROUTINE TO CALCULATE AVAILABLE DISK AND /PRINT IT OUT / 0 DISC, DCA ISIT /REMEMBER IF ITS A SUBBER SEGS /GET THE SEG COUNT PUTNUM /PRINT IT S D 3 TAD AVDISC /MESSAGE PUTCHR /PRINT IT P 26 CRLF TAD ISIT /GET THE SUBBER WORD SZA CLA /IS THIS A SUBROUTINE ? JMP I DISC-1 /YES--EXIT GRACEFULLY JMP DSKSTA AVDISC, .+1 TEXT / AVAILABLE DISK BLOCKS/ PAGE
/ /ROUTINE TO OUTPUT AMOUNT OF FREE CORE / 0 FRECOR, DCA ISIT /SAVE THE WORD DCA FIELDR /PEEK AT FIELD 0 TAD FRECNT /MONITOR ADDR TO LOOK AT DCA MONADR TAD (FRECOU) /BUFFER DCA BUFFER STA /AC_7777 (-1) DCA WDCNT TAD PEKBLK 6423 TAD FRECOU /GET THE COUNT PUTNUM S D 3 TAD AVCOR PUTCHR P 12 CRLF TAD ISIT /SAME BIT AS LAST TIME SZA CLA JMP I FRECOR-1 CRLF JMP 2 FRECOU, 0 AVCOR, .+1 TEXT / FREE DDBS/
/ /ROUTINE TO CALCULATE THE NUMBER OF /USERS LOGGED ON, THIS ROUTINE EXCEPTS /A ACCOUNT NUMBER AS A SECOND OPTION /TO SEARCH FOR THE NUMBER OF USERS UNDER /THAT ACCT / 0 NUMUSE, DCA ISIT DCA JOBCNT /CLEAR IT TAD JOBMAX CIA DCA CNTR IAC DCA JOBNUM TAD JOBSPC /DID HE SPECIFY AN ACCT/ SZA CLA JMP NUMACT /YES--DO THAT THING TAD JOBNUM /NO--GET THE JOB NUMBER ACT /IS ANYONE LOGGED INTO IT SNA CLA SKP ISZ JOBCNT /YES--ADVANCE JOB COUNTER ISZ JOBNUM /INCREMENT THE JOB NUMBER ISZ CNTR /INCREMENT THE COUNTER JMP .-7 /NOT DONE--TRY AGAIN TAD JOBCNT /ALL DONE--GRAB THAT NUMBER PUTNUM S D 2 TAD NUMMES PUTCHR P 17 CRLF TAD ISIT SZA CLA JMP I NUMUSE-1 CRLF JMP 2 / /THIS PART OF THE ROUTINE IS USED TO CALCULATE THE /NUMBER OF USER UNDER A SPECIFIED ACCOUT / NUMACT, TAD JOBSPC CIA /GET THE - ACCT # DCA JOBSPC /STORE IT NUMR2, TAD JOBNUM ACT /GET THE ACCT # SNA /IS ANY ONE LOGGED IN ? JMP .+5 /NO-- TAD JOBSPC /YES--ADD OUR -ACCT# SZA CLA /IS IT RIGHT? SKP /NO-- ISZ JOBCNT /YES-- ISZ JOBNUM ISZ CNTR JMP NUMR2 TAD JOBCNT PUTNUM S D 2 TAD NUMMES PUTCHR P 20 TAD ACTMES PUTCHR P 17 TAD JOBSPC CIA JMS ACT0 CRLF TAD ISIT SZA CLA JMS I NUMUSE-1 CRLF JMP 2 NUMMES, .+1 TEXT / JOBS LOGGED IN/ ACTMES, .+1 TEXT / UNDER ACCOUNT / PAGE
/ /PAGE OF VARIOUS ROUTINES / / /ROUTINE FOR ILLEGAL COMMANDS / ILLEGL, CLA CLL CRLF TAD ILLMES PUTCHR P 26 CRLF CRLF JMP 2 ILLMES, .+1 TEXT \TYPE SYSTAT/? FOR HELP\
/ /CRLF ROUTINE / /CALL: CRLF / CRLFB, 0 CLA CLL TAD CRLFMS PUTCHR 2 JMP I CRLFB CRLFMS, .+1 215;212
/ /BYTE SWAP ROUTINE / /CALL: BSW / BSWB, 0 DCA STORE3 TAD STORE3 AND K77 CLL RTL CLL RTL CLL RTL DCA STORE4 TAD STORE3 AND K7700 CLL RTR CLL RTR CLL RTR TAD STORE4 JMP I BSWB STORE3, 0 STORE4, 0
/ /ROUTINE TO OUTPUT SPACES / /CALL: SPACES / (NUMBER OF SPACES TO BE OUTPUT) / BLANKS, 0 CLA CLL TAD I BLANKS /GET NUMBER WANTED TAD (P) /THEY'RE PACKED DCA BLKCNT /STORE IT TAD SPACES PUTCHR BLKCNT, 0 ISZ BLANKS /SIMULATE SKIP JMP I BLANKS /JUMP BACK /
/ROUTINE TO LOOK UP THE PROGRAM THAT /THE JOB IN THE AC IS RUNNING / PRGM, 0 DCA JOBHLD /STORE THE JOB # TAD JOBHLD ACT TAD M100 /THE MAGIC ACCT. SNA CLA /IS IT ACCT 100? JMP SYSPRG /YES--MUST BE A 'SYSTAT' TAD JOBHLD TAD M1 DCA JOBHLD /HOLD THE JOB #-1 FOR A WHILE TAD K10 /FIELD 1 DCA FIELDR TAD PRGTBL /START OF PRGTBL DCA MONADR TAD K6777 /START OF BUFFER DCA BUFFER TAD M60 DCA WDCNT TAD PEKBLK 6423 TAD JOBHLD /GET THE JOB-1 CLL RAL TAD JOBHLD /NOW WE HAVE 3*(JOB-1) TAD K6773 /CONVERT TO ABSOLUTE PUTCHR P T 6 /PACKED IN TSS/8 FORMAT JMP I PRGM SYSPRG, TAD SYSNAM JMP .-4 SYSNAM, .+1 6371 /SY 6364 /ST 4164 /AT
/ /HALT ROUTINE / HALT, ACT /COMES HERE ON ^C OR ANY HALT TAD M100 /MAGIC ACCT # SZA CLA /IS IT THAT MAGIC #??? HLT /NO--JUST HALT TAD HLTMS1 /YES--NOT REALLY LOGGED IN-- PUTCHR /FAKE A ^BS AND .KJOB 0015 USE 6615 /AND LOGOUT! HLTMS1, .+1 "^;"B;"S;215;212;".;"K;"J;"O;"B;215;212;". PAGE
/ /THIS ROUTINE IS DEDICATED TO THE IDEAL THAT /FAST IS BAST (SIC). THIS IS THE QUICKIE SYSTAT /THAT EVERYONE SEEMS TO WANT, SO.....WE GIVE IT TO /THEM. (PREFREBLY SIDEWAYS DOWN THE THROAT) / FAST, CLA CLL TAD JOBSPC /DOES HE ONLY WANT ONE? SZA CLA JMP FAST2 /YES-- TAD SYSTAF JMP .+10 /CHANGE TO 'PUTCHR' TO INCLUDE HEADING P 15 CRLF CRLF TAD SYSTF2 PUTCHR P 31 CRLF CRLF TAD JOBMAX CIA DCA JOBCNT IAC DCA JOBNUM /I'VE ALREADY EXPLAINED ALL THAT FAST3, TAD JOBNUM /GET THE JOB ACT /DOES HE EXIST? SNA CLA JMP FAST4 /NO--GO OFF AND SULK FOR A WHILE TAD K240 /<SPACE> PUTCHR 1 TAD JOBNUM PUTNUM S 2 SPACE /MAKE A NEAT PRINTOUT 3 TAD ("K) PUTCHR 1 TAD JOBNUM CON /GET HIS CONSOLE PUTNUM 2 SPACE 3 TAD JOBNUM PRGOUT SPACE 2 TAD JOBNUM JMS ACTOUT CRLF FAST4, ISZ JOBNUM ISZ JOBCNT JMP FAST3 CRLF JMP 2
/ /THIS TINY THING SETS UP THE POINTER /TO LOOK FOR A CERTAIN JOB #. IT SETS THE /JOB COUNTER TO -1 TO GET ONLY ONE / FAST2, TAD JOBSPC ACT SNA CLA /DOES HE EXIST JMP NOJOB /NO-- TAD JOBSPC /GET THE NUMBER DCA JOBNUM STA /AC_7777 (-1) DCA JOBCNT /TOLD YOU I'D DO THAT JMP FAST3
SYSTAF, .+1 TEXT /SYSTEM STATUS/ SYSTF2, .+1 TEXT /JOB CON PRG P,PN/ SPACES, .+1 TEXT / / EXTOP2, .+1 TEXT / STATE ELAPSED DISK/ NOJOBM, .+1 TEXT / NOT IN USE/ PAGE
/ /THIS IS A ROUTINE TO OUTPUT THE USER RUN TIMES /BY JOB NUMBER. THIS ROUTINE ALLOWS THE USE OF A /SWITCH TO GET THE RUNTIME OF A SPECIFIC JOB / RUNTIM, TAD JOBSPC SZA JMP TIMONE TAD JOBMAX CIA DCA CNTR IAC DCA JOBNUM /I'VE ALREADY DOCUMENTED ALL THAT TAD TIMMS PUTCHR P 15 CRLF CRLF RUNLOP, TAD JOBNUM /GET THE JOB NUMBER DCA TIMEQ /DEPOSIT IT IN THE URT BLOCK TAD JOBNUM /NOW WE BELATEDLY CHECK TO SEE IF THIS ACT /EVEN EXISTS SNA CLA JMP JOBINC TAD JOBNUM /GRAB THE JOB # AGAIN PUTNUM /OUTPUT IT S 2 SPACE /MAKE A FANCY OUTPUT AS USUAL 3 TAD [TIMEQ] /SET UP FOR URT URT /NOW WE DO IT! PUTIME /OUPUT IT CRLF /MAKE IT NEAT JOBINC, ISZ JOBNUM /INCREMENT THE JOB # ISZ CNTR /ARE WE DONE? JMP RUNLOP /NO-- CRLF /YES-- JMP 2
/ /THE NEXT THING IS THE ROUTINE TO HANDLE THE SWITCH FOR /A SINGLE JOB / TIMONE, TAD JOBSPC /CHECK IF REAL JOB ACT SNA CLA JMP NOJOB TAD JOBSPC /IT'S OK DCA JOBNUM /MAKE IT LOOK LIKE LAST JOB STA DCA CNTR JMP RUNLOP TIMMS, .+1 TEXT /JOB RUNTIME/
/ /THE FOLLOWING STUFF IS JUNK FROM THE /BUSY DEVICE ROUTINE, PUT HERE TO GET IT OUT OF THE /WAY. / BUSH2, .+1 TEXT /BUSY DEVICES:/ BUSHED, .+1 TEXT /DEV P,PN CON JOB WHY ELAPSED TIME/ / /THIS IS THE ROUTINE TO PRINT THE ABOVE /HEADING / BHEAD, 0 TAD BUSH2 PUTCHR P 15 CRLF TAD BUSHED PUTCHR P 57 CRLF CRLF JMP I BHEAD
/ /THIS IS A ROUTINE TO OUTPUT THE ACCOUNT NUMBER OF THE JOB IN THE AC. /IT CHECKS FOR ACCT 100, [NRFS], FAILSA AND OUTPUTS THE CORRECT /MESSAGE. IN THE FUTURE IT MAY ALSO TYPE SELF FOR THE USERS OWN /ACCOUNT SINCE WE ASSUME HE REMEMBERS WHAT PPN HE LOGGED IN /UNDER. / ACTOUT, 0 DCA JOBS2 TAD JOBS2 ACT TAD M100 SNA CLA /IS IT ACCT 100? JMP ACT1 /YES--TYPE **,** FOR ACCT TAD JOBS2 /NO--TYPE IT FOR REAL ACT BSW AND K77 PUTNUM S 2 TAD (", PUTCHR 0001 TAD JOBS2 ACT AND K77 PUTNUM S 2 JMP I ACTOUT ACT1, TAD ACTM3 /NOT REALLY LOGGED IN [ACCT 100] PUTCHR /**,** P 5 JMP I ACTOUT ACTM3, .+1 TEXT /**,**/ JOBS2, 0 PAGE
/ /THIS ROUTINE PRINTS OUT THE DEVICES /THAT ARE ASSIGNED TO JOBS OR ARE /"BUSY" / 0 BUSY, DCA ISIT TAD K10 /FIELD 1 DCA FIELDR TAD DEVTBE /START OF THE DEVTBE DCA MONADR TAD K7000 /BUFFER AREA DCA BUFFER TAD (-20) /READ 20 WORDS DCA WDCNT TAD PEKBLK 6423 DCA DEVACT /CLEAR THESE DCA DEVASS TAD K7000 DCA DEVPNT /POINTER TO THE DEVTBE BUSLOP, TAD I DEVPNT SNA /IS IT ASSIGNED? JMP BUSINC /NO-- DCA DDBPNT /YES--STORE THE POINTER TAD K10 /FIELD 1 AGAIN DCA FIELDR TAD DDBPNT /GET THE DDB DCA MONADR TAD K7600 DCA BUFFER TAD M10 /READ 10 WORDS DCA WDCNT TAD PEKBLK 6423 TAD I K7601 /GET THE SECOND WORD AND K17 /MASK THE JOB # DCA JOBNUM /STORE IT TAD JOBNUM TAD M17 /IS IT JOB 17....NON-EXISTANT DEVICE? SNA CLA /WELL IS IT??? JMP BUSINC /YES--WE DONT WANT TO TOUCH IT TAD JOBSPC /IS HE INTERESTED IN ONE ONLY SNA JMP .+5 /NO-- CIA TAD JOBNUM /YES--IS THIS A GOOD ONE? SZA CLA JMP BUSINC /NO-- ISZ DEVASS /NO--INCREMENT THE ASSIGNMENT COUNTER JMS BHEAD /OUTPUT A HEADING TAD K7000 /A 'NOP' DCA .-2 /WE ONLY WANT ONE HEADING TAD I K7600 /GET THE FIRST WORD OF THE DDB AND K17 /MASK OUT THE DEVICE CODE CLL RAL /*2 TAD DEVLST /START OF DEVICE NAMES PUTCHR /OUTPUT DEVICE NAME 2 SPACE /GIVE HIM A CLEAN OUTPUT 3 TAD JOBNUM JMS ACTOUT SPACE 3 TAD ["K /K FOR KONSOLE PUTCHR 1 TAD JOBNUM CON /GET HIS KONSOLE PUTNUM 2 /2 PLACES W/ LEADING 0'S SPACE 3 TAD JOBNUM /NOW THE JOB # ITSELF PUTNUM S 2 SPACE 4 TAD DEVMS1 /"AS" PUTCHR P 2 TAD I K7600 /GET THE 1ST WORD AGAIN AND K2000 /MASK OFF THE INITIALIZATION BIT SNA CLA /IS IT INITIALIZED? JMP .+6 /NO-- ISZ DEVACT /INCREMENT THE ACTIVE DEVICE COUNTER TAD DEVMS2 /"+INIT" PUTCHR P 5 JMP .+3 SPACE /FILL THE SPACE WITH BLANKS 4 SPACE 5 TAD I K7603 /GET THE TIME WORD DCA TTYTIM JMS DUBSUB CRLF /CLOSE OUT THE LINE JMP BUSINC
/THIS IS A LEFTOVER QMES45, .+1 TEXT /NRFS INACTIVE/
/ /ROUTINE TO TELL THE USER THAT THE JOB HE SPECIFIED IS NON-EXISTANT / NOJOB, CLA CLL TAD I EXTOPL /CHEAT A BIT PUTCHR /"JOB " P 4 TAD JOBSPC /THE NON-EXISTANT JOB # PUTNUM S 2 TAD I NOJOBL /" NOT IN USE" PUTCHR P 13 CRLF JMP 2 EXTOPL, EXTOP NOJOBL, NOJOBM PAGE
/ /THIS IS SOME STUFF LEFT OVER FROM A PREVIOUS /PAGE / ASMS1, .+1 TEXT / DEVICES ASSIGNED/ ACTMS1, .+1 TEXT / DEVICES ACTIVE/ NOBUS, .+1 TEXT /NO BUSY DEVICES/ DEVMS1, .+1 TEXT /AS/ *.-1 DEVMS2, .+1 TEXT /+INIT/ NOBS, .+1 TEXT / FOR JOB / UFDMS1, .+1 TEXT / BLOCKS THIS PPN/ *.-1 QMES1, .+1 TEXT /DSK LOGGED OUT QUOTA THIS PPN / *.-1 QMES2, .+1 TEXT / EXCEEDED BY / BLKMS1,.+1 TEXT / BLOCKS/ NOQMS, .+1 TEXT /NO QUOTA THIS PPN/ / /THE FOLLOWING IS A LIST OF THE DEVICE NAMES THAT CAN BE ASSIGNED / DEVLST, .+1 "R;" "P;" "L;" "I;" "C;" "D;"0 "D;"1 "D;"2 "D;"3 "D;"4 "D;"5 "D;"6 "D;"7
/ /THIS ROUTINE IS USED TO UNPACK /THE TIME OF ASSIGNMENT / DECOD2, 0 DCA TTYTIM /STORE IT TAD TTYTIM /GRAB IT AND K7 /MASK IT CLL RTR; RTR /ROTATE IT DCA NUMHO+1 /STORE IT TAD TTYTIM /GET IT AND C7770 /DONT FORGET ME!! CLL RTR; RAR /ROTATE IT DCA NUMHO /CLUNK IT JMP I DECOD2 /GET THE HECK OUTA HERE PAGE
/ /ANOTHER PAGE OF LEFTOVERS / /THIS IS STUFF FROM THE BUSY DEVICE ROUTINE BUSDON, TAD ISIT SNA CLA /IS IT A SUB-ROUTINE? JMP .+5 /NO--JUMP FORWARD TAD BUSY-1 /YES--GET THE RETURN ADDR DCA .+2 /STORE AS A POINTER JMP I .+1 /EXIT THE SUB-ROUTINE /THE ABOVE ROTUINE WAS NECESARRY AS THE POINTER TO THE RETURN /IS ON ANOTHER PAGE, MAKING AN INDIRECT JUMP ILLEGAL. CRLF JMP 2 BUSINC, ISZ DEVPNT TAD I DEVPNT IAC SZA CLA JMP BUSLOP TAD DEVASS SZA CLA JMP .+17 TAD NOBUS PUTCHR P 17 TAD JOBSPC /AGAIN WE MUST SEE IF IT IS ONLY 1 SNA CLA JMP .+7 TAD NOBS PUTCHR P 11 TAD JOBSPC PUTNUM S 2 CRLF JMP BUSDON CRLF CRLF TAD DEVASS PUTNUM S D 2 TAD ASMS1 PUTCHR P 21 CRLF TAD DEVACT PUTNUM S D 2 TAD ACTMS1 PUTCHR P 17 CRLF CRLF JMP BUSDON
/ /ROUTINE TO OUTPUT THE DATE IN THE FORM.......... /..........DD-MMM-YY / /CALL: DATE / PUTDATE / DATER, 0 DCA DATDAY DCA DATYR DATE1, TAD DATDAY SMA CLA JMP DATE2 ISZ DATYR TAD DATDAY TAD (-564) DCA DATDAY JMP DATE1 DATE2, DCA DATMON /CALCULATE DAY TAD DATDAY TAD (-37) /-31 OCTAL SPA JMP .+4 ISZ DATMON DCA DATDAY JMP .-6 CLA ISZ DATDAY /NOW WE HAVE THE DAY IN DATDAY /YEAR*12+MONTH IN DATMON TAD DATYR TAD (100) /64 DECIMAL DCA DATYR DATE3, TAD DATMON TAD (-14) /-12 DECIMAL SPA JMP .+4 ISZ DATYR DCA DATMON JMP DATE3 CLA TAD DATDAY PUTNUM S D 2 TAD ("- PUTCHR 1 TAD DATMON CLL RAL TAD DATMON /MONTH*3 TAD (MONTHS) PUTCHR 0003 TAD ("- PUTCHR 0001 TAD DATYR PUTNUM S D 2 JMP I DATER DATDAY, 0 DATMON, 0 DATYR, 0 PAGE
/ /THIS IS IT!! THE CLIMAX OF THE WHOLE PROGRAM!! / THE EXTENDED SYSTAT / / /THIS IS THE PART THAT LIST OUT EVERYTHING, SO HAVE FUN / EXTEND, CLA CLL TAD JOBSPC SNA JMP EXT0 DCA JOBNUM STA DCA CNTR TAD JOBNUM ACT SNA CLA JMP NOJOB /JUST IN CASE OUR JOB DOES NOT EXIST JMP EXT1 EXT0, JMS VERSIN /OUTPUT OUR VERSION NUMBER TAD JOBMAX CIA DCA CNTR IAC /NO JOB 0! DCA JOBNUM DCA JOBCNT TAD EXTHED /THE HEADING PUTCHR P 40 DATE PUTDATE TAD EXTAT /"AT" PUTCHR P 4 TAD [NUMHO] TOD PUTIME CRLF CRLF TAD EXTOP /THE TOP OF THE JOB LIST PUTCHR P 53 TAD EXTOP2 PUTCHR P 31 CRLF CRLF EXT1, TAD JOBNUM /GET THAT JOB NUMBER ACT /HIS ACCOUNT SNA CLA /DOES HE EXIST? JMP EXT2 /NO-- ISZ JOBCNT /YES--INCREMENT THE JOB COUNTER TAD JOBNUM PUTNUM S 2 SPACE 4 TAD ["K PUTCHR 1 /K FOR KONSOLE TAD JOBNUM CON PUTNUM 2 SPACE 2 TAD JOBNUM JMS ACTOUT /GET HIS ACCOUNT SPACE 3 TAD JOBNUM PRGOUT SPACE 3 TAD K10 DCA FIELDR /THIS GETS HIS MODE TAD DEVTBL DCA MONADR TAD K7600 DCA BUFFER TAD M40 DCA WDCNT TAD PEKBLK 6423 JMS MODE SPACE 3 TAD JOBNUM DCA TIMEQ TAD [TIMEQ] URT PUTIME JMS STATE CRLF JMP EXT2 ACTJOB, 0 JOBBLK, .+1 10 JOBTBL 7600 -20
/ /ROUTINE TO CHECK FOR ASTERSIK CONSTRUCTION / /THIS ROUTINE IS THE ONE TO HANDLE AN ASTERISK IN THE COMMAND STRING, /THIS CONSTRUCTION ALLOWS THE USER TO FIND INFORMATION PERTAINING /TO HIS JOB AND PPN WITHOUT NECESARILY KNOWING WHAT THEY ARE. /IN ORDER FOR US TO DO THIS WE MUST FIND OUT IF HE WANTS HIS /PPN (A,U) OR HIS JOB NUMBER (ALL THE REST), WE DO THIS BY CHECKING /THE CONTENTS OF CHRTMP. / ASTER, 0 TAD STORER TAD MSTAR SZA CLA JMP I ASTER TAD CHRTMP TAD M301 SZA CLA JMP .+4 ACT DCA JOBSPC JMP DOIT TAD CHRTMP TAD MU SNA CLA JMP .-6 USE DCA JOBSPC JMP DOIT MSTAR, -"* M301, -"A MU, -"U
PAGE EXT2, ISZ JOBNUM ISZ CNTR /ARE WE DONE? JMP EXT1 /NO-- TAD JOBSPC SZA CLA JMP 2 CRLF /YES-- TAD JOBCNT /NUMBER OF JOBS LOGGED IN PUTNUM S D 2 TAD LMES1 PUTCHR P 14 CRLF TAD ACTJOB /# OF ACTIVE JOBS PUTNUM S D 2 TAD ACTJMS PUTCHR P 14 CRLF TAD DETJOB SNA JMP .+6 PUTNUM S D 2 TAD DETJMS PUTCHR P 16 CRLF TAD JOBCNT /AGAIN RTL CLL /# OF JOBS *4 CIA TAD K10 SPA JMP EXT4 PUTNUM S D 2 TAD EXTMS1 PUTCHR P 20 CRLF JMP EXT3 / /THE ABOVE PRINTED OUT THE AVAILBLE CORE IN K / /EXT4 WILL PRINT OUT THE AMOUNT THE AVAILABLE CORE /HAS BEEN EXCEEDED BY IN K IF SUCH IS THE CASE / EXT4, DCA JOBNUM TAD NOCOR PUTCHR P 21 TAD JOBNUM CIA PUTNUM S D 2 TAD ["K PUTCHR 1 CRLF EXT3, TAD EXTMS2 /NOW WE OUTPUT THE UPTIME PUTCHR P 42 TAD K10 DCA FIELDR TAD TIMEUP DCA MONADR TAD [NUMHO] DCA BUFFER CLA CLL CMA RAL /AC_-2 DCA WDCNT TAD PEKBLK 6423 JMS UPTIM CRLF IAC /BEFORE USING ANY OF THE SUBROUTINES /WE MUST PUT A 1 IN THE AC TO TELL THE ROUTINE THAT /IT IS INDEED A SUBROUTINE JMS DISC-1 IAC JMS FRECOR-1 CRLF IAC JMS BUSY-1 CRLF STA JMS QUEUE-1 CRLF JMP 2 /WE'RE DONE!!!!! !
/ /THIS IS SOME STUFF FROM THE DSKSTAT ROUTINE / OPNBLK, .+1 0 1 WHOLOC, 0 0 0 RFBLK, .+1 0 0 -3400 4377 0 RERR, 0 QUOTFL, .+1 1 2 6165 5764 4100 FILRED, .+1 0 1 -250 4377 0 FILERR, 0 PAGE / /THIS IS A PAGE OF MESSAGES / EXTHED, .+1 TEXT \STATUS OF NEWPORT-MESA TSS/8 ON \ *.-1 EXTAT, .+1 TEXT / AT / *.-1 EXTOP, .+1 TEXT /JOB CON P,PN PRG MODE RUN TIME/ EXTSI, .+1 TEXT /SI / *.-1 EXTRUN, .+1 TEXT /RUN / *.-1 EXTMS1, .+1 TEXT /K AVAILABLE CORE/ *.-1 NOCOR, .+1 TEXT /CORE EXCEEDED BY / EXTMS2, .+1 TEXT /TIME SINCE LAST SYSTEM RESTART IS / *.-1 ACTJMS, .+1 TEXT / JOBS ACTIVE/ *.-1 MONTHS, "J;"A;"N "F;"E;"B "M;"A;"R "A;"P;"R "M;"A;"Y "J;"U;"N "J;"U;"L "A;"U;"G "S;"E;"P "O;"C;"T "N;"O;"V "D;"E;"C
PAGE / /THIS IS THE INITIALIZING ROUTINE USED TO INPUT THE /INSTRUCTION MESSAGE / INIT, CLA CLL ACT TAD M3 /ARE ON ACCOUNT 3? SZA CLA JMP ILLEGL /NO-- TAD (INIT2) /YES--O.K. SRA TAD K204 KSB TAD K4777 DCA KSRLOC DCA KSRCNT TAD INITM1 PUTCHR P 52 CRLF CRLF DUP INIT3, TAD KSRBLK KSR TAD I KSRLOC /GET THE LAST CHAR TAD M377 /WAS IT A RUBOUT? SZA CLA JMP INIT5 /NO-- STA /YES--BACK UP TO LAST CHAR TAD KSRLOC DCA KSRLOC TAD I KSRLOC TLS /ECHO RUBBED-OUT CHAR CLA STA /BACK UP TO WIPE IT OUT TAD KSRLOC DCA KSRLOC JMP INIT3 INIT5, TAD K212 /MUST BE A TERMINATOR TLS /PRINT LINE FEED ISZ KSRLOC DCA I KSRLOC /STORE LINE FEED JMP INIT3 /GO BACK FOR MORE / /COME HERE ON A ^C / INIT2, ISZ KSRLOC /INCREMENT POINTER TAD KSRLOC TAD M5000 /CNVERT TO # OF CHARS INPUT CIA /NEGATE FOR SAS DCA INSTCT /STORE IN COUNT WORD OF INSTR CRLF CRLF TAD INITM2 PUTCHR P 42 CRLF CRLF HLT KSRBLK, .+1 KSRCNT, 0 KSRLOC, 0
/ /ROUTINE TO OUPUT INSTRUCTIONS / INSTR, CLA CLL JMS VERSIN TAD K4777 DCA SASBLK+2 TAD SASBLK SAS JMP .-2 JMP 2 SASBLK, .+1 INSTCT, 0 0 / /MESSAGES / INITM1, .+1 TEXT /ENTER INTRUCTIONS HERE--END WITH CONTROL C/ INITM2, .+1 TEXT /SAVE PROGRAM IMMEDIATLY AFTER HALT/ DETJMS, .+1 TEXT / JOBS DETACHED/
PAGE / /UTILITY ROUTINES / /THESE ARE ROUTINES THAT HAVE NOTHING TO /DO WITH THE ACTUAL OPERATION OF THE PRO- /GRAM BUT ARE NEEDED ANYWAY / / /CHARACTER TYPING ROUTINE / /CALL: TAD (ADDR OF FIRST CHAR / PUTCHR / (NUMBER OF CHRS TO BE OUTPUT / /THE WORD COUNT WORD ALSO SETS UP THE FOLLOWING /PARAMETERS: / / BIT 0 IS SET IF CHARS ARE PACKED / BIT 1 IS SET IF THEY ARE PACKED IN TSS/8 / INTERNAL CODE (EXCESS 40) / /NOTE: IF ONLY ONE CHAR IS SPECIFIED / IT IS ASSUMED TO BE IN THE AC / P=4000 T=2000 ASCOUT, 0 DCA CHRPTR /STORE THE POINTER TAD I ASCOUT STA /AC_7777 (-1) TAD I ASCOUT /GET THE WORD COUNT SZA CLA /IS THE CHAR COUNT >1? JMP .+6 /YEC-- TAD CHRPTR /NO--CHAR MUST BE IN AC TLS CLA ISZ ASCOUT /SIMULATE SKIP JMP I ASCOUT /JUMP OUT TAD I ASCOUT /GET THE WORD COUNT AND K77 /DUMP THE SPECIFICATION BITS CIA /NEGATE DCA OUTCNT /STORE AS COUNTER TAD I ASCOUT /CHECK THE TYPE OF CHARS SPA CLA /ARE THEY PACKED? JMP UNPACK /YES-- /COMES HERE IF THE CHARACTERS ARE ALREADY IN 8-BIT ASCII TAD I CHRPTR /GET THE CHARACTER TLS /PRINT IT CLA ISZ CHRPTR /INCREMENT ALL THE STUFF ISZ OUTCNT /ARE WE DONE? JMP .-5 /NO--DO SOME MORE OTCEXT, CLA ISZ ASCOUT /SIMULATE A SKIP JMP I ASCOUT /GET THE CONTROL H OUT OF HERE /COMES HERE IF THEY ARE PACKED /NOW FIND IF THEY ARE PACKED IN INTERNAL CODE UNPACK, TAD I ASCOUT RTL; CLA SZL TAD (40) DCA CONVRT NPCK1, TAD I CHRPTR RTR;RTR;RTR JMS EXPAND ISZ OUTCNT SKP JMP OTCEXT TAD I CHRPTR JMS EXPAND ISZ CHRPTR ISZ OUTCNT JMP NPCK1 JMP OTCEXT CONVRT, 0 EXPAND, 0 TAD CONVRT AND K77 DCA SIXBIT TAD SIXBIT AND (40) SNA CLA TAD (100) TAD (200) TAD SIXBIT TLS CLA JMP I EXPAND SIXBIT, 0 CHRPTR, 0 OUTCNT, 0
/ROUTINE TO COUNT DISK SEGS COUNTM, 0 DCA NAME4 TAD BLOC4 OPEN SZA JMP ERRX5 TAD M3400 DCA RF4C TAD (BUFFD-1 DCA RF4C+1 DCA RF4C+2 DCA RF4C+3 TAD RF4 RFILE DCA SEGCNT TAD I K6003 SNA JMP COUNTD TAD K6000 DCA UFDPNT COUNTS, TAD UFDPNT TAD K5 DCA CNTMP TAD I CNTMP TAD SEGCNT DCA SEGCNT TAD UFDPNT TAD K3 DCA CNTMP TAD I CNTMP SNA JMP COUNTD TAD K6000 DCA UFDPNT JMP COUNTS COUNTD, TAD SEGCNT PUTNUM S D 3 JMP I COUNTM K6000, BUFFD BLOC4, .+1 0 1 NAME4, 0 0 0 RF4, .+1 0 0 RF4C, -BUFFD BUFFD-1 0 0 M3400, -BUFFD K6003, BUFFD+3 PAGE
/ /THIS ROUTINE HELPS OUT THE TIME ROUTINE / /IN OREDER TO DECODE THE UPTIME (WHICH IS /IN SECONDS) WE MUST MAKE THE TIME ROUTINE /THINK THERE ARE 1 CLOCK TICKS IN A SECOND. /THE POOR THING DOESNT KNOW ANY DIFFERANT / UPTIM, 0 TAD [CHRBUF] DCA POINT TAD (TAD UTAB1) DCA PTIMX TAD (TAD UTAB) DCA PTIMX1 TAD UPTIM DCA TIME0 JMP PTLOOP-2 / /THE HIGH ORDER BITS / UTAB, 7767 /- SECONDS IN 10 HOURS 7777 /- SECONDS IN 1 HOUR 7777 /- SECONDS IN 10 MINUTES 7777 /- SECONDS IN 1 MINUTE 7777 /- SECONDS IN 10 SECONDS 7777 /- SECONDS IN 1 SECOND / /THE LOW ORDER BITS / UTAB1, 1540 /- SECONDS IN 10 HOURS 0760 /- SECONDS IN 1 HOUR 6650 /- SECONDS IN 10 MINUTES 7705 /- SECONDS IN 1 MINUTE 7766 /- SECONDS IN 10 SECONDS 7777 /- SECONDS IN ONE SECOND
/ /THIS ROUTINE DECODES THE DOUBLE PRECISION TIME IN NUMHO /AND NUMHO+1 (IN CLOCK TICKS) AND OUTPUTS IT IN THE FORM /........... HH:MM:SS / TIME0, 0 RCR /WE MUST DECIDE IF WE ARE RUNNING WITH /A CLOCK RATE OF 24, IF WE ARE NOT WE MUST CHANGE SOME /POINTERS TAD [-24] SNA CLA JMP TIME /IT'S OK. CLOCK RATE OF 24 TAD [TAD DCTAB1] DCA PTABX TAD [TAD DCTAB] DCA PTABX1 TIME, TAD [CHRBUF] /SET UP POINTER FOR OUTPUT DCA POINT TAD PTABX DCA PTIMX TAD PTABX1 DCA PTIMX1 TAD PTFORM DCA PTCONT PTLOOP, TAD PT0260 DCA PTDIGI 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 PTDIGI JMP PTIMX-2 PTIMA, ISZ PTIMX ISZ PTIMX1 CLA TAD PTDIGI DCA I POINT ISZ POINT TAD PTCONT SNA JMP OUTBUF RAL CLL DCA PTCONT SZL JMP PTLOOP TAD PTCOLN DCA I POINT ISZ POINT JMP PTLOOP PTABX, TAD PTAB1 PTABX1, TAD PTAB PTFORM, 5200 OUTBUF, TAD [CHRBUF] PUTCHR 10 JMP I TIME0 POINT, 0
/ /THIS ROUTINE TAKES THE TIME OF ASSIGNMENT /IN NUMHO AND NUMHO+1, COMPUTES THE ELAPSED /TIME USING THE CURRENT TOD, AND THEN REPLACES /IT IN NUMHO AND NUMHO+1. REMEMBER, /TIME OF ASSIGNMENT WAS PACKED!!! / DUBSUB, 0 TAD TTYTIM CIA DCA TTYTIM TAD (TODHLD) TOD TAD TODHLD+1 RTL RTL AND K7 DCA REL3 TAD TODHLD RTL RAL AND K7770 TAD REL3 TAD TTYTIM SMA /GONE THRU MIDNITE? TAD RELCON /YES--FUDGE IT JMS DECOD2 PUTIME JMP I DUBSUB TODHLD, 0 0 RELCON, -3500 K7770, 7770 REL3, 0
/ /SYSTAT VERSION OUTPUT ROUTINE / /THIS ROUTINE OUTPUTS THE CURRENT VERSION NUMBER OF THE SYSTAT THAT /IS BEING RUN, IT FINDS THAT VERSION NUMBER IN VERNUM, /WHICH SHOULD BE SET EQUAL TO A DECIMAL VERSION NUMBER ON PAGE /ZERO. / VERSIN, 0 TAD VERSMA /"SYSTAT V" PUTCHR P 10 TAD VERNM /THE VERSION WE'RE RUNNING UNDER PUTNUM S D 3 CRLF CRLF JMP I VERSIN VERSMA, .+1 TEXT /SYSTAT V/ *.-1 VERNM, VERNUM PAGE
/ /DSKSTAT ROUTINE / /THIS ROUTINE IS ACTUALLY PART OF THE DISC ROUTINE /BUT WAS ADDED SO LATE IN THE GAME THAT IT GOT /STUBK WAY DOWN HERE. THIS SECTION OUTPUTS THE AMOUNT /OF DISC UNDER THE USERS BELT AND REPORTS IF HE IS OVER /QUOTA OR NOT. THE QUOTA IS OBTAINED FROM FILE /<QUOTA> ON ACCT. 2 / DSKSTA, TAD (WHOLOC) WHO TAD OPNBLK OPEN SZA JMP 2 TAD RFBLK RFILE TAD RERR SZA CLA CLL /HOPEFULLY ITS ONLY A SHRT FILE ERROR DCA SEGCNT TAD I K4403 SNA JMP UFDONE TAD K4400 DCA UFDPNT SUM, TAD UFDPNT TAD K5 DCA UFDTMP TAD I UFDTMP TAD SEGCNT DCA SEGCNT TAD UFDPNT TAD K3 DCA UFDTMP TAD I UFDTMP SNA JMP UFDONE TAD K4400 DCA UFDPNT JMP SUM UFDONE, TAD SEGCNT PUTNUM S D 3 TAD UFDMS1 PUTCHR P 20 CRLF TAD QUOTFL OPEN SZA JMP 2 TAD FILRED RFILE TAD FILERR SZA JMP 2 ACT CIA DCA NACT TAD K4377 DCA QUOPNT QUOLOP, STA TAD I QUOPNT SNA JMP NOQUOT IAC TAD NACT SZA CLA JMP QUOLOP TAD QUOPNT TAD K100 DCA QUOTA TAD I QUOTA DCA QUOTA TAD SEGCNT CIA TAD QUOTA SPA JMP OVERQ CLA TAD QMES1 PUTCHR P 36 TAD QUOTA PUTNUM S D 3 TAD BLKMS1 PUTCHR P 7 CRLF JMP 2 OVERQ, CIA DCA AOVER TAD QMES1 PUTCHR P 35 TAD QUOTA PUTNUM S D 3 TAD QMES2 PUTCHR P 15 TAD AOVER PUTNUM S D 3 TAD BLKMS1 PUTCHR P 7 CRLF JMP 2 NOQUOT, CLA TAD NOQMS PUTCHR P 21 CRLF JMP 2 UFDPNT, 0 UFDTMP, 0 SEGCNT, 0 NACT, 0 QUOTA, 0 AOVER, 0 K3, 3 K4377, 4377 PAGE
/ /THIS IS A ROUTINE TO TAKE THE VALUE IN THE /AC AND OUTPUT IT. IT ALSO CONTAINS SEVERAL /OPTIONS OUTLINED BELOW. / /CALL: TAD (NUMBER TO BE OUTPUT / PUTNUM / (OPTION WORD AS FOLLOWS: / / BIT 0=1 TO SUPRESS LEADING ZEROES / BIT 1=1 TO CONVERT TO DECIMAL / BITS 2-11 CONTAN THE NUMBER OF PLACES TO BE FILLED / /EXAMPLE: / / TAD (23) / PUTNUM / S D 2 / /FOR SIMPLICITY WE HAVE DEFINED S=4000 AND D=2000 TO SET /THE CORRECT BITS DEPENDING ON THE MODE DESIRED / /IN THE ABOVE EXAMPLE,23 WOULD HAVE BEEN CONVERTED TO DECIMAL, /THEN OUPUT SUPRESSING LEADING ZEROES AND FILLING 2 PLACES / S=4000 D=2000 NUMBER, 0 DCA NUM0 TAD I NUMBER RAL CLA TAD K240 SNL TAD (20) DCA P1000 TAD P1000 DCA P100 TAD P100 DCA P10 TAD P10 DCA P1 TAD (P1) DCA NUMPTR TAD I NUMBER RAL SPA CLA JMP NUMDEC NUMOCT, TAD NUM0 AND (7) TAD K260 DCA I NUMPTR STA TAD NUMPTR DCA NUMPTR TAD NUM0 AND (7770) SNA JMP NUMOUT CLL RTR RAR DCA NUM0 JMP NUMOCT NUMOUT, TAD I NUMBER AND (7) DCA NUMARG TAD NUMARG CIA IAC TAD (P1) PUTCHR NUMARG, 0 ISZ NUMBER JMP I NUMBER / /THIS IS THE ROUTINE TO CONVERT TO DECIMAL / NUMDEC, DCA THOU DCA HUN DCA TEN DCA ONE DECTST, TAD NUM0 SMA JMP ND1000-1 AND [3777] TAD [60] DCA NUM0 ISZ THOU ISZ THOU JMP DECTST CLA ND1000, TAD NUM0 TAD (-1750) SPA JMP ND100-1 DCA NUM0 ISZ THOU JMP ND1000 CLA ND100, TAD NUM0 TAD (-144) SPA JMP ND10-1 DCA NUM0 ISZ HUN JMP ND100 CLA ND10, TAD NUM0 TAD (-12) SPA JMP ND1-1 DCA NUM0 ISZ TEN JMP ND10 CLA ND1, TAD NUM0 DCA ONE TAD THOU SZA JMP NMD1 TAD HUN SZA JMP NMD2 TAD TEN SZA JMP NMD3 JMP NMD4 NMD1, TAD K260 DCA P1000 TAD HUN NMD2, TAD K260 DCA P100 TAD TEN NMD3, TAD K260 DCA P10 NMD4, TAD ONE TAD K260 DCA P1 JMP NUMOUT THOU, 0 HUN, 0 TEN, 0 ONE, 0 P1000, 0 P100, 0 P10, 0 P1, 0 NUM0, 0 NUMPTR, 0 PAGE
/ /STATE ROUTINE / /THIS IS WHERE SYSTAT GIVES ITS STATE OF THE USER /ADDRESS. IN ADDITION TO PRINTING HIS STATE (I.E. /[NLI],[DET],[PSJ]) IT ALSO HANDLES THE TASK OF /OUTPUTTING THE ELAPSED TIME FOR HIS CONSOLE. / STATE, 0 SPACE 3 TAD JOBNUM ACT TAD M100 SZA CLA /IS IT ACCT 100? [NLI]?? JMP .+5 /GUESS NOT! TAD STATE1 /[NLI] PUTCHR P 5 JMP STATE6 TAD DETBLK /NOW CHECK TO SEE IF HES DETACHED. 6423 /PEEK!!! TAD JOBNUM TAD M1 RAL /*2 TAD BUFFPT IAC DCA FRED /YEA FRED!!! FRED=((2*JOBNUM)-1)+BUFFPT STA TAD I FRED /FRED COMES AGAIN!!! SNA CLA /IS HE DETACHED??? JMP .+6 /OBVIOUSLY NOT!! TAD STATE2 /[DET] PUTCHR P 5 ISZ DETJOB JMP STATE6 TAD JOBNUM /NOW CHECK FOR PSEUDO-JOB TAD K400 DCA PRIV TAD BLK3 6423 /PEEK-A-BOO!! TAD PSW CLL RAL CLA CLL SMA SZL NOP JMP .+5 /NOT A PSEUDO-JOB! TAD STATE3 /[PSJ] PUTCHR P 5 JMP STATE6 SPACE /NORMAL USER--BLANK HIM OUT 5 STATE6, SPACE 3 JMS DUBSUB /SUBTRACT TOD AND OUTPUT IT SPACE 2 TAD JOBNUM ACT JMS COUNTM JMP I STATE /JUMP OUTWARDS DETJOB, 0 BUFFPT, BUFFD PSW, 0 K400, 400 M100, -100 FRED, 0 STATE1, .+1 TEXT /[NLI]/ STATE2, .+1 TEXT /[DET]/ STATE3, .+1 TEXT /[PSJ]/ DETBLK, .+1 10 440 BUFFD -40 BLK3, .+1 10 PRIV, 0 PSW -1
/ /ROUTINE TO OUTPUT THE NUMBER OF DISK BLOCKS UNDER THE PPN IN /'JOBSPC' / AMOUNT, CLA CLL TAD JOBSPC SNA JMP ERRX5 JMS COUNTM TAD AMESS1 PUTCHR P 30 TAD JOBSPC JMS ACT0 CRLF CRLF JMP 2 AMESS1, .+1 TEXT / DISK BLOCKS UNDER P,PN /
/ /DECTAPE (NRFS) QUEUE OPTION / /THE DUTY OF THIS ROUTINE IS TO OUTPUT THE CONTENTS OF THE NRFS /REQUEST QUEUE. THIS IS NOT IMPLEMENTED YET SO WE WILL OUTPUT A /DUMMY MESSAGE. / 0 QUEUE, DCA ISIT /REMEMBER IF WE'RE A SUBROUTINE TAD QMES45 /THE DUMMY MESSAGE PUTCHR P 15 CRLF ISZ ISIT JMP 2 /WE'RE NOT A SUBROUTINE JMP I QUEUE-1 PAGE
/MODE ROUTINE SUPER SYSTAT VERSION 5 / /THIS ROUTINE FINDS OUT WHAT MODE THE /JOB (IN JOBNUM) IS IN. IT HAS IT'S CHOICE /OF THE FOLLOWING: / / SI / KEY (ACTIVE) / TTY (ACTIVE) / RUN (ACTIVE) / FIP (ACTIVE) / TIM / ERP (ACTIVE) / WAIT / IO (ACTIVE) / MODE, 0 /WE'RE A SUBBER!! TAD I JOBXN /JOBNUM IN DISGUISE CON /GET THE TTY LINE # CLL RAL /INDEX AGAINST THE DEVTBL TAD K7600 /TO GET KEYBOARD DDB DCA DDBPNT TAD I DDBPNT DCA MONADR TAD K7700 DCA BUFFER TAD M10 DCA WDCNT TAD PEKBLK 6423 /PEEK AWAY MATEYS!! TAD I K7703 /TAA FOR THIS TTY DCA TTYTIM /TUCK IT AWAY FOR ANOTHER ROUTINE MODE2, TAD I K7700 /GET WORD 0 AND K1000 /CHECK THE DSI BIT SNA CLA /IS IT SET JMP .+3 /N0-- TAD EXTSI /YES--SI MODE--TELL HIM SO JMP MODE11 /NOT VERY ACTIVE IS HE? TAD I K7704 /FILL POINTER TAD I K7706 /EMPTY POINTER SNA SNL CLA CLL /THIS SHOULD COVER EVERYTHING JMP MODE3 /BOTH 0, NOT TYPING IN TAD KMODE /SOETHING SET--MUST BE TTY'ING JMP MODE10 /HE'S ACTIVE MODE3, ISZ DDBPNT /NOW CHECK THE TELEPRINTER TAD I DDBPNT DCA MONADR /NOW READ IN TELEPRINTER DDB TAD K7700 DCA BUFFER TAD M10 DCA WDCNT TAD PEKBLK 6423 TAD I K7704 /FILL, TAD I K7706 /EMPTY POINTERS SNA SNL CLA CLL /SAME AS LAST TIME JMP MODE4 /NOT 'TTY' MODE ANYWAYS TAD TMODE /HE'S TELEPRINTING! JMP MODE10 /CONSIDER HIM ACTIVE MODE4, TAD JOBBLK /READ IN THE WHOLE DAMN JOBTBL 6423 /THE OLD PEEKER IS SURE BUSY. TAD I JOBXN /GET THE JOB # TAD M1 /CONVERT TO POSITION IN THE JOBTBL TAD K7600 DCA DDBPNT /STORE IT TAD I DDBPNT /GET POINTER TO JSB FROM THE JOBTBL DCA MONADR /THATS WHAT WE WANT (JSB 1) TAD K7600 DCA BUFFER TAD M10 DCA WDCNT TAD PEKBLK /NOW GET JOB STATUS BLOCK 1 6423 MODE5, TAD I K7601 /GET STR0 AGAIN AND JSIOT /CHECK THE JSIOT BIT SNA CLA /NON-RESIDENT IOT? JMP MODE6 /NO--OH WELL..... TAD FMODE /YES--MUST BE A FIPPER BUDDY JMP MODE10 /THIS ONE IS ACTIVE TOO MODE6, TAD I K7602 /GET STR1 THIS TIME AND JSTIME /MASK OFF THE JSTIME BIT SNA CLA /IS HE ASLEEP? JMP MODE7 /NO-- TAD TMMODE /YES-- JMP MODE11 /NOT VERY ACTIVE. MODE7, TAD I K7602 /STR1 AGAIN AND JSERR /GET THE JSERR BIT SNA CLA /SYSTEM ERROR FOR THIS JOB? JMP MODE8 /NO-- TAD EMODE /YES--'ERP' JMP MODE10 MODE8, TAD I K7602 /STR1 AGAIN! OH-HUM.... AND JSWAIT /CHECK JSWAIT BIT SZA CLA /IS IT SET? JMP MODE9 /YES--NOT WAITING TAD WMODE /NO--IS IN AN I/O WAIT STATE JMP MODE11 /NOT ACTIVE (OBVIOUSLY) MODE9, TAD EXTRUN /RAN OUT OF MODES TO CHECK--FUDGE IT TO /BE RUN MODE (CRITICS--SHUT UP!) MODE10, ISZ ACTJOB MODE11, PUTCHR /OUPUT THE MODE P 4 /ALL ARE 4 CHARS LONG JMP I MODE /LEAP INTO NEVER-NEVER LAND JOBXN, JOBNUM K7703, 7703 K7704, 7704 K7706, 7706 K7602, 7602 KMODE, .+1 TEXT /KEY / *.-1 TMODE, .+1 TEXT /TTY / *.-1 FMODE, .+1 TEXT /FIP / *.-1 TMMODE, .+1 TEXT /TIME/ *.-1 EMODE, .+1 TEXT /ERP / *.-1 WMODE, .+1 TEXT /WAIT/ *.-1 JSRUN, 4000 JSTIME, 4000 JSIOT, 100 JSERR, 2 JSWAIT, 1 PAGE
/ /THIS ROUTINE HANDLES THE NON-EXISTANT UFD ERROR, THIS ERROR OCCURS /WHEN A USER ASKS FOR THE DSK COUNT OF A NON-EXISTANT PPN. / ERRX5, CLA CLL /GET RID OD THE ERROR CODE TAD NOUFD /"% UFD NOT FOUND FOR USER [" PUTCHR P 32 TAD (.+4) DCA ACT0 /OUR RETURN FROM ACTOUT TAD NAME4 /SHOULD BE THE NON-EXISTANT UFD JMS ACT0 TAD ("] /CLOSE IT OFF REAL NEAT PUTCHR 0001 JMP 2 /AND HALT NOUFD, .+1 TEXT /% UFD NOT FOUND FOR USER [/
/ /ROUTINE TO OUTPUT A ACCOUNT THAT IS IN THE AC, THIS ROUTINE DIFFERS /FROM ACTOUT IN THAT ACTOUT ACCPTS THE JOB NUMBER RATHER THAN THE /PPN. / ACT0, 0 /WE'RE A SUBBR DCA ACTHLD /HOLD IT FOR A WHILE TAD ACTHLD /BUT NOT TOO LONG BSW /SWAP!!! AND K77 /OUTPUT IT IN THE FAMILIAR XX,XX STYLE PUTNUM S 2 TAD COMMA /FORMATTING TOUCHES ABOUND PUTCHR 0001 TAD ACTHLD AND K77 /THE SECOND HALF PUTNUM S 2 JMP I ACT0 ACTHLD, . COMMA, ", / /THIS IS A LEFTOVER / LMES1, .+1 TEXT / JOBS IN USE/
BUFFD=. $-$-$-$-$-$-$=$=$=$=$=$=$
|



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search