TITLE SYSTAT - V410 SUBTTL R CLEMENTS /CHW DEC 24 69 VSYSTAT==410 LOC 137 EXP VSYSTAT RELOC loc 140 ;AC ASSIGNMENTS M=0 A=1 B=2 C=3 D=4 J=5 JS=6 R=7 N=10 N1=11 F=12 BP=13 WD=15 CH=16 P=17 ;I/O CHANNEL TTY=0 IFNDEF STANSW,< STANSW==0> IFNDEF HACKSW,< HACKSW==0> IFNDEF JIFSEC, L.BDO="B"-"A" ;B WAS TYPED L.DSO="D"-"A" ;D " " L.FSO="F"-"A" ;F " " L.SSO="S"-"A" ;S " " L.JSO="J"-"A" ;J " " L.EJS="H"-"A" ;H " " ;FLAGS (LH OF F) FL.HGH==1 ;HIGH SEG PARAGRAPH NEEDED FL.DEV==2 ;DEVICE HEADER OUTPUT FL.GOD==4 ;I AM [1,N] FL.LGI==10 ;I AM LOGGED IN FL.DTJ==20 ;THIS JOB DETACHED FL.DOR==40 ;DORMANT SEG TABLE BEING PRINTED FL.BRK==SIGN ;NO MORE CHS. TO I/P OR BREAK CH. SEEN ;STUFF WHICH HAS TO AGREE WITH MONITOR, ASIDE FROM GETTAB DEFNS JNA==40000 JLOG==4 ASSCON==400000 ASSPRG==200000 SNA==400000 JSWP==2000 SHRSEG==200000 DEVSER==3 DEVMOD==4 DEVCHR==1 DEVNAM==0 ;PARAMETERS SIGN=400000 DVDSK==200000 DVTTY==10 OUTMSK==377000 MLON ;CALLI'S CI.RES==0 CI.DDT==3 CI.COR==11 CI.EXI==12 CI.LGO==17 CI.PEK==33 CI.GET==41 EXTERN JOBDDT,JOBREL,JOBSYM,JOBFF ;START HERE SYSTAT: CALLI CI.RES MOVE P,PDP ;SETUP STACK PNTR. MOVEI M,0 INIT TTY,0 SIXBIT /TTY/ XWD TYOB,0 HALT . MOVE A,[SIXBIT /SYSTAT/] MOVSI B,(SIXBIT /TXT/) SETZB C,D ;CLEAR DATE & PPN ENTER TTY,A JFCL OUTBUF TTY,1 MOVE A,XSTATS ;MY STATUS PUSHJ P,GETA MOVEM A,STATES JUMPE A,DNTSTO MOVEI B,JIFSEC TLNE A,4000 MOVEI B,62 MOVEM B,TCKSEC DNTSTO: MOVE A,XSEGPT ;READ TTY STATUS DATA PUSHJ P,GETA MOVEM A,SEGPTR HLRE B,A MOVNM B,SEGN HRRZM A,JOBN ADD A,SEGN HRRZM A,BOTH HRRZ A,JOBFF MOVEM A,ZERLOW MOVEM A,FREE HRRZ A,JOBREL SKIPE JOBDDT SYS0A: HRRZ A,JOBSYM MOVEM A,ZERHGH HRROI A, PUSHJ P,GETA HRROI B,2 ;MY PPN CALLI B,CI.GET SETO B, ;NON DISK SYSTEM-FLAG AS UNGODLY TLNE A,JLOG ;LOGGED IN? TLO M,FL.LGI ;YES-REMEMBER IT TLNN B,-2 ;PROJECT 1? TLNN A,JLOG ;YES-LOGGED IN? SKIPA ;NO TLO M,FL.GOD ;WE'RE GOD SETZM MTTY SETZM @ZERLOW MOVE A,ZERLOW HRLS A ADDI A,1 BLT A,@ZERHGH MOVE A,FREE HRRM A,.DDB MOVSI J,10 SYS0L: MOVS A,J CALLI A,CI.GET JRST SYS0X SOS MTTY MOVEM A,@.DDB AOJA J,SYS0L SYS0X: MOVN A,MTTY ;GET NUMBER OF JOBS ADDB A,FREE ;ADVANCE POINTER HRRM A,.TTY ;SETUP TABLE OF LINE NUMBERS HRLZ N,MTTY SYS0Y: MOVE J,N MOVE B,@.DDB LDB J,[POINT 8,B,11] TLZ B,-1 JUMPE B,SYS0Z CALLI B,CI.PEK MOVEM B,@.TTY SYS0Z: AOBJN N,SYS0Y SUBTTL READ JOB AND SEGMENT STATUS MOVE A,JOBN ADDB A,FREE MOVE B,[XWD -NTAB,TABPTR] MOVE C,(B) HRRM A,(C) MOVE A,JOBN IMULI A,NJOBT MOVE C,SEGN IMULI C,NSEGT ADD A,C ADD A,FREE HRRZ C,JOBREL CAIL C,(A) JRST INIT1 HRRZS A CALLI A,CI.COR JRST NOCOR INIT1: MOVE C,(B) HRRZ J,BOTH TLZN C,SIGN HRRZ J,JOBN MOVE A,FREE ADDI A,(J) HRRM A,1(C) HRRZM A,FREE MOVNS J HRLZS J INIT2: MOVS A,C PUSHJ P,GETAJ MOVEM A,@0(C) AOBJN J,INIT2 AOBJN B,INIT1 MOVE A,FREE ADD A,SEGN HRRZM A,FREE MOVE A,.SEGCT HRLS A SETZM (A) ADDI A,1 BLT A,@FREE MOVE A,XCORMX ;GET SIZE OF USER CORE PUSHJ P,GETA MOVEM A,CORMAX MOVE A,XVIRTL PUSHJ P,GETA MOVEM A,VIRTAL MOVEI F,[ASCIZ / Status of /] PUSHJ P,MSG MOVEI B,0 CONST: MOVEI C,11 SYS2: MOVEI F,1 MOVE A,C PUSHJ P,GETA PUSHJ P,MSG AOBJN C,.+1 TRNE A,376 SOJA C,SYS2 MOVEI F,[ASCIZ / at /] PUSHJ P,MSG MOVE A,XTIME PUSHJ P,GETA PUSHJ P,TCKTIM MOVEI F,[ASCIZ / on /] PUSHJ P,MSG MOVE A,XDATE ;GET TODAY'S DATE PUSHJ P,GETA MOVEM A,DATE IDIVI A,^D31 MOVEI N,1(B) PUSHJ P,DECPR2 IDIVI A,^D12 MOVE B,MONTAB(B) MOVEI C,0 MOVEI F,B PUSHJ P,MSG MOVEI N,^D64(A) PUSHJ P,DECPRT ;PRINT MESSAGE FOLLOWED BY DECIMAL NO. PUSHJ P,CRLF2 MOVEI F,[ASCIZ /Uptime /] PUSHJ P,MSG MOVE A,XUPTIM PUSHJ P,GETA ;GET UPTIME PUSH P,A PUSHJ P,TCKTIM MOVEI F,[ASCIZ /, /] PUSHJ P,MSG MOVEI J,0 MOVE A,@.TIM ;GET NULL TIME IMULI A,^D100 POP P,N ;SAVE FOR COMPUTING IDLE & LOST TIME IDIV A,N ;COMPUTE % NULL TIME MOVE N,A ;SAVE IT PUSHJ P,DECPRT ;PRINT MESSAGE FOLLOWED BY DECIMAL NO. MOVEI F,[ASCIZ /% Null time Job Who Where What Size State Runtime /] PUSHJ P,MSG SYS4A: MOVN J,JOBN HRLZS J SETZM CORUSE ;CLEAR TOTAL VIRT. CORE USED SYSL1: MOVE JS,@.STS TLNN JS,JNA JRST DUNJOB MOVE A,@.SGN JUMPLE A,SYSL1E SUB A,JOBN AOS @.SEGCT ;INCREMENT HISEG USE COUNT TLO M,FL.HGH SYSL1E: HRRZ N,J PUSHJ P,DECPRT PUSHJ P,TAB TLZ FL.DTJ TLO FL.DTJ SKIPN A,@.TTY SKIPA A,[SIXBIT /DET/] TLZ M,FL.DTJ MOVEM A,JOBTTY TLNN M,FL.DTJ TLNN JS,JLOG JRST NOWHO SYSL1C: MOVE A,@.PPN ; HLRZ N,A PUSHJ P,OCTPRT ;PRINT PRJ-PRG # SYSL1D: PUSHJ P,COMMA HRRZ N,A PUSHJ P,OCTPRT SYS5: PUSHJ P,TAB MOVE A,JOBTTY PUSHJ P,SIXBP ;PRINT SIXBIT MSG FOLLOWED BY TAB PUSHJ P,TAB MOVE A,@.PRG PUSHJ P,SIXBP ;PRINT SIXBIT MSG FOLLOWED BY TAB PUSHJ P,TAB MOVE A,@.ADR JUMPN A,SYS6 TLNN JS,JSWP JRST SYS6 MOVE A,@.SWP ANDI A,777 JRST SYS6A SYS6: TLNE A,1777 TLO A,1777 ADD A,[XWD 1,0] ASH A,-^D28 SYS6A: MOVEI N,(A) ADDM N,CORUSE PUSHJ P,DECPRT MOVEI F,[ASCIZ /K /] PUSHJ P,MSG MOVSI A,(SIXBIT /^C/) JUMPGE JS,TSTATE TLNE JS,JSWP TLNE JS,170 JRST SYS7 MOVSI A,(SIXBIT /SW/) JRST TSTATE SYS7: LDB B,[POINT 4,JS,14] MOVE A,QTAB(B) TSTATE: PUSHJ P,SIXBP PUSHJ P,TAB ;PRINT STATE AND "SW"/"SF" IF SWAPPED/& FRAGMENTED MOVE A,@.TIM PUSHJ P,TCKTIM RET2: PUSHJ P,CRLF DUNJOB: AOBJN J,SYSL1 TLNN M,FL.HGH JRST DORMNT HIGH: MOVEI F,[ASCIZ / High Segments Program Owner High K Users /] PUSHJ P,MSG MOVE J,SEGPTR HIGH00: MOVE JS,@.STS TLNN JS,SNA JRST DUNHGH SKIPN A,@.PRG JRST [MOVE A,[SIXBIT /(PRIV)/] TLNE JS,SHRSEG MOVE A,[SIXBIT /(OBS)/] JRST .+1] HIGH01: PUSHJ P,SIXBP HIGH1A: PUSHJ P,TAB MOVE A,@.PPN JUMPN A,HIGH03 hrrz D,.PPN ;SUBROUTINE TO FIND 1ST. JOB USING A SEGMENT ;CALL MOVE J,SEGMENT NO. ; PUSHJ P,SEGSCN ; NONE FOUND RETURN ; FOUND ;AC'S B & C DESTROYED ;AC J IS RESPECTED SEGSCN: MOVN B,JOBN HRLZS B HRR B,.SGN ;PREPARE AOBJN PTR. FOR SCANNING JBTSGN HIGH04: ADDI D,1 HRRZ C,(B) ;GET SEGMENT NO. HIGH06: CAIN C,(J) ;DOES IT MATCH WITH CURRENT ONE? SKIPA AOBJN B,HIGH04 ;NO-DO AGAIN HIGH03: SKIPGE M,B JUMPE A,[ MOVEI F,[ASCIZ /Job /] PUSHJ P,MSG SUB B,.SGN HRRZ N,B PUSHJ P,DECPRT JRST HIGH08] JUMPLE A,HIGH07 HLRZ N,A PUSHJ P,OCTPRT PUSHJ P,COMMA HRRZ N,A PUSHJ P,OCTPRT JRST HIGH08 HIGH07: PUSHJ P,SIXBP HIGH08: PUSHJ P,TAB MOVE A,@.ADR JUMPN A,HIGH10 TLNN J,2000 JRST HIGH10 HIGH09: MOVE A,@.SWP JRST HIGH11 HIGH10: TLNE A,1777 TLO A,1777 ADD A,[1000000] ASH A,-34 HIGH11: ANDI A,377 MOVEI N,0(A) ADDM N,CORUSE PUSHJ P,DECPRT MOVEI F,[ASCIZ /K /] PUSHJ P,MSG MOVEI A,0(J) SUB A,JOBN MOVE N,@.SEGCT PUSHJ P,DECPRT PUSHJ P,CRLF DUNHGH: AOBJN J,HIGH00 DORMNT: MOVE N,CORMAX ASH N,-12 SUB N,CORUSE JUMPL N,HIGH12 PUSHJ P,CRLF PUSHJ P,DECPRT MOVEI F,[ASCIZ /K Core left,/] PUSHJ P,MSG JRST HIGH13 HIGH12: MOVNS M,N MOVEI F,[ASCIZ / Swapping /] PUSHJ P,MSG PUSHJ P,DECPRT MOVEI F,[ASCIZ /K,/] PUSHJ P,MSG HIGH13: MOVEI F,[ASCIZ / Virt. core left = /] PUSHJ P,MSG MOVE N,VIRTAL PUSHJ P,DECPRT PUSHJ P,CRLF2 DEVQ: MOVE D,XDVLST CALLI D,CI.GET JRST FINIS DEVLP: TLNN D,-1 JRST DEVEND HLRZS D MOVEI B,DEVMOD(D) CALLI B,CI.PEK TRNE B,ASSCON+ASSPRG TLNE B,DVTTY+DVDSK JRST NXTDEV MOVEI C,DEVCHR(D) CALLI C,CI.PEK MOVEI A,DEVNAM(D) CALLI A,CI.PEK MOVEI F,[ASCIZ /Busy devices: Device Job Why /] TLON M,FL.DEV PUSHJ P,MSG PUSHJ P,SIXBP ;PRINT SIXBIT MSG FOLLOWED BY TAB PUSHJ P,TAB LDB N,[POINT 6,C,5] PUSHJ P,DECPRT PUSHJ P,TAB MOVEI F,[ASCIZ /AS/] TRNE B,ASSCON PUSHJ P,MSG TRNN B,ASSPRG JRST DVCRLF MOVEI CH,"+" TRNE B,ASSCON PUSHJ P,TYO MOVEI F,[ASCIZ /INIT/] PUSHJ P,MSG DVCRLF: PUSHJ P,CRLF NXTDEV: MOVEI D,DEVSER(D) CALLI D,CI.PEK JRST DEVLP DEVEND: MOVEI F,[ASCIZ /No busy devices /] TLNN M,FL.DEV PUSHJ P,MSG PUSHJ P,CRLF2 FINIS: JRST KILL ;YES-GO SEE IF WE SHOULD EXIT OR INTERPRET MORE CHS. NOCOR: MOVEI F,[ASCIZ /?NEED MORE CORE FOR DATA /] PUSHJ P,MSG KILL: TLNE M,FL.LGI CALLI 0,CI.EXI ;MONRET MOVEI F,KJMSG CALLI F,CI.DDT CALLI CI.LGO KJMSG: ASCII /.KJOB/ BYTE (7) 15,12,".",4,0 GETAJ: HRLI A,(J) GETA: CALLI A,CI.GET TDZA A,A POPJ P,0 MOVEI CH,77 JRST TYO NOWHO: TLNE M,FL.GOD JRST SYSL1C ;SKIP RETURN ONLY IF GOD MOVE A,[SIXBIT /**,**/] PUSHJ P,SIXBP JRST SYS5 CRLF2: PUSHJ P,CRLF CRLF: MOVEI F,[ASCIZ / /] MSG: HRLI F,440700 MSG1: ILDB CH,F JUMPE CH,CPOPJ PUSHJ P,TYO JRST MSG1 COLON: MOVEI CH,":" JRST TYO COMMA: MOVEI CH,"," JRST TYO ;SIXTAB: PUSHJ P,SIXBP TAB: MOVEI CH,11 TYO: SOSG TYOB+2 OUTPUT TTY,0 IDPB CH,TYOB+1 CAIN CH,12 OUTPUT TTY,0 POPJ P,0 TCKTIM: IDIV A,TCKSEC ;JUNK JIFFIES IDIVI A,^D60*^D60 MOVE N,A PUSHJ P,DECPR2 PUSHJ P,COLON IDIVI B,^D60 MOVE N,B PUSHJ P,DECPR2 PUSHJ P,COLON MOVE N,C JRST DECPR2 SIXBP: MOVE BP,[XWD 440600,A] SIXBP1: ILDB CH,BP JUMPE CH,CPOPJ ADDI CH,40 PUSHJ P,TYO TLNE BP,770000 JRST SIXBP1 CPOPJ: POPJ P,0 DECPR2: MOVEI CH,60 CAIG N,11 PUSHJ P,TYO DECPRT: MOVEI R,12 RDXPRT: MOVEI CH,"-" SKIPGE N PUSHJ P,TYO MOVMS N RADIX1: IDIVI N,(R) HRLM N1,0(P) SKIPE N PUSHJ P,RADIX1 HLRZ CH,0(P) ADDI CH,60 JRST TYO OCTPRT: MOVEI R,10 JRST RDXPRT ;CONSTANTS FOR GETTAB UUO XTIME: XWD 10,11 XDATE: XWD 11,11 XSEGPT: XWD 15,11 XUPTIM: XWD 15,12 XDVLST: XWD 14,11 XVIRTL: XWD 4,13 XCORMX: XWD 10,12 XSTATS: XWD 17,11 QTAB: SIXBIT /RN/ SIXBIT /WS/ SIXBIT /TS/ SIXBIT /ST/ SIXBIT /AU/ SIXBIT /MQ/ SIXBIT /DA/ SIXBIT /DT/ SIXBIT /DC/ SIXBIT /MT/ SIXBIT /IO/ SIXBIT /TT/ SIXBIT /SL/ SIXBIT /NL/ SIXBIT /^C/ BLOCK 1 MONTAB: ASCII /-Jan-/ ASCII /-Feb-/ ASCII /-Mar-/ ASCII /-Apr-/ ASCII /-May-/ ASCII /-Jun-/ ASCII /-Jul-/ ASCII /-Aug-/ ASCII /-Sep-/ ASCII /-Oct-/ ASCII /-Nov-/ ASCII /-Dec-/ TABPTR: XWD SIGN+0,.STS XWD SIGN+2,.PPN XWD 4,.TIM XWD 14,.SGN XWD SIGN+3,.PRG XWD SIGN+1,.ADR XWD SIGN+7,.SWP NTAB==.-TABPTR XWD 0,.SEGCT NSEGT==6 NJOBT==7 .DDB: XWD J,0 .TTY: XWD J,0 ;L .STS: XWD J,0 .PPN: XWD J,0 ;L+H .TIM: XWD J,0 ;L .SGN: XWD J,0 ;L .PRG: XWD J,0 ;L+H .ADR: XWD J,0 ;L+H .SWP: XWD J,0 ;L+H .SEGCT: XWD A,0 ;H ;TEMPORARIES PDP: XWD -20,. BLOCK 21 TYOB: BLOCK 3 JOBN: 0 SEGN: 0 BOTH: 0 CORMAX: 0 VIRTAL: 0 SEGPTR: 0 CORUSE: 0 MTTY: 0 FREE: 0 ZERLOW: 0 ZERHGH: 0 JOBTTY: 0 DATE: 0 TCKSEC: JIFSEC STATES: 0 XLIST ;AVOID PRINTING LITERALS LIT LIST SYSEND: END SYSTAT