mirror of
https://github.com/PDP-10/its.git
synced 2026-03-09 20:38:23 +00:00
140 lines
2.4 KiB
Plaintext
140 lines
2.4 KiB
Plaintext
; -*- Midas -*-
|
|
|
|
title LOADP -- Prints out information on current system load.
|
|
|
|
a=1
|
|
b=2
|
|
c=3
|
|
d=4
|
|
e=5
|
|
f=6
|
|
g=7
|
|
h=10
|
|
i=11
|
|
j=12
|
|
k=13
|
|
l=14
|
|
m=15
|
|
n=16
|
|
p=17
|
|
|
|
chttyo==1
|
|
|
|
define syscal name,args
|
|
.call [setz ? sixbit /name/ ? args(400000)]
|
|
termin
|
|
|
|
|
|
beg: move p,[-lpdl,,pdl-1]
|
|
.open chttyo,[.uao,,'tty ? setz ? setz]
|
|
.lose
|
|
syscal sstatu,[repeat 8,[ ? movem nfjobs]] ;# free job slots.
|
|
.lose %lssys
|
|
move a,[squoze 0,sloadu]
|
|
.eval a,
|
|
.lose
|
|
hrli a,(a)
|
|
hrri a,fairsh
|
|
.getloc a,
|
|
movei a,10000.
|
|
idivm a,fairsh
|
|
movei b,0 ;B indexes which tty we are looking at.
|
|
setzm nfstys ;Initialize counters: # of free stys
|
|
setzm nidle1 ;# of ttys idle less than 1 minute
|
|
setzm nidle5 ;# idle less than 5 minutes
|
|
setzm nidl10 ;# idle less than ten minutes
|
|
count: syscal ttyget,[movei 400000(b) ;D gets TTYST var - negative for
|
|
repeat 3,[ ? movem d]] ; free tty.
|
|
jrst print ;Error means we have run out of tty numbers.
|
|
syscal ttyvar,[movei 400000(b) ? [sixbit/ttytyp/]
|
|
movem a]
|
|
.lose %lssys
|
|
trnn a,%tysty ;If it's a sty, is it free?
|
|
jrst count1
|
|
jumpge d,count1
|
|
aos nfstys
|
|
count1: jumpl d,count2 ;Now count all non-free ttys idle < 1 min, etc.
|
|
syscal ttyvar,[%climm,,400000(b) ? [sixbit/idltim/]
|
|
%clout,,a]
|
|
.lose %lsfil
|
|
caige a,30.*60.
|
|
aos nidle1
|
|
caige a,30.*60.*5
|
|
aos nidle5
|
|
caige a,30.*60.*10.
|
|
aos nidl10
|
|
count2: aoja b,count
|
|
|
|
ascout: hrli a,440700 ;If C=1, "#" => "", else => "s"
|
|
ascou1: ildb b,a
|
|
jumpe b,cpopj
|
|
cain b,"#
|
|
jrst [ movei b,"s
|
|
caie c,1
|
|
.iot chttyo,b
|
|
jrst ascou1]
|
|
.iot chttyo,b
|
|
jrst ascou1
|
|
|
|
decout: move c,a ;leaves number in C.
|
|
decou1: idivi a,10.
|
|
hrlm b,(p)
|
|
skipe a
|
|
pushj p,decou1
|
|
hlrz b,(p)
|
|
addi b,"0
|
|
.iot chttyo,b
|
|
cpopj: popj p,
|
|
|
|
;Having collected the data, print it out.
|
|
print: movei a,[asciz /Fair Share = /]
|
|
pushj p,ascout
|
|
move a,fairsh
|
|
pushj p,decout
|
|
movei a,[asciz /%
|
|
/]
|
|
pushj p,ascout
|
|
move a,nidle1
|
|
pushj p,decout
|
|
movei a,[asciz/ user# idle less than 1 minute.
|
|
/]
|
|
pushj p,ascout
|
|
move a,nidle5
|
|
sub a,nidle1
|
|
pushj p,decout
|
|
movei a,[asciz/ idle 1 to 5 minutes.
|
|
/]
|
|
pushj p,ascout
|
|
move a,nidl10
|
|
sub a,nidle5
|
|
pushj p,decout
|
|
movei a,[asciz/ idle 5 to 10 minutes.
|
|
/]
|
|
pushj p,ascout
|
|
move a,nfstys
|
|
pushj p,decout
|
|
movei a,[asciz/ free net port#.
|
|
/]
|
|
pushj p,ascout
|
|
move a,nfjobs
|
|
pushj p,decout
|
|
movei a,[asciz/ free job slot#./]
|
|
pushj p,ascout
|
|
.logout 1,
|
|
|
|
fairsh: 0
|
|
nfstys: 0
|
|
nfjobs: 0
|
|
nidle1: 0
|
|
nidle5: 0
|
|
nidl10: 0
|
|
|
|
patch::
|
|
pat: block 40
|
|
epatch: -1
|
|
|
|
lpdl=10
|
|
pdl: block lpdl
|
|
|
|
end beg
|