1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-14 15:45:47 +00:00

Added FRETTY: displays a list of free TTYs.

This commit is contained in:
Eric Swenson 2016-12-07 22:25:58 -08:00 committed by Lars Brinkhoff
parent 181dcc19b4
commit 5f767f06b1
3 changed files with 259 additions and 0 deletions

View File

@ -87,6 +87,7 @@ There's a [DDT cheat sheet](doc/DDT.md) for Unix users.
- DUMP, tape backup and restore.
- EMACS, editor.
- FIND, search for files.
- FRETTY, display list of free TTYs.
- FTPS, FTP Server.
- FTPU, FTP Client.
- H3MAKE, a job that requests DRAGON to build host table.

View File

@ -731,6 +731,10 @@ expect ":KILL"
respond "*" ":midas sys2;ts argus_sysen2;argus\r"
expect ":KILL"
# fretty
respond "*" ":midas sys3;ts fretty_sysen2;fretty\r"
expect ":KILL"
# ndskdmp tape
respond "*" ":link kshack;good ram,.;ram ram\r"
respond "*" ":link kshack;ddt bin,.;@ ddt\r"

254
src/sysen2/fretty.62 Normal file
View File

@ -0,0 +1,254 @@
;-*-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