1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-14 07:40:05 +00:00

Added WHO%.

Resolves #294.
Note: this program MPVs when run. Needs to get debugged. See #369.

Source code from AR3: GREN; WHO% 5.
This commit is contained in:
Eric Swenson 2016-12-20 16:55:07 -08:00 committed by Lars Brinkhoff
parent fad6cbe33a
commit c658ec7862
3 changed files with 206 additions and 0 deletions

View File

@ -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.

View File

@ -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"

200
src/sysen3/who%.5 Normal file
View File

@ -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