mirror of
https://github.com/PDP-10/its.git
synced 2026-04-25 20:01:40 +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
@@ -111,6 +111,7 @@ from scratch.
|
|||||||
- REATTA, reattaches disowned jobs to terminal
|
- REATTA, reattaches disowned jobs to terminal
|
||||||
- TIMOON, displays the time and phase of the moon
|
- TIMOON, displays the time and phase of the moon
|
||||||
- SYSMSG, displays system messages
|
- SYSMSG, displays system messages
|
||||||
|
- METER, displays system metering information
|
||||||
|
|
||||||
6. A brand new host table is built from the host table source and
|
6. A brand new host table is built from the host table source and
|
||||||
installed into SYSBIN; HOSTS3 > using H3MAKE.
|
installed into SYSBIN; HOSTS3 > using H3MAKE.
|
||||||
|
|||||||
@@ -644,6 +644,10 @@ expect ":KILL"
|
|||||||
respond "*" ":midas sys1;ts sysmsg_sysen1;sysmsg\r"
|
respond "*" ":midas sys1;ts sysmsg_sysen1;sysmsg\r"
|
||||||
expect ":KILL"
|
expect ":KILL"
|
||||||
|
|
||||||
|
# meter
|
||||||
|
respond "*" ":midas sys1;ts meter_syseng;meter\r"
|
||||||
|
expect ":KILL"
|
||||||
|
|
||||||
# ndskdmp tape
|
# ndskdmp tape
|
||||||
|
|
||||||
respond "*" ":link kshack;good ram,.;ram ram\r"
|
respond "*" ":link kshack;good ram,.;ram ram\r"
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ proc initialize_comsat {} {
|
|||||||
respond "*" ":load .mail.;comsat launch\r"
|
respond "*" ":load .mail.;comsat launch\r"
|
||||||
respond "*" "debug/-1\r"
|
respond "*" "debug/-1\r"
|
||||||
type "mfinit\033g"
|
type "mfinit\033g"
|
||||||
|
respond "*" ":kill\r"
|
||||||
}
|
}
|
||||||
|
|
||||||
source ../build.tcl
|
source ../build.tcl
|
||||||
|
|||||||
89
doc/_info_/meter.info
Normal file
89
doc/_info_/meter.info
Normal file
@@ -0,0 +1,89 @@
|
|||||||
|
METER is a program to display a variety of system statistics.
|
||||||
|
It differs from PEEK in that it shows only system-wide
|
||||||
|
information, not per-job. It also gives a lot of statistics
|
||||||
|
that PEEK won't.
|
||||||
|
|
||||||
|
On a display terminal (%TOERS and %TOMVU) METER will periodically
|
||||||
|
update its display, changing only those numbers that have
|
||||||
|
accidentally changed. On other terminals, it just types the
|
||||||
|
whole thing out over and over again.
|
||||||
|
|
||||||
|
METER does not take any options. It stops when you hit space.
|
||||||
|
If it is invoked by :METERD it will display on the 340.
|
||||||
|
|
||||||
|
If it is invoked by :SMETER, it will repeat slower.
|
||||||
|
|
||||||
|
The first display shows figures which for the most part are averages
|
||||||
|
over the whole time that the system has been up. After that, all
|
||||||
|
figures are averaged over the last 15 seconds or so.
|
||||||
|
|
||||||
|
The statistics displayed are explained below. All times are in seconds.
|
||||||
|
All numbers are [of course] decimal. "ATB" means average time between.
|
||||||
|
|
||||||
|
% User Time - fraction of CPU time given to users.
|
||||||
|
|
||||||
|
% Idle - fraction of CPU time not used.
|
||||||
|
|
||||||
|
% Overhead - fraction of CPU time spent on system overhead - page
|
||||||
|
fault handling, TTY and Disk I/O, scheduling, etc.
|
||||||
|
|
||||||
|
# Processes - the total number of processes (jobs, procedures)
|
||||||
|
on the system.
|
||||||
|
|
||||||
|
% active last 15 seconds - fraction of processes which ran at least
|
||||||
|
for a moment sometime within the last 15 seconds.
|
||||||
|
|
||||||
|
% Processes running - fraction of processes currently running
|
||||||
|
user programs.
|
||||||
|
|
||||||
|
% Exec run - fraction of processes currently running in the system.
|
||||||
|
|
||||||
|
% Blocked - fraction of processes currently waiting for something,
|
||||||
|
such as type in, a page to be swapped in, etc.
|
||||||
|
|
||||||
|
% Stopped - fraction of processes currently unrunnable - usually
|
||||||
|
this is due to ^Z, er, ah, CALL. Swap-blocked processes
|
||||||
|
are also counted here.
|
||||||
|
|
||||||
|
Disk ATB read - average time between disk reads for file accesses.
|
||||||
|
|
||||||
|
write - average time between disk writes for file accesses.
|
||||||
|
|
||||||
|
PgIn - average time between disk reads for swapping in pages.
|
||||||
|
|
||||||
|
PgOut - average time between disk writes for swapping out pages.
|
||||||
|
|
||||||
|
TTY ch/s in - characters per second input from TTY's.
|
||||||
|
|
||||||
|
TTY ch/s out - characters per second output to TTY's. This does not
|
||||||
|
include TV's, and does not count cursor motion accurately.
|
||||||
|
Since ITS does not keep this meter, the METER program
|
||||||
|
estimates it by looking at the teletype buffers frequently.
|
||||||
|
|
||||||
|
ATB Sched - average time between reschedulings.
|
||||||
|
|
||||||
|
ATB PCLSR - average time between attempts to force a process into
|
||||||
|
user mode so it can be stopped or take an interrupt.
|
||||||
|
There may be several attempts for each successful
|
||||||
|
PCLSR.
|
||||||
|
|
||||||
|
ATB swap out - average time between attempts to swap out a process.
|
||||||
|
|
||||||
|
ATB page faults - average time between page faults.
|
||||||
|
|
||||||
|
% in - fraction of page faults on pages already in core.
|
||||||
|
|
||||||
|
% coming - fraction of page faults on pages already coming into
|
||||||
|
core due to a previous page fault.
|
||||||
|
|
||||||
|
% out - fraction of page faults on pages not in core. These
|
||||||
|
are the "real" page faults.
|
||||||
|
|
||||||
|
% going - fraction of page faults on pages on their way out of
|
||||||
|
core. The page will have to come right back in.
|
||||||
|
|
||||||
|
The above four numbers usually don't add up to 100%.
|
||||||
|
The rest of the page faults are those which occurred
|
||||||
|
while a page-control lock was locked, and therefore
|
||||||
|
had to be taken over again after a delay.
|
||||||
|
|
||||||
92
doc/info/meter.1
Normal file
92
doc/info/meter.1
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
-*-Text-*-
|
||||||
|
|
||||||
|
File: METER Node: Top Up: (DIR)
|
||||||
|
|
||||||
|
METER is a program to display a variety of system statistics.
|
||||||
|
It differs from PEEK in that it shows only system-wide
|
||||||
|
information, not per-job. It also gives a lot of statistics
|
||||||
|
that PEEK won't.
|
||||||
|
|
||||||
|
On a display terminal (%TOERS and %TOMVU) METER will periodically
|
||||||
|
update its display, changing only those numbers that have
|
||||||
|
accidentally changed. On other terminals, it just types the
|
||||||
|
whole thing out over and over again.
|
||||||
|
|
||||||
|
METER does not take any options. It stops when you hit space.
|
||||||
|
If it is invoked by :METERD it will display on the 340.
|
||||||
|
|
||||||
|
If it is invoked by :SMETER, it will repeat slower.
|
||||||
|
|
||||||
|
The first display shows figures which for the most part are averages
|
||||||
|
over the whole time that the system has been up. After that, all
|
||||||
|
figures are averaged over the last 15 seconds or so.
|
||||||
|
|
||||||
|
The statistics displayed are explained below. All times are in seconds.
|
||||||
|
All numbers are [of course] decimal. "ATB" means average time between.
|
||||||
|
|
||||||
|
% User Time - fraction of CPU time given to users.
|
||||||
|
|
||||||
|
% Idle - fraction of CPU time not used.
|
||||||
|
|
||||||
|
% Overhead - fraction of CPU time spent on system overhead - page
|
||||||
|
fault handling, TTY and Disk I/O, scheduling, etc.
|
||||||
|
|
||||||
|
# Processes - the total number of processes (jobs, procedures)
|
||||||
|
on the system.
|
||||||
|
|
||||||
|
% active last 15 seconds - fraction of processes which ran at least
|
||||||
|
for a moment sometime within the last 15 seconds.
|
||||||
|
|
||||||
|
% Processes running - fraction of processes currently running
|
||||||
|
user programs.
|
||||||
|
|
||||||
|
% Exec run - fraction of processes currently running in the system.
|
||||||
|
|
||||||
|
% Blocked - fraction of processes currently waiting for something,
|
||||||
|
such as type in, a page to be swapped in, etc.
|
||||||
|
|
||||||
|
% Stopped - fraction of processes currently unrunnable - usually
|
||||||
|
this is due to ^Z, er, ah, CALL. Swap-blocked processes
|
||||||
|
are also counted here.
|
||||||
|
|
||||||
|
Disk ATB read - average time between disk reads for file accesses.
|
||||||
|
|
||||||
|
write - average time between disk writes for file accesses.
|
||||||
|
|
||||||
|
PgIn - average time between disk reads for swapping in pages.
|
||||||
|
|
||||||
|
PgOut - average time between disk writes for swapping out pages.
|
||||||
|
|
||||||
|
TTY ch/s in - characters per second input from TTY's.
|
||||||
|
|
||||||
|
TTY ch/s out - characters per second output to TTY's. This does not
|
||||||
|
include TV's, and does not count cursor motion accurately.
|
||||||
|
Since ITS does not keep this meter, the METER program
|
||||||
|
estimates it by looking at the teletype buffers frequently.
|
||||||
|
|
||||||
|
ATB Sched - average time between reschedulings.
|
||||||
|
|
||||||
|
ATB PCLSR - average time between attempts to force a process into
|
||||||
|
user mode so it can be stopped or take an interrupt.
|
||||||
|
There may be several attempts for each successful
|
||||||
|
PCLSR.
|
||||||
|
|
||||||
|
ATB swap out - average time between attempts to swap out a process.
|
||||||
|
|
||||||
|
ATB page faults - average time between page faults.
|
||||||
|
|
||||||
|
% in - fraction of page faults on pages already in core.
|
||||||
|
|
||||||
|
% coming - fraction of page faults on pages already coming into
|
||||||
|
core due to a previous page fault.
|
||||||
|
|
||||||
|
% out - fraction of page faults on pages not in core. These
|
||||||
|
are the "real" page faults.
|
||||||
|
|
||||||
|
% going - fraction of page faults on pages on their way out of
|
||||||
|
core. The page will have to come right back in.
|
||||||
|
|
||||||
|
The above four numbers usually don't add up to 100%.
|
||||||
|
The rest of the page faults are those which occurred
|
||||||
|
while a page-control lock was locked, and therefore
|
||||||
|
had to be taken over again after a delay.
|
||||||
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