1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-09 20:38:23 +00:00
Files
PDP-10.its/src/sysen1/loadp.11
Eric Swenson 3dd6c71095 Added LOADP.
2016-12-11 09:18:56 -08:00

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