X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/blobdiff_plain/e6cdcf9f28fd4956d9c22090b705d9d8396b5cde..5d24e9e035e495646b261b56872a3e31c2ed244c:/src/systat.mac diff --git a/src/systat.mac b/src/systat.mac new file mode 100644 index 0000000..59cb521 --- /dev/null +++ b/src/systat.mac @@ -0,0 +1,661 @@ + 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