1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-22 10:32:13 +00:00
Eric Swenson ce4f8a168c Added PORTS.
Resolves #123.
2016-12-18 22:27:11 -08:00

109 lines
1.7 KiB
Groff
Executable File

;-*-midas-*-
title ports-> print number of free net ports.
;Stolen from RMS's LOADP, and prettied up a bit.
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
t1=20
t2=21
chttyo==1
define syscal a,b
.call [setz ? sixbit/a/ ? b ((setz))]
termin
DEFINE TCAL OP,ARGS
.CALL [SETZ ? SIXBIT /OP/ ? ARGS ((SETZ))]
TERMIN
DEFINE TYPE CHNL,&STRING
MOVEI T1,<.LENGTH STRING>
MOVE T2,[440700,,[ASCII STRING]]
TCAL SIOT,[%CLIMM,,CHNL ? T2 ? T1]
.LOSE %LSFIL
TERMIN
beg: move p,[-lpdl,,pdl]
.open chttyo,[.uao,,'tty]
.lose
movei b,0 ;B indexes which tty we are looking at.
setzm nfstys ;Initialize counters: # of free stys
count: syscal ttyget,[%climm,,400000(b) ;D gets TTYST var - negative for free tty.
%clout,,a ? %clout,,a ? %clout,,d]
jrst print ;Error means we have run out of tty numbers.
syscal ttyvar,[%climm,,400000(b) ? [sixbit/ttytyp/]
%clout,,a]
.lose %lsfil
trnn a,%tysty ;If it's a sty, is it free?
jrst notfre
jumpge d,notfre
aos nfstys
notfre: aoja b,count ;ok, it isn't free, ignore it.
ascout: hrli a,440700
ascou1: ildb b,a
jumpe b,cpopj
.iot chttyo,b
jrst ascou1
decout: idivi a,10.
hrlm b,(p)
skipe a
pushj p,decout
hlrz b,(p)
addi b,"0
.iot chttyo,b
cpopj: popj p,
;Having collected the data, print it out.
print: move a,nfstys
cain a,0
jrst print0
cain a,1
jrst print1
movei a,[asciz/There are /]
pushj p,ascout
move a,nfstys
pushj p,decout
movei a,[asciz/ free net ports.
/]
pushj p,ascout
.logout 1,
print1: movei a,[asciz/There is 1 free net port.
/]
pushj p,ascout
.logout 1,
print0: movei a,[asciz/There are no free net ports.
/]
pushj p,ascout
.logout 1,
nfstys: 0
pat: patch:
block 40
epatch: -1
lpdl=10
pdl: block lpdl
end beg