mirror of
https://github.com/PDP-10/its.git
synced 2026-01-28 04:57:43 +00:00
- Added support for METER
- Also fixed build script after initializing COMSAT (KLH10 only) to kill COMSAT job.
This commit is contained in:
committed by
Lars Brinkhoff
parent
a305421ff8
commit
9ed7bf3035
709
src/syseng/meter.18
Normal file
709
src/syseng/meter.18
Normal file
@@ -0,0 +1,709 @@
|
||||
; -*-MIDAS-*-
|
||||
TITLE METER - ITS SYSTEM METERING - DAM OCT. 19, 1974
|
||||
|
||||
.INSRT SYSENG;CALRET >
|
||||
|
||||
TTYIF==1 ;CHAR TYPED INTERRUPT
|
||||
BSCLK==10000 ;SLOW-CLOCK INTERRUPT (1/2 SEC)
|
||||
OPTINT==4000 ;NEW STYLE INTERRUPTS
|
||||
|
||||
;;; DEFINE MACROS SO THAT SYSTEM VARIABLES ACCESSED
|
||||
;;; THROUGH ABS PAGES CAN BE REFERENCED IN A NATURAL WAY
|
||||
|
||||
DEFINE CONC A,B
|
||||
A!B!TERMIN
|
||||
|
||||
DEFINE ABSREF SYMS
|
||||
DEFINE ABSTAB
|
||||
IRPW SYM,,[SYMS]
|
||||
IFSE [SYM]----, IMMEDS: ;FROM HERE DOWN ARE NOT ADDRESSES
|
||||
.ELSE [ SQUOZE 0,SYM
|
||||
CONC ABSRF",\.IRPCNT,ABS
|
||||
CONC [EXPUNGE ABSRF"]\.IRPCNT,ABS
|
||||
]
|
||||
TERMIN
|
||||
TERMIN
|
||||
IRPW SYM,,[SYMS]
|
||||
IFSN [SYM]----, ABSRF. SYM,\.IRPCNT
|
||||
TERMIN
|
||||
TERMIN
|
||||
|
||||
DEFINE ABSRF. SYM,CT
|
||||
ABSRF"!CT!ABS==0
|
||||
IF1,[DEFINE SYM ?MOD
|
||||
(MOD)[.,,ABSRF"!CT!ABS]TERMIN
|
||||
]
|
||||
IF2,[DEFINE SYM ?MOD
|
||||
(MOD)<ZZZ==ABSRF"!CT!ABS ? ABSRF"!CT!ABS==[.,,ZZZ] ? ZZZ>TERMIN
|
||||
]
|
||||
TERMIN
|
||||
|
||||
.BEGIN ABSRF ;PLACE TO KEEP NNNABS SYMBOLS
|
||||
.END
|
||||
|
||||
DEFINE INFORM A,B,C,D,E
|
||||
PRINTX/A B C D E
|
||||
/
|
||||
TERMIN
|
||||
|
||||
;;; FORMAT OF DISPLAY
|
||||
|
||||
FORMAT: ASCIZ\###% User Time,###% Idle,###% Overhead,###% Lost
|
||||
### Processes,###% active last 15 seconds
|
||||
###% Processes running,###% Exec run,###% Blocked,###% Stopped
|
||||
ATB disk i/o ##.###: read ##.###, write ##.###, PgIn ##.###, PgOut ##.###
|
||||
TTY #### ch/s in, #### ch/s out (estimated)
|
||||
ATB Sched ##.###, ATB PCLSR ##.###, ATB swap out ##.###
|
||||
ATB page faults ##.###:###% in,###% coming,###% out,###% going
|
||||
\
|
||||
|
||||
ABSREF [TIME ;TIME COUNTER, 30'THS OF A SECOND
|
||||
NULTM1 ;USECS USED BY NULL JOB
|
||||
NULTM3 ;SECONDS PART OF THAT
|
||||
USRTM1 ;USECS USED BY USERS OVER 4
|
||||
USRTIM ;SECONDS PART OF THAT
|
||||
LOSTM1 ;4USECS LOST
|
||||
LOSTIM ;SECONDS OF LOST TIME (ALL OTHERWISE RUNNABLE JOBS WAITING FOR PAGES)
|
||||
NWXFR ;NUMBER OF NON-SWAP DISK WRITES
|
||||
NRXFR ;NUMBER OF NON-SWAP DISK READS
|
||||
NSWXFR ;NUMBER OF SWAP DISK WRITES
|
||||
NSRXFR ;NUMBER OF SWAP DISK READS
|
||||
NSKED ;NUMBER OF TIMES INTO SCHEDULER
|
||||
NPCLSR ;NUMBER OF ATTEMPTS TO PCLSR
|
||||
NSOUSR ;NUMBER OF ATTEMPTS TO SWAP OUT A USER
|
||||
NSOPGS ;NUMBER OF SEARCHES FOR A PAGE TO SW OUT
|
||||
NPGFLT ;NUMBER OF PAGE FAULTS
|
||||
NRPI ;.. PAGE ALREADY IN
|
||||
NRPCI ;.. PAGE COMING IN
|
||||
NRPO ;.. PAGE OUT
|
||||
NRPGO ;.. PAGE GOING OUT
|
||||
TIIP ;TYI BUF IN PTR
|
||||
TOOP ;TYO BUF OUT PTR
|
||||
TOIP
|
||||
USRHI ;HIGHEST LOC OF USER VARS
|
||||
UPC ;010000,, IS USER MODE BIT
|
||||
USTP ;USER STOP WORD
|
||||
FLSINS ;USER BLOCK WORD
|
||||
UNAME ;0 MEANS IDLE SET OF VARS
|
||||
LUBTM ;TIME USER LAST UNBLOCKED
|
||||
----
|
||||
TIBS ;TYI BYTES/BUFFER
|
||||
TOBS ;TYO BYTES/BUFFER
|
||||
LUBLK ;(CONST) LENGTH OF USER BLOCK
|
||||
]
|
||||
|
||||
%TOOVR==1000 ;TTY OVERSTRIKE CAPABILITY
|
||||
%TOERS==40000 ;TTY SELECTIVE ERASE CAPABILITY
|
||||
%TOMVU==400 ;TTY RANDOM MOTION CAPABILITY
|
||||
;;; DATA AREAS
|
||||
|
||||
OTIME: 0 ;TIME PREVIOUSLY WOKE UP
|
||||
OUSRTM: 0 ;OLD VALUE OF USRTM1 (WELL,...
|
||||
ONULTM: 0 ;OLD VALUE OF NULTM1 SEE THE CODE
|
||||
OLOSTM: 0 ;OLD VALUE OF LOSTM1 ...)
|
||||
ONWXFR: 0 ;.. NWXFR
|
||||
ONRXFR: 0 ;.. NRXFR
|
||||
ONSWXF: 0 ;.. NSWXFR
|
||||
ONSRXF: 0 ;.. NSRXFR
|
||||
OXFR: 0 ;.. NXFR (WELL, NOT REALLY)
|
||||
OTOOP: BLOCK 100 ;OLD TOOP VALUES FOR TTYS
|
||||
TOCT: 0 ;COUNT OF CHARS OUTPUT ON TTYS
|
||||
OTOCT: 0 ;OLD VALUE OF TOCT
|
||||
OTIIP: BLOCK 100 ;OLD TIIP VALUE FOR TTYS
|
||||
TICT: 0 ;COUNT OF CHARS INPUT ON TTYS
|
||||
OTICT: 0 ;OLD VALUE OF ..
|
||||
ONSKED: 0 ;OLD VALUE OF NSKED
|
||||
ONPCLSR:0 ;.. NPCLSR
|
||||
ONSOUSR:0 ;.. NSOUSR
|
||||
ONPGFLT:0 ;.. NPGFLT
|
||||
ONRPI: 0 ;.. NRPI
|
||||
ONRPCI: 0 ;.. NRPCI
|
||||
ONRPO: 0 ;.. NRPO
|
||||
ONRPGO: 0 ;.. NRPGO
|
||||
|
||||
|
||||
TTYOPT: 0 ;TTYOPT WORD GETS PUT HERE
|
||||
|
||||
MEMHOL: ASCIZ\WARNING: THERE IS A HOLE IN LOW MEMORY
|
||||
\
|
||||
|
||||
NO340: ASCIZ\CAN'T GET 340
|
||||
\
|
||||
|
||||
BLETCH: ASCIZ\
|
||||
WRONG SYSTEM VERSION - REPURIFY
|
||||
\
|
||||
|
||||
TYIC==2 ;TTY INPUT CHANNEL
|
||||
TYOC==1 ;TTY OUTPUT CHANNEL
|
||||
TYO=<.IOT TYOC,> ;INSTRUCTION TO OUTPUT A CHAR
|
||||
;;; ROUTINE TO OUTPUT A NUMBER IN FORMAT (CALL IN SAME ORDER
|
||||
;;; AS THEY APPEAR IN STRING ABOVE)
|
||||
|
||||
PUTNUM: PROCEDURE N
|
||||
|
||||
REGISTER W,W1,TTOPT,CH,NOSUP
|
||||
REGISTER NDIGS ;NUMBER OF DIGITS
|
||||
REGISTER NZDIGS ;.. NON ZERO SUPPRESSED
|
||||
|
||||
MOVE TTOPT, TTYOPT
|
||||
|
||||
; SCAN DOWN TO NEXT FIELD
|
||||
|
||||
MOVEI W, 7 ;LEFT MARGIN CONST MINUS 1
|
||||
NXTFLD: ILDB CH, FORMPT
|
||||
JUMPE CH, [.VALUE] ;TOO MANY NUMBERS FOR FORMAT
|
||||
CAIN CH, "#
|
||||
JRST GOTFLD ;NUMBER SIGN BEGINS FIELD
|
||||
TLNN TTOPT, %TOERS
|
||||
TYO CH
|
||||
CAIN CH, 15
|
||||
MOVEM W, HPOS ;CARRIAGE RETURN
|
||||
CAIN CH, 12
|
||||
AOSA VPOS ;LINE FEED
|
||||
AOS HPOS ;PRINTING CH - INCR HPOS
|
||||
JRST NXTFLD
|
||||
|
||||
; GOT BEGINNING OF FIELD, NOW ANALYZE IT --> NDIGS, NZDIGS
|
||||
|
||||
GOTFLD: IF [TLNN TTOPT,%TOERS][
|
||||
TYO [^P] ;SET POSITION
|
||||
TYO ["V]
|
||||
TYO VPOS
|
||||
TYO [^P]
|
||||
TYO ["H]
|
||||
TYO HPOS
|
||||
]
|
||||
SETZB NDIGS, NZDIGS
|
||||
GOTFL0: CAIN CH, ". ;PERIOD STOPS ZERO SUPPRESS
|
||||
SOJA NDIGS, GOTFL1
|
||||
CAIE CH, "# ;NUMBER INDICATES A DIGIT
|
||||
JRST GOTFLX
|
||||
SKIPE NZDIGS ;IF THIS NOT ZERO SUPPRESSED
|
||||
GOTFL1: ADDI NZDIGS, 1 ; THEN COUNT NZSUP DIGS
|
||||
AOS HPOS
|
||||
MOVE W1, FORMPT
|
||||
ILDB CH, FORMPT ;CHECK NEXT CHAR
|
||||
AOJA NDIGS, GOTFL0
|
||||
|
||||
GOTFLX: MOVEM W1, FORMPT ;DON'T COUNT TERMINATING CHAR
|
||||
SKIPN NZDIGS ;ENSURE AT LEAST 1 DIGIT
|
||||
MOVEI NZDIGS, 1
|
||||
SETZM NOSUP ;flag turned on after first nonzero digit
|
||||
|
||||
; NOW DO NUMBER CONVERSION (UNLESS SAME AS BEFORE)
|
||||
|
||||
MOVE W, N
|
||||
AOS NUMPT
|
||||
IF [TLNE TTOPT,%TOERS ;SUPPRESS IF NUMBER SAME & DISPLAY
|
||||
CAME W, @NUMPT][
|
||||
RETURN ;SAME AS BEFORE
|
||||
]
|
||||
MOVEM W, @NUMPT
|
||||
|
||||
NUMLP: IDIV W, TENPOW(NDIGS) ;GET A DIGIT IN W, REM IN W1
|
||||
JUMPN NOSUP, .+5
|
||||
JUMPN W, .+3 ;SEE IF SHOULD BLANK OUT
|
||||
CAMLE NDIGS, NZDIGS ;..
|
||||
SKIPA W, [-20] ;YES
|
||||
SETOM NOSUP ;have digit don't blank zeroes any more
|
||||
ADDI W, "0 ;MAKE ASCII CHAR
|
||||
IF [ TLNE TTOPT, %TOERS
|
||||
TLNN TTOPT, %TOOVR ][;IF NECESSARY, ERASE PREV CHAR
|
||||
TYO [^P]
|
||||
TYO ["K]
|
||||
]
|
||||
TYO W
|
||||
IF [CAIE NDIGS,1 ;IF NECESSARY, SKIP OVER PERIOD
|
||||
CAME NDIGS, NZDIGS][
|
||||
IF [ TLNE TTOPT, %TOERS
|
||||
TLNN TTOPT, %TOOVR ][
|
||||
TYO [^P]
|
||||
TYO ["F] ]
|
||||
ELSE [ TYO [".] ]
|
||||
]
|
||||
MOVE W, W1 ;PICK UP REMAINDER
|
||||
SOJG NDIGS, NUMLP ;DO ANOTHER DIGIT
|
||||
|
||||
PTNMXX: RETURN
|
||||
|
||||
HPOS: 0 ;HORIZONTAL POSITION
|
||||
VPOS: 0 ;VERTICAL POSITION
|
||||
FORMPT: 0 ;B.P. TO FORMAT STRING
|
||||
NUMPT: 0 ;PTR TO NUMBUF
|
||||
NUMBUF: REPEAT 30., -1 ;USED TO AVOID REDISPLAYING IF UNCHANGED
|
||||
|
||||
TENPOW: -1 ? 1 ? 10. ? 100. ? 1000. ? 10000. ? 100000.
|
||||
1000000. ? 10000000. ? 100000000.
|
||||
|
||||
|
||||
;;; ENTRY PUTNUM"RESET GETS SET FOR ANOTHER SET OF FIGURES
|
||||
|
||||
RESET: ENTRY
|
||||
|
||||
MOVE TT, [440700,,FORMAT] ;INIT VARS
|
||||
MOVEM TT, FORMPT
|
||||
MOVEI TT, 10 ;TOP OF PAGE LOGICALLY
|
||||
MOVEM TT, HPOS
|
||||
MOVEM TT, VPOS
|
||||
IF [SKIPE TT, TTYOPT][
|
||||
TYO [^L]] ;340
|
||||
ELSE [ TYO [^P] ;AND PHYSICALLY
|
||||
IF [TLNN TT, %TOERS][
|
||||
TYO ["T]] ;OVER WRITE
|
||||
ELSE [ TYO ["C] ] ;NEW THING ENTIRELY
|
||||
]
|
||||
MOVEI TT, NUMBUF-1 ;INIT NUMPT
|
||||
MOVEM TT, NUMPT
|
||||
RETURN
|
||||
|
||||
;;; PUTNUM"FINISH FINISHES IT OFF
|
||||
|
||||
FINISH: ENTRY
|
||||
|
||||
MOVE TT, TTYOPT
|
||||
TLNE TT, %TOERS ;PRINTING TTY'S ONLY
|
||||
RETURN
|
||||
FINIS0: ILDB CH, FORMPT
|
||||
JUMPE CH, .RETN.
|
||||
TYO CH
|
||||
JRST FINIS0
|
||||
|
||||
.END
|
||||
;;; Routine to meter TTYs, called frequently
|
||||
|
||||
CHKTTY: PROCEDURE
|
||||
|
||||
REGISTER I ;TTY NUMBER
|
||||
REGISTER A,B,FROB,C ;TEMPS
|
||||
|
||||
MOVEI I, TOOP ;COMPUTE # TTYS
|
||||
SUBI I, TOIP ;..
|
||||
NEXTTY: SOJLE I, LASTTY ;JUMP IF NO MORE TTYS
|
||||
|
||||
; COUNT CHARACTERS OUTPUT
|
||||
|
||||
MOVE A, TOOP(I)
|
||||
LDB B, [360600,,A] ;POS FIELD
|
||||
SUBI B, 44
|
||||
LDB C, [300600,,A] ;SIZE FIELD
|
||||
IDIV B, C ;B := - NUM OF CHARS (BITS)
|
||||
MOVE C, CHPRWD(C) ; CONVERT CHAR SIZE TO CHARS PER WORD
|
||||
IMULI C, (A) ;C := NUM OF CHARS (WORDS)
|
||||
SUB C, B ;C := NUM OF CHARS
|
||||
MOVE A, C
|
||||
EXCH C, OTOOP(I) ;COMPARE AGAINST OLD READING
|
||||
SUB A, C ;TAKE DIFFERENCE
|
||||
SKIPGE A ;SKIP IF NO BUFFER WRAP AROUND
|
||||
ADDI A, TOBS ;WRAP AROUND ADD BUFFER SIZE
|
||||
ADDM A, TOCT ;ACCUM TOTAL CHARS OUTPUT
|
||||
|
||||
;COUNT CHARACTERS INPUT
|
||||
|
||||
MOVE A, TIIP(I)
|
||||
LDB B, [360600,,A] ;POS FIELD
|
||||
SUBI B, 44
|
||||
LDB C, [300600,,A] ;SIZE FIELD
|
||||
IDIV B, C ;B := - NUM OF CHARS (BITS)
|
||||
MOVE C, CHPRWD(C) ; CONVERT CHAR SIZE TO CHARS PER WORD
|
||||
IMULI C, (A) ;C := NUM OF CHARS (WORDS)
|
||||
SUB C, B ;C := NUM OF CHARS
|
||||
MOVE A, C
|
||||
EXCH C, OTIIP(I) ;COMPARE AGAINST OLD READING
|
||||
SUB A, C ;TAKE DIFFERENCE
|
||||
SKIPGE A ;SKIP IF NO BUFFER WRAP AROUND
|
||||
ADDI A, TIBS ;WRAP AROUND ADD BUFFER SIZE
|
||||
ADDM A, TICT ;ACCUM TOTAL CHARS OUTPUT
|
||||
|
||||
JRST NEXTTY ;GO DO ANOTHER TTY
|
||||
|
||||
LASTTY: RETURN
|
||||
|
||||
CHPRWD: 36. ;CHARS PER WORD, INDEXED BY CHAR SIZE
|
||||
REPEAT 35., 36./<1+.RPCNT>
|
||||
|
||||
.END
|
||||
;;; MAIN PROGRAM
|
||||
|
||||
PROGRAM METER
|
||||
|
||||
REGISTER A,B,C,MS
|
||||
|
||||
.SUSET [.RJNAME,,A] ;SEE IF SHOULD USE 340
|
||||
SETZM DIXONSLOSS
|
||||
IF [ CAME A,['SMETER] ][ SETOM DIXONSLOSS ]
|
||||
IF [ CAME A,['METERD] ][ ;YES, SET UP
|
||||
.OPEN TYOC, [.UAO,,'DIS]
|
||||
JRST [ CALL TYPE,NO340
|
||||
JRST KILL
|
||||
]
|
||||
SETZM TTYOPT ;ABSOLUTELY NO FEATURES
|
||||
.VALUE [ASCIZ/:PROCED /]
|
||||
]
|
||||
ELSE [ ;NORMALLY USE TTY
|
||||
.OPEN TYIC, [.UAI,,'TTY] ;JUST SO CAN GET INTERRUPTS
|
||||
.VALUE
|
||||
.OPEN TYOC, [20+.UAO,,'TTY]
|
||||
.VALUE
|
||||
.CALL CNSGET,[#TYOC][A,A,A,A,TTYOPT]
|
||||
.VALUE
|
||||
]
|
||||
|
||||
CALL RITUAL ;ASSURANCE OF PURITY
|
||||
|
||||
MOVE A, [-11.,,INTLST] ;set up interrupts
|
||||
MOVEM A, 42
|
||||
.SUSET [.ROPTION,,A]
|
||||
TLO A, OPTINT
|
||||
.SUSET [.SOPTION,,A]
|
||||
.SUSET [.SMASK,,[TTYIF+BSCLK]]
|
||||
|
||||
IF [SKIPE TTYOPT][TYO [^L]]
|
||||
ELSE [ TYO [^P] ;DISPLAY FIXED STUFF
|
||||
TYO ["C]
|
||||
]
|
||||
MOVE TT, TTYOPT
|
||||
IF [ TLNN TT, %TOERS ][ CALL TYPE,FORMAT ]
|
||||
|
||||
; MACRO TO PICK UP A VAR, UPDATE OLD COPY, PUT DIFFERENCE IN T
|
||||
|
||||
DEFINE DERIV REG,VAR
|
||||
MOVE REG, VAR
|
||||
MOVE TT, REG
|
||||
EXCH TT, O!VAR
|
||||
SUB REG, TT
|
||||
TERMIN
|
||||
|
||||
; MACRO TO CONVERT NUMBER IN REG TO % OF VAR, LEAVE IN REG
|
||||
|
||||
DEFINE PERCENT REG,VAR
|
||||
IMULI REG, 100.
|
||||
IDIV REG, VAR
|
||||
TERMIN
|
||||
|
||||
|
||||
;;; MAIN DISPLAY LOOP
|
||||
|
||||
LOCAL ELAPSED ;ELAPSED TIME SINCE LAST CYCLE
|
||||
; IN MILLISECONDS
|
||||
|
||||
|
||||
LOOP: CALL PUTNUM"RESET ;GET SET FOR DISPLAY CYCLE
|
||||
|
||||
DERIV T,TIME ;COMPUTE TIME SINCE LAST CYCLE
|
||||
IMULI T, 33. ;CONVERT 30THS TO MILLISECONDS
|
||||
MOVEM T, ELAPSED ;..
|
||||
|
||||
; DERIV T,USRTM1 ;PUT % USER TIME IN A
|
||||
MOVE T, USRTIM ;ALLOWING FOR VARIOUS FROBS
|
||||
IMULI T, 1000. ;CONVERT TO MILLISECONDS
|
||||
MOVE T0, USRTM1 ;AND GET CURRENT STUFF
|
||||
IDIVI T0, 250. ;ALSO IN MILLISECONDS
|
||||
ADD T, T0
|
||||
MOVE TT, T
|
||||
EXCH TT, OUSRTM1
|
||||
SUB T, TT ;END FAKE DERIV EXPANSION
|
||||
PERCENT T, ELAPSED
|
||||
MOVE A, T
|
||||
; DERIV T,NULTM1 ;PUT % NULL TIME IN B
|
||||
MOVE T0, NULTM1 ;AGAIN ALLOWING FOR FROBS
|
||||
IDIVI T0, 250. ;AND CONVERTING TO MILLISEC
|
||||
MOVE T, NULTM3
|
||||
IMULI T, 1000.
|
||||
ADD T, T0
|
||||
MOVE TT, T
|
||||
EXCH TT, ONULTM
|
||||
SUB T, TT ;END FAKE EXPANSION
|
||||
PERCENT T, ELAPSED
|
||||
MOVE B, T
|
||||
; DERIV T,LOSTM1 ;PUT % LOST TIME IN B
|
||||
MOVE T0, LOSTM1 ;AGAIN ALLOWING FOR FROBS
|
||||
IDIVI T0, 250. ;AND CONVERTING TO MILLISEC
|
||||
MOVE T, LOSTIM
|
||||
IMULI T, 1000.
|
||||
ADD T, T0
|
||||
MOVE TT, T
|
||||
EXCH TT, OLOSTM
|
||||
SUB T, TT ;END FAKE EXPANSION
|
||||
PERCENT T, ELAPSED
|
||||
MOVE C, T
|
||||
CALL PUTNUM,A
|
||||
CALL PUTNUM,B
|
||||
MOVNS B ;COMPUTE OVERHEAD
|
||||
ADDI B, 100.
|
||||
SUB B, A
|
||||
CALL PUTNUM,B
|
||||
CALL PUTNUM,C
|
||||
|
||||
; AT LAST, THAT CRUFT IS OVER WITH!
|
||||
; SCAN USERS
|
||||
|
||||
REGISTER U ;USER INDEX
|
||||
IRP Z,,[TOTU,ACTU,RUNU,ERUNU,BLOCKU,STOPU]
|
||||
LOCAL Z ;BUCKETS
|
||||
SETZM Z
|
||||
TERMIN
|
||||
|
||||
SETZM U
|
||||
;CAN'T USE UNTIL MACRO WITH ABSREF MACROS.....WAAAH - ???
|
||||
|
||||
ULOOP: ;LOOP THROUGH ALL USERS
|
||||
SKIPN UNAME(U)
|
||||
JRST ULOOP0
|
||||
AOS TOTU
|
||||
MOVE T, LUBTM(U) ;SEE IF RECENTLY ACTIVE
|
||||
ADDI T, 15.*30.
|
||||
CAML T, TIME
|
||||
AOS ACTU ;YES
|
||||
|
||||
SKIPN USTP(U)
|
||||
JRST .+3
|
||||
AOS STOPU ;STOPPED
|
||||
JRST ULOOP0
|
||||
|
||||
SKIPN FLSINS(U)
|
||||
JRST .+3
|
||||
AOS BLOCKU ;BLOCKED
|
||||
JRST ULOOP0
|
||||
|
||||
MOVE T, UPC(U)
|
||||
TLNE T, 010000
|
||||
JRST .+3
|
||||
AOS ERUNU ;RUNNING IN EXEC MODE
|
||||
JRST ULOOP0
|
||||
|
||||
AOS RUNU
|
||||
|
||||
ULOOP0: ADDI U, LUBLK
|
||||
CAMGE U, USRHI
|
||||
JRST ULOOP
|
||||
|
||||
CALL PUTNUM,TOTU
|
||||
IRP Z,,[ACTU, RUNU, ERUNU, BLOCKU, STOPU]
|
||||
MOVE A, Z
|
||||
PERCENT A, TOTU
|
||||
CALL PUTNUM,A
|
||||
TERMIN
|
||||
|
||||
; DISK STATISTICS
|
||||
|
||||
MOVE MS, ELAPSED ;SET UP FOR IDIVM'S
|
||||
|
||||
MOVE A,NRXFR
|
||||
ADD A,NWXFR
|
||||
ADD A,NSRXFR
|
||||
ADD A,NSWXFR
|
||||
MOVE TT, A
|
||||
EXCH TT, OXFR
|
||||
SUB A, TT
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
|
||||
DERIV A,NRXFR
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
DERIV A,NWXFR
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
DERIV A,NSRXFR
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
DERIV A,NSWXFR
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
|
||||
; TTY STATISTICS
|
||||
|
||||
DERIV A,TICT ;TTY CHARS/SECOND
|
||||
IMULI A, 1000.
|
||||
IDIV A, ELAPSED
|
||||
CALL PUTNUM,A
|
||||
DERIV A,TOCT
|
||||
IMULI A, 1000.
|
||||
IDIV A, ELAPSED
|
||||
CALL PUTNUM,A
|
||||
|
||||
; RANDOM SCHED ATB'S - MILLISECONDS
|
||||
|
||||
DERIV A,NSKED
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
DERIV A,NPCLSR
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
DERIV A,NSOUSR
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
|
||||
; PAGE FAULT DATA
|
||||
|
||||
DERIV A,NPGFLT ;ATB P F
|
||||
MOVE C, A ;TOTAL PF SAVED FOR BELOW
|
||||
IDIVM MS, A
|
||||
CALL PUTNUM,A
|
||||
IRP PF,,[NRPI,NRPCI,NRPO,NRPGO]
|
||||
DERIV A,PF
|
||||
IMULI A, 100. ;PERCENT OF THIS TYPE
|
||||
IDIV A, C ;RELATIVE TO TOTAL
|
||||
CALL PUTNUM,A
|
||||
TERMIN
|
||||
|
||||
CALL PUTNUM"FINISH
|
||||
|
||||
IF [ SKIPE TT, TTYOPT ;IF DISPLAY BUT NOT 340
|
||||
TLNN TT, %TOERS ][
|
||||
TYO [^P]
|
||||
TYO ["Z]
|
||||
TYO [^P] ;leave line for :KILL message
|
||||
TYO ["U]
|
||||
TYO [^P] ;leave line for :KILL message
|
||||
TYO ["U]
|
||||
TYO [^P] ;leave line for **MORE** OR RATHER TO AVOID IT.
|
||||
TYO ["U]
|
||||
]
|
||||
SKIPE TTYOPT ;DON'T LISTEN IF 340
|
||||
.LISTEN A,
|
||||
IF [ SKIPN DIXONSLOSS ][ MOVEI A,60.*60. ] ;WHOLE MINUTE
|
||||
ELSE [ MOVEI A, 150. ] ;SLEEP 5 SEC
|
||||
.SLEEP A,
|
||||
SKIPE A,TTYOPT ;DON'T LISTEN IF 340
|
||||
.LISTEN A,
|
||||
JUMPE A, LOOP
|
||||
|
||||
KILL: .BREAK 16, 040000
|
||||
|
||||
DIXONSLOSS: 0 ;FLAG FOR SLOW REPEAT (FOR GARY DIXON)
|
||||
|
||||
;;; Interrupt Handlers
|
||||
|
||||
INTLST: P
|
||||
TTYIF ? 0 ;CHARACTER TYPED
|
||||
TTYIF ? 0 ? KILL ; STOP JOB
|
||||
|
||||
BSCLK ? 0 ;1/2 SEC INT CHECK TTYS
|
||||
BSCLK ? 0 ? .+1
|
||||
|
||||
PUSH P, T
|
||||
PUSH P, TT
|
||||
PUSH P, T0
|
||||
PUSH P, T1
|
||||
PUSH P, .PF.
|
||||
CALL CHKTTY
|
||||
POP P, .PF.
|
||||
POP P, T1
|
||||
POP P, T0
|
||||
POP P, TT
|
||||
POP P, T
|
||||
.CALL DISMIS,[P]
|
||||
|
||||
|
||||
.END
|
||||
;;; ROUTINE TO TYPE A CONSTANT STRING
|
||||
|
||||
TYPE: PROCEDURE STRING
|
||||
|
||||
REGISTER PT,CH
|
||||
|
||||
MOVEI PT, STRING ;SET UP B.P. TO STRING
|
||||
TLOA PT, 440700 ;..
|
||||
LOOP: TYO CH
|
||||
ILDB CH, PT ;GET NEXT CHAR
|
||||
JUMPN CH, LOOP ;AND IF NOT DONE, TYPE IT
|
||||
RETURN
|
||||
.END
|
||||
;;; PURIFICATION RITUAL
|
||||
|
||||
OITSVRS:0 ;ITS VERSION PURIFIED FOR
|
||||
OUSRSTG:0 ;EXTRA Check
|
||||
|
||||
RITUAL: PROCEDURE
|
||||
|
||||
.RSYSID TT,
|
||||
MOVE T, [SQUOZE 0,USRSTG] ;SEE IF SYSTEM CHANGED
|
||||
.EVAL T,
|
||||
JFCL
|
||||
CAMN TT, OITSVRS
|
||||
CAME T, OUSRSTG
|
||||
JRST NOGOOD
|
||||
RETURN
|
||||
|
||||
NOGOOD: CALL PURIFY ;WRONG SYS VERSION OR NOT PURE
|
||||
RETURN ;YET SO REPURIFY
|
||||
|
||||
.END
|
||||
|
||||
ABSTB1: ABSTAB
|
||||
ABSTB2:
|
||||
|
||||
PURIFY: PROCEDURE
|
||||
|
||||
REGISTER I,L,V,LIM
|
||||
|
||||
.VALUE [ASCIZ\:New system version; must repurify.
|
||||
Take paws off keys and wait.
|
||||
|
||||
p\]
|
||||
MOVEI LIM, IMMEDS-ABSTB1 ;LIMIT ON REMAPPABLENESS
|
||||
MOVSI I, <ABSTB1-ABSTB2>/2 ;SCAN ABSTAB
|
||||
EVLOOP: MOVE V, ABSTB1(I) ;GET SYMBOL
|
||||
.EVAL V, ;EVALUATE IT
|
||||
.VALUE ;NOT THERE???
|
||||
CAIG LIM, (I) ;SKIP FOLLOWING CODE
|
||||
JRST EVLP00 ; IF IMMEDIATE SYMBOL
|
||||
CAIGE V, REMAPT ;REMAP LOW CORE
|
||||
SUBI V, REMAPT ;INTO HIGH CORE
|
||||
EVLP00: ADDI I, 1
|
||||
MOVE TT, ABSTB1(I) ;FOLLOW PATCH LIST
|
||||
PLOOP: JUMPE TT,EVLPNX ;JUMP IF END OF LIST
|
||||
MOVE L,TT
|
||||
HLRZ TT,(L) ;LOC TO PATCH
|
||||
HRRM V,(TT) ;PATCH IT
|
||||
HRRZ TT,(L) ;LINK TO NEXT
|
||||
JRST PLOOP ;AND TRY AGAIN
|
||||
|
||||
EVLPNX:AOBJN I, EVLOOP ;NEXT SYMBOL
|
||||
|
||||
; HAVING PATCHED, SET UP PAGE TABLE
|
||||
; FOR NOW, WE DON'T ACTUALLY PURIFY ANY PAGES...
|
||||
|
||||
.RSYSID V, ;REMEMBER ITS VERSION
|
||||
MOVEM V, OITSVRS
|
||||
MOVE V, [SQUOZE 0,USRSTG] ;AND A KLUDGEY MACHINE CHECK
|
||||
.EVAL V,
|
||||
.VALUE
|
||||
MOVEM V, OUSRSTG
|
||||
|
||||
SETZM V
|
||||
MOVEI TT, REMAPT_-10. ;GET ABS PAGES
|
||||
HRLI TT, <REMAPT-400000>_-10. ;FROM 0 TO 400000
|
||||
MOVE T, TT
|
||||
GETMOR: .CALL CORBLK,[#210000,#-1,TT,#400000,T]
|
||||
JRST .+2 ;ERROR RETURN
|
||||
JRST GOTIT
|
||||
.SUSET [.RBCHN,,V] ;FIND OUT WHAT LOST
|
||||
.CALL STATUS,V,V ;GET ERROR CODE
|
||||
.VALUE
|
||||
LDB V, [270600,,V] ;..
|
||||
CAIE V, 32 ;CAN'T GET THAT ACCESS
|
||||
.VALUE ;NO - UNCLEAR
|
||||
ADD TT, [40,,40] ;YES - BITING MD10'S HAVE A 32K HOLE!
|
||||
MOVE T, TT
|
||||
JUMPL TT, GETMOR
|
||||
|
||||
GOTIT: JUMPE V,GOTIT1
|
||||
CALL TYPE,MEMHOL
|
||||
GOTIT1: MOVEI TT, <1000000-REMAPT>_-10. ;DO REMAPPAGE
|
||||
HRLI TT, -<REMAPT_-10.>
|
||||
SETZ T,
|
||||
.CALL CORBLK,[#210000,#-1,TT,#400000,T]
|
||||
.VALUE
|
||||
.VALUE [ASCIZ\:PDUMP SYS1;TS METER
|
||||
P\]
|
||||
RETURN
|
||||
.END PURIFY
|
||||
|
||||
CONSTANTS
|
||||
|
||||
REMAPT=<.+1777>&776000 ;FIRST NON USED PAGE
|
||||
|
||||
END METER
|
||||
Reference in New Issue
Block a user