From c658ec78624ed01f2441971c60655752121e80fa Mon Sep 17 00:00:00 2001 From: Eric Swenson Date: Tue, 20 Dec 2016 16:55:07 -0800 Subject: [PATCH] Added WHO%. Resolves #294. Note: this program MPVs when run. Needs to get debugged. See #369. Source code from AR3: GREN; WHO% 5. --- README.md | 1 + build/build.tcl | 5 ++ src/sysen3/who%.5 | 200 ++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 src/sysen3/who%.5 diff --git a/README.md b/README.md index 62e8d0bd..f2f4099e 100644 --- a/README.md +++ b/README.md @@ -217,6 +217,7 @@ A list of [known ITS machines](doc/machines.md). - UNTALK, split-screen comm-link program. - UPTIME, Chaosnet uptime server. - WHAT, humorous quips to various "what" questions. + - WHO%, list index/uname/jname/%time in sorted list. 6. A brand new host table is built from the host table source and installed into SYSBIN; HOSTS3 > using H3MAKE. diff --git a/build/build.tcl b/build/build.tcl index 8dacc3ea..bc2d149a 100644 --- a/build/build.tcl +++ b/build/build.tcl @@ -823,6 +823,11 @@ expect ":KILL" respond "*" ":midas decsys;_decbot\r" expect ":KILL" +# who% +respond "*" ":midas sys1;ts who%_sysen3;who%\r" +expect ":KILL" +respond "*" ":link sys1;ts %,sys1;ts who%\r" + # palx respond "*" ":midas sys;ts palx_sysen1;palx\r" expect ":KILL" diff --git a/src/sysen3/who%.5 b/src/sysen3/who%.5 new file mode 100644 index 00000000..44f8fa81 --- /dev/null +++ b/src/sysen3/who%.5 @@ -0,0 +1,200 @@ +;-*-Midas-*- + + TITLE :WHO% - List Index/Uname/Jname/%Time in sorted list + +A=1 +B=2 +C=3 +D=4 +E=5 +T1=6 +T2=7 +T3=10 +T4=11 +P=17 + +Call=Pushj P, +Return=Popj P, + +TTYo==1 +TTYi==2 +PDLen==15 +MapLoc==5 +MapTop=177 +MapLen==MapTop-MapLoc+1 +JobMax==150 + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +Define SYSCAL op,args + .Call [Setz ? Sixbit /op/ ? args ((Setz))] + Termin + +Define TYPE &string + Movei T1,<.Length string> + Move T2,[440700,,[Ascii string]] + Syscal SIOT,[%Climm,,TTYo ? T2 ? T1] + .Lose %LsSys + Termin + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +PDList: -PDLen,,PDList + Block PDLen + +Index: Block JobMax +Who: Block JobMax +What: Block JobMax +Time: Block JobMax + +NJobs: 0 + +LUBLK: 0 +USRHI: 0 +UNAME: 0 +JNAME: 0 +JTMU: 0 + +Tsint: Loc 42 + -TsintL,,Tsint + Loc Tsint + P + 0 ? 1_TTYi ? -1 ? -1 ? Flush +TsintL==.-Tsint + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +Begin: Move P,Pdlist + Syscal OPEN,[%Clbit,,.uao + %Climm,,TTYo + [Sixbit /TTY/]] + .Lose %LsSys + .Suset [.sOption,,[Optint,,]] + .Suset [.sMsk2,,[1_TTYi]] + Syscal OPEN,[%Clbit,,.uai + %Climm,,TTYi + [Sixbit /TTY/]] + .Lose %LsSys + Move A,[Squoze 0,LUBLK] + .Eval A, + .Lose + Movem A,LUBLK + Move B,[Squoze 0,USRHI] + .Eval B, + .Lose + Movem B,USRHI + Move C,[Squoze 0,UNAME] + .Eval C, + .Lose + Add C,[(A)] + Movem C,UNAME + Move D,[Squoze 0,JNAME] + .Eval D, + .Lose + Add D,[(A)] + Movem D,JNAME + Move E,[Squoze 0,JTMU] + .Eval E, + .Lose + Add E,[(A)] + Movem E,JTMU + +MapSys: Syscal CORBLK,[%Climm,,%Cbndr + %Climm,,%Jself + [-MapLen,,MapLoc] + %Climm,,%Jsnum] + .Value [Asciz /: System map failed? KILL /] + +Init: Setzb A,B + Setz C, + TYPE "Idx Uname Jname %Timeî" + +Inhale: Skipn @UNAME + Jrst Next + Move D,@JTMU + Addi D,9830. + IDivi D,19661. + Jumpe D,Next + Movem D,Time(C) + Movem B,Index(C) + Move T1,@UNAME + Movem T1,Who(C) + Move T2,@JNAME + Movem T2,What(C) + Aos C,NJobs + +Next: Add A,LUBLK + Aoj B, + Camge A,@USRHI + Jrst Inhale + +Sorti: Setz A, + Move B,NJobs + +Sort: Soj B, + Caml A,Time(B) + Jrst Too + Move C,B + Move A,Time(B) +Too: Jumpn B,Sort + Jumpe A,Done + Move T1,Index(C) + Movei T4,8. + Call BType + .Iot TTYo,[" ] + Move T1,Who(C) + Call 6Type + .Iot TTYo,[" ] + Move T1,What(C) + Call 6Type + .Iot TTYo,[" ] + Move T1,A + Movei T4,10. + Call BType + .Iot TTYo,["%] + .Iot TTYo,[^M] + Setzm Time(C) + Jrst Sorti + +Done: .Logout 1, + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +Flush: Movei E,TTYi + .ITyic E, + .Lose + Cain E,40 + Jrst Dismis + .Reset TTYo, + .Reset TTYi, + TYPE "Flushed" + Jrst Done + +Dismis: Syscal DISMIS,[P] + .Lose + +6Type: Movei T3,6. +6TLoop: Setz T2, + Rotc T1,6 + Addi T2,40 + .Iot TTYo,T2 + Sojn T3,6TLoop + Return + +BType: Setz T3, ;3 digit justify +BLoop: IDiv T1,T4 + Push P,T2 + Aoj T3, + Jumpn T1,BLoop +RJust: Movei T2,3 + Sub T2,T3 + Jumpe T2,BOut + .Iot TTYo,[" ] + Sojn T2,.-1 +BOut: Pop P,T1 + Addi T1,60 + .Iot TTYo,T1 + Sojn T3,BOut + Return + + END BEGIN \ No newline at end of file