1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-25 03:37:00 +00:00
PDP-10.its/src/sysen2/fretty.62
2016-12-08 09:24:45 +01:00

254 lines
4.3 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;-*-Midas-*-
Title :FRETTY - Print list of FREe TTYs
A=1
B=2
C=3
D=4
E=5
F=6
G=7
H=10
L=11
U=12
I=13
T=15
TT=16
P=17
CALL=<PUSHJ P,>
RETURN=<POPJ P,>
TTYo==1
PDLEN==10
TTYSTS: 0
NTTYS: 0
TTYPAG: 0
NUMFRE: 0
PDLIST: -PDLEN,,PDLIST
BLOCK PDLEN
Linear: 0
LasTTY: 0
GGroup: 0
TTYLOC: 0 ;Pointer to data area for a particular site
; Data table for each site starts with # of generic locations.
; G.L.#1 starts with # tty ranges
; T.R.#1 is <bottom tty#>,,<top tty#>
MCDATA: 4
1,,[ASCIZ "30cps dialups"] ? 4,,7
2,,[ASCIZ "120cps dialups"] ? 1,,1 ? 10,,16
3,,[ASCIZ "8th floor"] ? 21,,22 ? 26,,26 ? 30,,34
1,,[ASCIZ "Software"] ? 40,,77
AIDATA: 7
1,,[ASCIZ "10cps dialups"] ? 2,,2
2,,[ASCIZ "15cps dialups"] ? 1,,1 ? 6,,6
1,,[ASCIZ "30cps dialups"] ? 15,,20
2,,[ASCIZ "120/15cps dialups"] ? 30,,30 ? 32,,33
1,,[ASCIZ "3rd floor"] ? 31,,31
2,,[ASCIZ "8th floor"] ? 21,,22 ? 36,,36
4,,[ASCIZ "9th floor"] ? 3,,5 ? 7,,7 ? 34,,34 ? 37,,40
MLDATA: 6
1,,[ASCIZ "30cps dialups"] ? 2,,3
4,,[ASCIZ "120cps dialups"] ? 1,,1 ? 4,,4 ? 11,,11 ? 32,,32
4,,[ASCIZ "3rd floor"] ? 5,,5 ? 10,,10 ? 16,,27 ? 33,,33
1,,[ASCIZ "5th floor"] ? 31,,31
2,,[ASCIZ "8th floor"] ? 7,,7 ? 12,,15
1,,[ASCIZ "9th floor"] ? 6,,6
DMDATA: 4
4,,[ASCIZ "2nd floor"] ? 1,,10 ? 12,,13 ? 16,,16 ? 20,,20
2,,[ASCIZ "2nd floor Imlac"] ? 15,,15 ? 17,,17
1,,[ASCIZ "8th floor"] ? 11,,11
FRETTY: BLOCK 77 ;TTY#'s of free terminals
DEFINE SYSCAL OP,ARGS
.CALL [SETZ ? SIXBIT /OP/ ? ARGS ((SETZ))]
TERMIN
;;;
;;;
;;;
.scalar sysnam
GO: MOVE P,PDLIST
SYSCAL SSTATU,[REPEAT 5,%CLOUT,,T
%CLOUT,,SYSNAM]
.LOSE %LSSYS
move tt,sysnam
MOVEI T,MCDATA
CAMN TT,[SIXBIT /AI/]
MOVEI T,AIDATA
CAMN TT,[SIXBIT /ML/]
MOVEI T,MLDATA ;Figure out which dataset to use
CAMN TT,[SIXBIT /DM/]
MOVEI T,DMDATA
HRLI T,G ;Indexed off ac G
MOVEM T,TTYLOC
MOVE A,[SQUOZE 0,TTYSTS]
.EVAL A,
.LOSE
MOVE B,A
IDIVI B,2000 ;Page # in B
HRLI B,-2 ;We want 2 pages starting at c(B)
MOVEM B,TTYPAG
ADD A,[(C)] ;Indexed by C
MOVEM A,TTYSTS
MOVE A,[SQUOZE 0,NCT]
.EVAL A,
.LOSE
MOVEM A,NTTYS
SYSCAL CORBLK,[%CLIMM,,%CBNDR
%CLIMM,,%JSELF
TTYPAG
%CLIMM,,%JSNUM]
.LOSE %LSSYS
SYSCAL OPEN,[%CLBIT,,.UAO\%TJDIS
%CLIMM,,TTYo
[SIXBIT /TTY/]]
.LOSE %LSFIL
MOVEI C,1 ;Start at T01
SETZB E,B ;Pointer to freeTTYs array
GETFTY: HRRE D,@TTYSTS ;Save all these for now so they don't change
SKIPG D
JRST [AOJ E,
MOVEM C,FRETTY(E)
JRST .+1]
AOJ C,
CAME C,NTTYS
JRST GETFTY
MOVEM E,NUMFRE
JCLp: .Suset [.rOPTION,,TT]
Tlne TT,OPTCMD
Jrst Other
FIND: .Suset [.rCNSL,,I]
Move A,@TTYLOC ;# groups.
Movei G,1
Find2: Hlrz C,@TTYLOC ;#ranges
Aoj G, ;Point to 1st range.
Call TTYinP
Jrst [Soje A,Other
Add G,C
Jrst Find2]
Movem A,GGroup
Skipa
Other: Setom GGroup ;-1 means all groups.
PRTFTY: Setz G,
MOVE A,@TTYLOC ;# groups in ac A
Movei G,1
GROUP: HLRZ C,@TTYLOC ;# entries in C
Skipl GGroup
Camn A,GGroup
Skipa
Aoja G,NGROUP
.Iot TTYo,[^P]
.Iot TTYo,["A]
HRRZ T,@TTYLOC ;location of name in D
CALL TYPE
.IOT TTYo,[":]
SETZB E,H ;# matches this group
Setom LasTTY
Setzm Linear
Aoj G, ;Point at 1st pair.
SCAN: AOJ H,
MOVE I,FRETTY(H)
Call TTYinP
Jrst NScan
Aha: Aoj E,
Move T,I
Sub T,LasTTY
Cain T,1
Jrst [Setom Linear
Jrst NScan-1]
Skipn Linear
Jrst PTTY
.Iot TTYo,["-]
Move T,LasTTY
Call TTYprt
Setzm Linear
PTTY: .Iot TTYo,[" ]
MOVE T,I
Call TTYprt
Movem I,LasTTY
NSCAN: CAMG H,NUMFRE
JRST SCAN
Skipn Linear
Jrst NSUBGR
.Iot TTYo,["-]
Move T,LasTTY
Call TTYprt
NSUBGR: JUMPE E,[MOVEI T,[ASCIZ /None/]
CALL TYPE
JRST .+1]
NGROUP: Add G,C
SOJN A,GROUP
move tt,sysnam
came tt,[sixbit \ML\]
jrst die
.suset [.rcnsl,,tt]
caie tt,7
jrst die
.suset [.runame,,tt]
hlres tt
came tt,[-1]
jrst die
movei t,[ascii /ADon't be a resource-wasting twit; log out this terminal.A/]
call type
DIE: .LOGOUT 1,
TYPE: HRLI T,440700
ILDB TT,T
Skipn TT
Return
.IOT TTYo,TT
JRST TYPE+1
TTYprt: .Iot TTYo,["T]
IDivi T,10
Addi T,"0
.Iot TTYo,T
Addi TT,"0
.Iot TTYo,TT
Return
TTYinP: Move T,G ;I=TTY#, G=Group^
Move TT,C
TTP2: Hlrz L,@TTYLOC ;lower
Hrrz U,@TTYLOC ;upper.
Caml I,L
Camle I,U
Jrst [Aoj G,
Sojn TT,TTP2
Jrst .+2]
Aos (P)
Move G,T
Return
END GO