From 5f767f06b17f3f912693db8cdbe6286fb4ed9dfc Mon Sep 17 00:00:00 2001 From: Eric Swenson Date: Wed, 7 Dec 2016 22:25:58 -0800 Subject: [PATCH] Added FRETTY: displays a list of free TTYs. --- README.md | 1 + build/build.tcl | 4 + src/sysen2/fretty.62 | 254 +++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 259 insertions(+) create mode 100644 src/sysen2/fretty.62 diff --git a/README.md b/README.md index 7fd23216..ccec10a5 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/build/build.tcl b/build/build.tcl index ed68551c..c8cac065 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -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" diff --git a/src/sysen2/fretty.62 b/src/sysen2/fretty.62 new file mode 100644 index 00000000..bfebf846 --- /dev/null +++ b/src/sysen2/fretty.62 @@ -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= +RETURN= + +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 ,, + +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 \ No newline at end of file