File: SYSTAT.PA of Disk: Disks/PDP8-Net/multos8
(Source file text) 

/SYSTAT.PA                      MULTOS-8                AUG 23,1979
/
/       EDIT 105
/
/UPDATED TO ELIMINATE THE NEED FOR EAE NUMBER PRINT
/
/       ADDED TO BUFFER SIZE AND ADDED WAIT STATUS,PC, AND CORE INFORMATION
/
/       DEFINATIONS
/
        SPR=6125
        SYN=6120        /SUSPEND FOR TEH NEXT TIME QUANTUM
        TOD=6114        /TIME OF DAY
        DATE=6115
        SPF=6040        /SET THE TTY FLAG
/
/       EAE INSTRUCTIONS
/
        ACL=7701
/       SWBA=7447
/       SWAB=7431
/       DAD=7443
/       MUY=7405
/       DVI=7407
        CAM=7621
/
/
        *10
PT1,    0
        *20
/
BUF,    0
        ZBLOCK 50       /SAVE A FIVE WORD STATUS BUFFER
/
        *.+5
TEMP,   0
DBUF,   ZBLOCK 2
TBUF,   0
CSW,    7777
TIMOUT, 0
        144
/
/
        *200
/
        CLL CLA         /BE SURE ALL IS CLEAR
        SPF             /SET TY FLAG
        TAD (214
        TLS
/       JMP .+2
/AGAIN, TAD (201        /CLEAR ANN ARBOR TERMINAL
/       TLS             /CLEAR THE TERMINAL
        SYN             /GIVE THE TERMINAL SOME TIME...
        CLL CLA         /CLEAR AC AGAIN
        SPR             /READ THE STATUS REGISTER
        BUF             /PUT IT INTO BUF @ LOC 20
        STL CLA IAC RAL /MAKE A 3
        DATE            /GET THE SYSTEM DATE
        DCA DBUF        /SAVE THE DAY- MO
        ACL             /GET THE MQ
        DCA DBUF+1      /SAVE THE YEAR
        JMS I (PTXT     /OUTPUT THE HEADER
        TXT1            /DISPLAY HEADER
        TAD DBUF
        AND (7700       /MASK OFF THE MOUNTH
        BSW             /SWAP BYTES
        JMS I (SSPRNT
        TAD ("-
        TLS             /OUTPUT A DASH
        CLL CLA
        TAD DBUF
        AND (77
        TAD I (MPNT     /GET THE MONTH POINTER
        DCA TEMP
        TAD I TEMP
        DCA .+2
        JMS I (PTXT
        TXT200          /MOUNTH
        TAD ("-
        TLS
        CLL CLA
        TAD DBUF+1
        JMS I (SSPRNT
        JMS I (PTXT
        TXT1A           /OUTPUT THE TIME
        JMS I (GTIME    /OUTPUT THE TIME
        JMS I (PTXT     /SECOND LINE OF HEADER
        TXT2            /SYSTEM MEMORY
        TAD I (BUF+4    /GET THE 4 TH WORD FROM THE BUFFER
        AND (70         /MAKE TO GET THE AMOUNT OF MEMORY
        RAR             /MOVE RIGHT
                        /THIS GIVES A MULTIPLY BY 4 FOR 'K' MEM
        JMS I (SSPRNT
        TAD (240        /OUTPUT A SPACE
        TLS             /OUTPUT THE CHARACTER
        CLL CLA
        TAD ("K
        TLS             /OUTPUT THE MEMORY AVAILABLE
        CLL CLA
        JMS I (PTXT
        TXT3            /SWAPPING FIELDS
        TAD I (BUF+4
        AND (7          /GET THE LOW ORDER BITS
        TAD ("0         /CONVER TO ASCII
        TLS             /OUTPUT IT
        CLL CLA
        JMS I (PTXT
        TXT4            /USER MAX
        TAD I (BUF+4
        AND (700        /GET BITS 3-5
        BSW             /SWAP BYTES
        DCA I (USMAX    /SAVE THE USER MAX FOR NOW
        TAD I (USMAX
        TAD ("0         /CONVER TO ASCII
        TLS
        CLL CLA
        JMS I (PTXT
        TXT5            /NOW PUT UP THE STATUS HEADER
        TAD I (BUF      /GET THE USER NO WHO CALLED THIS
        CIA             /NEGATE IT
        DCA I (UJOB
        TAD (BUF+4
        DCA PT1
        JMS I (GDAT
        2000            /MASK STATUS WORDS
        1               /FOR JOB NO 1
        JMS I (GDAT
        1000            /MASK STATUS WORDS
        2               /FOR JOB NO 2
        JMS I (GDAT
        400             /MASK STATUS WORDS
        3               /FOR JOB NO 3
        JMS I (GDAT
        200             /MASK STATUS WORDS
        4               /FOR JOB NO 4
        JMS I (GDAT
        100             /MASK STATUS WORDS
        5               /FOR JOB NO 5
        JMS I (SHOMEM   /SHOW MEMORY USEAGE
        TAD I (BUF+1
        SNA CLA
        JMP NLPT
        JMS I (PTXT
        TXT6            /JOBS IN LPT: QUE
        TAD I (BUF+1
        JMS I (SSPRNT   /PRINT THE NO. OF JOBS IN THE LPT QUEUE
        JMP EX
NLPT,   JMS I (PTXT
        TXT7
EX,     CLL CLA
/       JMP AGAIN
        CIF CDF 0
        JMP I (7600     /RETURN TO OS-8
/
        PAGE
/THIS SUB GETS THE STATUS WORDS
/CALL +1 = MASK
/CALL +2 = JOB NO
GDAT,   0
        TAD I GDAT
        DCA MASK
        ISZ GDAT
        TAD I GDAT
        DCA JOBNO
        TAD I (BUF+2    /GET THE STATUS WORD
        AND MASK        /IF BIT 1 SET JOB 1 ACTIVE EXT
        DCA ACT
        TAD ACT
        SNA CLA         /ACTIVE OR NOT ?
        JMP GDATEX      /NO DON'T PRINT ANYTHING
        TAD USMAX
        CIA
        TAD JOBNO       /GET THE CURRENT JOB NO.
        SPA SNA CLA
        JMP D2          /CHECK FURTHER
        JMS I (PTXT
        TXLPT           /LPT SPOOLER
        JMP D1          /CONTINUE
D2,     TAD UJOB        /CHECK THE CALLING JOB
        TAD JOBNO
        SZA CLA
        JMP D           /PRINT THE JOB NO.
        JMS I (PTXT
        TXTSLF          /OUTPUT SELF INSTEAD OF THE JOB NO.
        JMP D1
D,      TAD JOBNO
        JMS I (SSPRNT
D1,     TAD (-10
        DCA TEMP
        TAD (240        /OUTPUT SOME SPACES
E,      TLS
        ISZ TEMP
        JMP E
        CLL CLA
        TAD ACT         /GET THE ACTIVITY WORD
        SZA CLA
        IAC
        TAD ("0         /ZERO = NOT BUSY     1 = BUSY
        TLS             /OUTPUT THE CHARCTER
        CLL CLA
        TAD (-15
        DCA TEMP
        TAD (240        /OUTPUT SOME SPACES
C,      TLS
        ISZ TEMP
        JMP C
        CLL CLA
        TAD I (BUF+3
        AND MASK        /GET THE DATA FOR BUSY
        SZA CLA
        IAC
        TAD ("0         /ZERO = NOT BUSY     1 = BUSY
        TLS             /OUTPUT THE CHARCTER
/THIS SUBROUTINE SHOWS WHAT IS HAPPENING TO THE JOBS AND THE CURRENT 'PC'
/
        CLL CLA
        TAD USMAX
        CIA
        TAD JOBNO       /GET THE CURRENT JOB NO.
        SPA SNA CLA
        SKP
        JMP GDAT1
        JMS I (SPC
        7
        CLL CLA
        TAD I PT1       /GET THE FIRST POINT
        CIA
        MQL             /SAVE IT FOPR NOW
        ACL
        AND (1          /ARE WE WAITING FOR THE DISK
        SNA CLA
        JMP WA1
        JMS I (PTXT
        TXT100          /DISK I/O WAIT
        JMP APC         /AT 'PC'
WA1,    ACL
        AND (6          /TTY WAIT ?
        SNA CLA
        JMP WA2
        JMS I (PTXT
        TXT101          /TTY WAIT
        JMP APC
WA2,    ACL
        AND (200        /DECTAPE WAIT
        SNA CLA
        JMP APC
        JMS I (PTXT
        TXT102
APC,    CLL CLA
        TAD I PT1       /GET THE USER PC
        JMS I (OPRNT    /OCTAL PRINT
        TAD (212
        TLS
        TAD (3
        TLS
        CLL CLA
        JMP GDAT1       /BYPASS IF ABNORMAL EXIT
GDATEX, ISZ PT1
        ISZ PT1
GDAT1,  JMP I GDAT
/
ACT,    0
MASK,   0
JOBNO,  0
UJOB,   0
USMAX,  0
/
/
        PAGE
/THIS SUBROUTINE SHOWS HOW FIELDS 2-7 ARE USED
/
SHOMEM, 0
        CLL CLA
        TAD (-6
        DCA TEMPB
	TAD I (USMAX
	RAL
	TAD (26
        DCA PT1
        JMS I (PTXT
        TXT120
MEM1,   TAD I PT1       /GET THE DATA FOR FIELD 2
        SNA             /IT THERE DATA FOR THIS FIELD ?
        JMP MEM2
        MQL             /SAVE IT FOR NOW
        TAD TEMPB
        DECIMAL
        TAD (8
        OCTAL
        JMS I (SSPRNT
        JMS I (SPC
        3
        ACL
        AND (7          /GET THE JOB NUMBER FOR THIS FIELD
        JMS I (SSPRNT   /PRINT THE NUMBER
        JMS I (SPC
        3
        ACL
        AND (70         /NOW SHOW THE RELATIVE FIELD NUMBER
        RTR
        RAR
        JMS I (SSPRNT
        CLL CLA
        TAD (212
        TLS
        TAD (3
        TLS
        CLL CLA
MEM2,   ISZ TEMPB
        JMP MEM1
        CLL CLA
        JMP I SHOMEM
/
TEMPB,  0
SPC,    0
        TAD I SPC
        CIA
        DCA TEMPA
SPCA,   TAD (" 
        JMS I (TERM
        ISZ TEMPA
        JMP SPCA
        JMP I SPC
/
TEMPA,  0
/
/
/       OCTAL NUMBER PRINTER
/
OPRNT,  0
        MQL
        ACL
        AND (7000
        RTL
        RTL             /PUT IN THE LOW ORDER BYTE POSITION
        TAD ("0         /ADD ASCII 0 CODE
        TLS
        ACL
        AND (700        /GET THE SECOND DIGIT
        BSW             /PUT IN THE LOWER ORDER BYTE
        TAD ("0
        TLS
        ACL
        AND (70
        RAR
        RTR
        TAD ("0
        TLS
        ACL
        AND (7
        TAD ("0
        TLS
        CLL CLA
        JMP I OPRNT
/
MPNT,   .
        TXT200                  /JAN
        TXT201          /FEB
        TXT202          /MAR
        TXT203          /APR
        TXT204          /MAY
        TXT205          /JUN
        TXT206          /JUL
        TXT207          /AUG
        TXT208          /SEP
        TXT209          /OCT
        TXT210          /NOV
        TXT211          /DEC
        0
/
        PAGE
GTIME,  0
        CLL CLA CML RAR
        TOD
        TBUF
        TAD TBUF
        CLL RAR
        DCA TBUF
        TAD TBUF+1
        RAR
        DCA TBUF+1
        JMS B
        0053
        SZA
        JMS CA          /SUBROUTINE
        JMS DA
        JMS B
        0000
        5670
        JMS CA          /SUBROUTINE
        JMS DA
        JMS B
        0000
        0062
        JMS CA
        JMS A           /SUBROUTINE
        0015
        0012
        0000
        JMP I GTIME
/
B,        HLT
        CLA CLL IAC
        TAD B
        DCA TBUF+5
        TAD I TBUF+5
        CLL CMA IAC
        DCA TBUF+4
        CML RAL
        TAD I B
        CMA IAC
        DCA TBUF+3
        DCA TBUF+2
X,      CLA CLL
        TAD TBUF+4
        TAD TBUF+1
        DCA TBUF+1
        RAL
        TAD TBUF+3
        TAD TBUF
        DCA TBUF
        TAD TBUF
        CLA SPA
        JMP ZA
        ISZ TBUF+2
        JMP X
ZA,     CLA CLL
        TAD I TBUF+5
        TAD TBUF+1
        DCA TBUF+1
        RAL
        TAD I B
        TAD TBUF
        DCA TBUF
        ISZ TBUF+5
        TAD TBUF+2
        JMP I TBUF+5
/
A,      0               /SUBROUTINE
        TAD I A
        ISZ A
        SNA
        JMP I A
        JMS TYCHAR      /TYPE THE CHARCTER
        JMP A+1
/
TYCHAR, 0
        TLS
        CLA CLL
        JMP I TYCHAR
/
CA,     HLT
        DCA TBUF+7
        DCA TBUF+6
        TAD TBUF+7
T,      TAD (7766
        SPA
        JMP Y
        ISZ TBUF+6
        JMP T
Y,      TAD (12
        DCA TBUF+7
        TAD TBUF+6
        TAD (60
        JMS TYCHAR
        TAD TBUF+7
        TAD (60
        JMS TYCHAR
        JMP I CA
/
DA,     HLT
        TAD (72
        JMS TYCHAR
        JMP I DA
        HLT
        HLT
        HLT
        HLT
        HLT
        HLT
        HLT
        HLT
        HLT
        HLT
        HLT
/
        PAGE
/TEXT UNPACKING AND OUTPUTTING ROUTINE.
/
PTXT,   0
        TAD I PTXT      /GET POINTER
        DCA COL
        ISZ PTXT        /ADVANCE RETURN POINTER
PXT,    TAD I COL       /GET 1 WORD
        BSW
        JMS PTST        /UNPACK,TEST,PRNT
        TAD I COL
        JMS PTST        /UNPACK,TEST,PRNT
        ISZ COL
        JMP PXT         /GET NXT PNT
STRA,   CLL CLA
        JMP I PTXT
/
PTST,   0               /UNPACK,TEST,PRNT
        AND (77         /NO. IN AC SO MASK IT
        MQL             /TEMP SAVE IT
        MQA             /GET IS AGAIN & TEST IT
        SNA             /WAS IT ZERO ??
        JMP STRA        /JMP OUT  FINISHED !!
        TAD (-43        /FOR A LINE FEED
        SZA CLA
        JMP PTSTA
        TAD (212
        TLS
        TAD (3
        TLS
        CLA
        JMP I PTST      /GET NXT CHARCTER
PTSTA,  MQA
        AND (40         /WAS IT A NUMBER ?
        SNA CLA         /NON ZERO = NUMBER
        TAD (100        /CONVER TO ASCII
        TAD (200
        MQA             /PUT IN CHARCTER PART NOW
        TLS
        CLL CLA
        JMP I PTST
/
COL,    0
/
SSPRNT, 0
        DCA DPRREG      /SAVE THE NO TO BE PRINTED
        TAD DPRINS
        DCA DPRPTP
        TAD M4
        DCA DPRFAC
        DCA DPRFL
        DCA DPRFIG
DPRSUB, CLL
        TAD DPRREG
DPRPTP, TAD DPRTEN
        SNL
        JMP .+4
        DCA DPRREG
        ISZ DPRFIG
        JMP DPRSUB
        CLL CLA
        TAD DPRFIG
        SNA
        JMP DPRZRO
DPRIN,  TAD (20
        ISZ DPRFL
DPRIN1, TAD (" 
        JMS TERM
        ISZ DPRPTP
        ISZ DPRFAC
        JMP DPRSUB-1
        JMP I SSPRNT
/
DPRZRO, CLL CLA IAC
        TAD DPRFAC      /IS THIS THE LAST DIGIT
        SNA CLA
        CLL CLA IAC
        RAR             /ROTATE INTO THE LINK
        TAD DPRFL
        SZA CLA
        JMP DPRIN
        SNL             /CHECK THE LINK...IF SET = LAST DIGIT SO PRINT 0
        JMP DPRIN1
        JMP DPRIN
/
DPRREG, 0
DPRFL,  0
DPRINS, TAD DPRTEN
DPRFAC, 0
DPRFIG, 0
DPRTEN, DECIMAL
        -1000
        -100
        -10
        -1
OCTAL
/
M4,     -4
/
TERM,   0
        TSF
        JMP .-1
        TLS
        CLL CLA
        JMP I TERM
/
        PAGE
/
TXT1,   TEXT *MULTOS-8   SYSTEM STATUS    *
TXT1A,  TEXT *    AT    *
TXT2,   TEXT *#UNASSIGNED MEMORY  *
TXT3,   TEXT *     SWAPPING FIELDS  *
TXT4,   TEXT *    MAX NO. USERS   *
TXT5,   TEXT *##JOB       ACTIVE        BUSY#*
TXT6,   TEXT *# NO. OF JOBS IN LPT QUEUE   *
TXT7,   TEXT *# LPT QUEUE EMPTY #*
TXTSLF, TEXT *SELF*
TXLPT,  TEXT *LPT *
TXT100, TEXT *DISK I/O WAIT AT PC *
TXT101, TEXT *TTY  I/O WAIT AT PC *
TXT102, TEXT *TAPE I/O WAIT AT PC *
TXT120, TEXT *#MEMORY USEAGE#FIELD   JOB  REL FIELD#*
TXT200, TEXT *JAN*
TXT201, TEXT *FEB*
TXT202, TEXT *MAR*
TXT203, TEXT *APR*
TXT204, TEXT *MAY*
TXT205, TEXT *JUN*
TXT206, TEXT *JUL*
TXT207, TEXT *AUG*
TXT208, TEXT *SEP*
TXT209, TEXT *OCT*
TXT210, TEXT *NOV*
TXT211, TEXT *DEC*