File SYSTAT.PA (PAL assembler source file)

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

/TSS/8 EXTENDED SYSTAT	(VERSION 0006)
/
/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:	(SPACE)X/NNN
/
/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 (SPACE)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 HALTP, HALT-1 C7770, 7770 / /ENTRY TO PROGRAM / *0000 JMP I .+1 0200 JMP I HALTP K7, 7 /HAD TO PUT IT SOMEWHERE K100, 100 *0020 PUTCTY= JMS I . PUTCT0 CRLF= JMS I . CRLFB BSW= JMS I . BSWB PRGOUT= JMS I . PRGM PUTDAT= JMS I . DATER PUTNUM= JMS I . NUMBER PUTCHR= JMS I . ASCOUT PUTIME= JMS I . TIME0 SPACE= JMS I . BLANKS PUTSTS= JMS I . PUTST0
/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.24 MONITOR /AT NMUSD. THEY MUST BE CHANGED TO RUN JOBTBL= 3212 /LOCATION OF JOBTBL IN TS8II FRECNT, 47 /LOCATION OF FRECNT IN TS8 DEVTBL, 3130 /LOCATION OF DEVTBL IN TS8II DEVTBE, 3170 /LOCATION OF DEVTBE IN TS8II PRGTBL, 3275 /LOCATION OF PRGTBL IN TS8II JOBMAX, 20 /MAXIMUM JOB NUMBER (IN OCTAL)!!! TIMEUP, 173 /LOCATION OF UPTIM2 IN TS8II JOBTBA, JOBTBL DECIMAL VERNUM= 235 OCTAL
/ /GENERAL PURPOSE COUNTERS, POINTERS, VARS, AND CONSTANTS / CHRTMP, 0 /TEMP STORAGE CNTR, 0 /DITTO DDBPNT, 0 /USED AS POINTER TO DDB'S DEVASS, 0 /NUMBER OF ASSIGNED DEVICES DEVPNT, 0 /POINTER 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 JOBXN, JOBNUM STATEL, STAMES NUMSGN, "# DOLSGN, "$ PERCNT, "% K10, 10 /MOSTLY USED AS PEEK FIELD K17, 17 /MASK K77, 77 /6-BIT MASK K200, 200 K204, 204 /KEYBOARD BREAK MASK K212, 212 /ASCII <LINE FEED> K240, " /CONVERSION CONSTANT K260, "0 /DITTO K400, 400 K1000, 1000 K2000, 2000 K6777, 6777 K7000, 7000 K7600, 7600 K7601, 7601 K7603, 7603 K7604, 7604 K7700, 7700 /6-BIT MASK M1, -1 M2, -2 M10, -10 M40, -40 M60, -60 M100, -100 M260, -"0 /CONVERSION CONSTANT M377, -377 /- ASCII <RUBOUT> OPTPNT, 0 /POINTER ROUTINE PTCOLN, ": /ASCII <:> PTCONT, 0 /TEMP STORAGE PTDIGI, 0 /DIGIT ASSEMBLY REGISTER TTYTIM, 0 /HAS TO BE ON PAGE ZERO NUMSTS, 0 / /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 (10 SYSTEM TICKS PER SECOND) / /THE HIGH ORDER BITS PTAB, 7650 /- NUMBER OF TICKS IN 10 HOURS 7767 /- NUMBER OF TICKS IN 1 HOUR 7776 /- 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, 0700 /- NUMBER OF TICKS IN 10 HOURS 1540 /- NUMBER OF TICKS IN 1 HOUR 4220 /- NUMBER OF TICKS IN 10 MINUTES 6650 /- NUMBER OF TICKS IN 1 MINUTE 7634 /- NUMBER OF TICKS IN 10 SECONDS 7766 /- NUMBER OF TICKS IN 1 SECOND /THESE ARE THE DECODING STACKS FOR DECODING THE /UPTIME (WHICH IS IN SECONDS) / / /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
*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 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 -"T 0 0 0 0 0 0 0 0 / /POINTERS TO THE ROUTINES /THESE CORRESPOND DIRECTLY TO /THE OPTION STACK / PNTSTK, . BUSY DISC EXTEND FAST FRECOR NUMUSE RUNTIM 0 0 0 0 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 2 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 21 CRLF TAD ISIT /SAME BIT AS LAST TIME SZA CLA JMP I FRECOR-1 JMP 2 FRECOU, 0 AVCOR, .+1 TEXT / FREE CORE BLOCKS/
/ /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 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 17 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 / / /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
/ /PAGE OF VARIOUS ROUTINES / / /ROUTINE FOR ILLEGAL COMMANDS / ILLEGL, CLA CLL TAD ILLMES PUTCHR P 33 CRLF JMP 2 ILLMES, .+1 TEXT \TYPE "HELP 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 K6777 /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, CRLF 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 10 USE 6615 /AND LOGOUT! HLTMS1, .+1 ".;"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 JOBNUM CON /GET HIS CONSOLE PUTCTY PUTNUM S 3 SPACE 3 TAD JOBNUM PRGOUT SPACE 2 TAD JOBNUM JMS ACTOUT PUTSTS CRLF FAST4, ISZ JOBNUM ISZ JOBCNT JMP FAST3 TAD NUMSTS SNA CLA JMP .+5 TAD STATEL PUTCHR P 41 CRLF 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 / ELAPSED/ *.-1 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 ELAPSED TIME/ / /THIS IS THE ROUTINE TO PRINT THE ABOVE /HEADING / BHEAD, 0 TAD BUSH2 PUTCHR P 15 CRLF TAD BUSHED PUTCHR P 43 CRLF CRLF JMP I BHEAD
/ /THIS IS A ROUTINE TO OUTPUT THE ACCOUNT NUMBER OF THE JOB IN THE AC. /IT CHECKS FOR ACCOUNT 100, [NRFS], FAILSA AND OUTPUTS THECORRECT /MESSAGE. IN THE FUTURE IT MAY ALSO TYPE SELF FOR THE USERS OWN /ACCOUNT SINCE WE ASSUME HE RUMEMBERS WHAT PPN HE LOGGED INTO / ACTOUT, 0 DCA JOBS2 TAD JOBS2 ACT TAD M100 SNA CLA JMP ACT1 USE CIA TAD JOBS2 SNA CLA JMP ACT1+2 TAD JOBS2 ACT JMS ACT0 JMP I ACTOUT ACT1, TAD ACTM3 SKP TAD ACTM4 PUTCHR P 5 JMP I ACTOUT ACTM3, .+1 TEXT /**,**/ ACTM4, .+1 TEXT /*SELF/ 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 (-30) /READ 20 WORDS DCA WDCNT TAD PEKBLK 6423 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 2ND WORD IAC /IF IT'S -1, THEN IT'S A NON-EXISTANT DEVICE SNA CLA JMP BUSINC TAD I K7601 DCA JOBNUM 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 P 4 SPACE /GIVE HIM A CLEAN OUTPUT 2 TAD JOBNUM JMS ACTOUT SPACE 2 TAD JOBNUM CON /GET HIS KONSOLE PUTCTY PUTNUM S 3 SPACE 2 TAD JOBNUM /NOW THE JOB # ITSELF PUTNUM S 2 SPACE 5 TAD I K7603 /GET THE TIME WORD DCA TTYTIM JMS DUBSUB CRLF /CLOSE OUT THE LINE JMP BUSINC
/ /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 STAMES, TEXT /%=GUARDED; $=PRIV'D; #=OPR PRIV'D/ PAGE
/ /THIS IS SOME STUFF LEFT OVER FROM A PREVIOUS /PAGE / ASMS1, .+1 TEXT / DEVICES ASSIGNED/ NOBUS, .+1 TEXT /NO BUSY DEVICES/ NOBS, .+1 TEXT / FOR JOB / / /THE FOLLOWING IS A LIST OF THE DEVICE NAMES THAT CAN BE ASSIGNED / DEVLST, .+1 TEXT /PTR0/ *.-1 TEXT /PTP0/ *.-1 TEXT /LPT0/ *.-1 TEXT /PLT0/ *.-1 TEXT /CDR0/ *.-1 TEXT /DTA0/ *.-1 TEXT /DTA1/ *.-1 TEXT /DTA2/ *.-1 TEXT /DTA3/ *.-1 TEXT /DTA4/ *.-1 TEXT /DTA5/ *.-1 TEXT /DTA6/ *.-1 TEXT /DTA7/ *.-1 TEXT /RK00/ *.-1 TEXT /RK01/ *.-1 TEXT /RK02/ *.-1 TEXT /RK03/ *.-1
/ /STATE ROUTINE / /FINDS OUT WHETHER A GIVEN JOB IS USING /THE PAGING FUNCTION OR NOT (^S OR ^Q) / STATE, 0 TAD UPAROW PUTCHR /"^" 1 TAD JOBNUM CON CLL RAL /2 ENTRIES FOR EACH JOB TAD DEVTBL IAC /WE WANT THE OUTPUT DDB DCA TTBLK+2 /HAVE MONITOR ADDRESS TAD TTBLK 6423 /GET ADDRESS , WORD 0 OF OUTPUT DDB TAD TTBUF DCA TTBLK+2 /SAVE ADDRESS TAD TTBLK 6423 /NOW GET THE WORD TAD TTBUF SMA CLA /IS BIT0 SET? TAD PQ /NO, ^Q TAD PS /YES, ^S PUTCHR /Q OR S 1 JMP I STATE /JUMP OUTWARDS TTBLK, .+1 10 0 TTBUF -1 TTBUF, 0 PQ, "Q-"S PS, "S UPAROW, "^ /WE HAD TO MOVE THIS LAST PART OF EXTENDED SYSTAT FOR ROOM!! 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 JMP 2 /WE'RE DONE!!!!! ! 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 TAD DEVASS PUTNUM S D 2 TAD ASMS1 PUTCHR P 21 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 (112) /74 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 /ROUTINE TO CHECK FOR K00, IT JUST TYPES "CTY" AND SKIPS OVER THE NUMBER OUTPUT PUTCT0, 0 SZA JMP I PUTCT0 TAD CTYMES PUTCHR P 3 ISZ PUTCT0 ISZ PUTCT0 JMP I PUTCT0 CTYMES, .+1 TEXT /CTY/ 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 57 TAD EXTOP2 PUTCHR P 12 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 3 TAD JOBNUM CON PUTCTY PUTNUM S 3 SPACE 3 TAD JOBNUM JMS ACTOUT /GET HIS ACCOUNT SPACE 3 TAD JOBNUM PRGOUT SPACE 3 TAD JOBBLK 6423 JMS MODE SPACE 2 JMS STATE SPACE 3 TAD JOBNUM DCA TIMEQ TAD [TIMEQ] URT PUTIME SPACE 3 JMS DUBSUB PUTSTS 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 (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 MU SZA CLA JMP .+4 ACT DCA JOBSPC JMP DOIT USE DCA JOBSPC JMP DOIT MSTAR, -"* MU, -"U LMES1, .+1 TEXT / JOBS IN USE/
PAGE EXT2, ISZ JOBNUM ISZ CNTR /ARE WE DONE? JMP EXT1 /NO-- TAD NUMSTS SNA CLA JMP .+5 TAD STATEL PUTCHR P 41 CRLF 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 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 JMP EXT3
/ROUTINE TO OUTPUT SPECIFIC STATUS ABOUT THIS JOB /(JOB NUMBER IN JOBNUM. /$=PRIVED, #=OPR PRIVED, %=GUARDED / PUTST0, 0 SPACE 2 TAD K10 /FIELD 1 DCA FIELDR TAD JOBNUM TAD JOBTBA DCA MONADR CMA DCA WDCNT TAD DATP DCA BUFFER TAD PEKBLK 6423 TAD DATWD IAC DCA MONADR TAD PEKBLK 6423 TAD DATWD AND K400 SNA CLA JMP .+5 TAD DOLSGN PUTCHR 1 ISZ NUMSTS TAD DATWD AND K200 SNA CLA JMP .+5 TAD NUMSGN PUTCHR 1 ISZ NUMSTS TAD JOBNUM CON CLL RAL TAD DEVTBL DCA MONADR TAD PEKBLK 6423 TAD DATWD DCA MONADR TAD PEKBLK 6423 TAD DATWD AND K400 SNA CLA JMP .+5 TAD PERCNT PUTCHR 1 ISZ NUMSTS JMP I PUTST0 DATP, DATWD DATWD, 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 STATE RUN TIME/ 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 / /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 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
/ / /THESE ARE THE MESSAGES FOR THE MODE ROUTINE, SINCE THERE /JUST HAPPENED TO BE ALL THIS LUSCIOUS SPACE. / / IMODE1, TEXT /IO / *.-1 KMODE1, TEXT /KEY / *.-1 TMODE1, TEXT /TTY / *.-1 TMMOD1, TEXT /TIME/ *.-1 FMODE1, TEXT /FIP / *.-1 EMODE1, TEXT /ERP / *.-1 DMODE1, TEXT /DISK/ *.-1 BSMOD1, TEXT /^BS / *.-1 WMODE1, TEXT /WAIT/ *.-1 RMODE1, TEXT /RUN / *.-1 SMODE1, TEXT /SI / *.-1 DAYSM, TEXT / DAYS / / /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, ", 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 (TAD UTAB1) DCA PTIMX TAD (TAD UTAB) DCA PTIMX1 TAD UPTIM DCA TIME0 DCA PTDIGI UPLOOP, CLL TAD NUMHO+1 TAD K7200 DCA NUMHO+2 RAL TAD NUMHO TAD K7752 SNL JMP UPDAY1 DCA NUMHO TAD NUMHO+2 DCA NUMHO+1 ISZ PTDIGI JMP UPLOOP K7200, UPDAY1, CLA TAD PTDIGI SNA JMP PTLOOP-2 PUTNUM S D 2 TAD DAYS PUTCHR P 6 JMP PTLOOP-2 DAYS, DAYSM K7752, 7752
/ /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 TAD PTABX DCA PTIMX TAD PTABX1 DCA PTIMX1 TAD PTFORM DCA PTCONT PTLOOP, TAD K260 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 PUTCHR 1 TAD PTCONT SNA JMP I TIME0 RAL CLL DCA PTCONT SZL JMP PTLOOP TAD PTCOLN PUTCHR 1 JMP PTLOOP PTABX, TAD PTAB1 PTABX1, TAD PTAB PTFORM, 5200
/ /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 [NUMHO] TOD CLL TAD NUMHO+1 TAD K400 DCA NUMHO+1 RAL TAD NUMHO TAD K7455 AND K0777 DCA NUMHO TAD NUMHO+1 AND K7000 CLL RAL TAD NUMHO RAL RTL DCA NUMHO TAD TTYTIM CLL CIA TAD NUMHO SNL TAD RELCON JMS DECOD2 PUTIME JMP I DUBSUB RELCON, 3277 K0777, 777 K7455, 7455
/ /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
/ /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
/MODE ROUTINE: THIS WILL CHECK, /ALMOST EXACTLY, WHAT THIS GUY IS DOING, /WHETHER HE'S TYPING, RUNNING, ETC. /HERE IS A LIST OF ALL THE DIFFERENT CONDITIONS. / / / RUN (ACTIVE) / SI (ACTIVE) / WAIT / ^BS / DISK / ERP (ACTIVE) / FIP (ACTIVE) / TIME / TTY (ACTIVE) / KEY / IO / MODE, 0 CLA CLL TAD I JOBXN TAD K7600 DCA DDBPNT TAD I DDBPNT DCA MONADR TAD M10 DCA WDCNT TAD K7600 DCA BUFFER TAD K10 DCA FIELDR TAD PEKBLK /NOW WE HAVE JOB STATUS BLOCK 0 AT 7600 6423 TAD DEVTBL DCA MONADR TAD M40 DCA WDCNT TAD K7700 DCA BUFFER TAD PEKBLK 6423 TAD I JOBXN CON CLL RAL /INPUT DDB TAD K7700 DCA DDBPNT TAD I DDBPNT DCA MONADR TAD M10 DCA WDCNT TAD PEKBLK 6423 TAD I K7703 DCA TTYTIM /KEEP TIME OF ASSIGNMENT FOR LATER! /NOW (FINALLY!) WE CAN START CHECKING CONDITIONS [WHEW!] TAD I K7601 /STR0 SPA CLA /IS JSRUN BIT SET? JMP MODE1 TAD BSMODE /^BS MODE (SYSTEM INTERPRETOR WAS CALLED FOR HALT) JMP MNACT /NOT ACTIVE MODE1, TAD I K7700 RTL SMA CLA /IF DSI BIT IS SET, USER PROGRAM CALLED SI JMP MODE2 TAD SMODE /SI (SYSTEM INTERPRETOR) WAS CALLED FROM PROGRAM JMP MACT /YUP, HE'S STILL ACTIVE MODE2, TAD I K7601 AND K100 /IS JSIOT SET? SNA CLA JMP MODE3 TAD FMODE /YUP, HE CALLED FIP (FILE PHANTOM) JMP MACT /ACTIVE MODE3, TAD I K7602 RTR SNL CLA /IS JSERR SET? JMP MODE4 TAD EMODE /YUP, ERP (ERROR PHANTOM, SYSTEM ERROR) JMP MACT /ACTIVE MODE4, TAD I K7602 RAR /IS JSWAIT SET? SNL CLA /IF SO, HE'S RUNNING, OTHERWISE, HE'S WAITING JMP MODE5 TAD RMODE JMP MACT /ACTIVE /NOW WE CHECK THE DIFFERENT WAIT STATES HE COULD BE IN BY CHECKING /THE WAIT MASK FOR OTHER BITS SET. MODE5, TAD I K7604 AND K3600 /AND INTERNAL FILES BUSY? SNA CLA JMP MODE6 TAD DMODE /YUP, HE'S WAITING FOR THE DISK JMP MNACT /NOT ACTIVE. MODE6, TAD I K7604 SMA CLA /IS TIMER SET? JMP MODE7 TAD TMMODE /YES, "TIME" JMP MNACT /NOT VER ACTIVE, IS HE MODE7, TAD I K7604 AND K100 /IS JSDEL SET? SNA CLA JMP MODE8 TAD KMODE /YES, "KEY" JMP MNACT /NOT ACTIVE MODE8, TAD I K7604 AND K20 /JSTEL SET? SNA CLA JMP MODE9 /YES, "TTY" TAD TMODE JMP MACT /ACTIVE MODE9, TAD I K7604 AND K54 /IS JSPTR, JSPTP, JSLPT SET? SNA CLA JMP .+3 TAD IMODE /YES, "IO" JMP MNACT /NOT ACTIVE /THIS IS DEFAULT, WILL PROBABLY NEVER COME THIS FAR, IT WILL TYPE OUT /"WAIT", BECAUSE JSWAIT IS NOT SET (WAITING) AND IT'S NOT WAITING /FOR ANY DEVICES, AND WE CAN'T HAVE ANY ERROR CONDITIONS HERE! TAD WMODE SKP MACT, ISZ ACTJOB MNACT, PUTCHR P 4 JMP I MODE K54, 54 K3600, 3600 K20, 20 K7703, 7703 K7602, 7602 IMODE, IMODE1 KMODE, KMODE1 TMODE, TMODE1 TMMODE, TMMOD1 FMODE, FMODE1 EMODE, EMODE1 DMODE, DMODE1 BSMODE, BSMOD1 WMODE, WMODE1 RMODE, RMODE1 SMODE, SMODE1 PAGE
$-$-$-$-$-$-$=$=$=$=$=$=$



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