mirror of
https://github.com/PDP-10/its.git
synced 2026-03-04 02:35:00 +00:00
Resolves #294. Note: this program MPVs when run. Needs to get debugged. See #369. Source code from AR3: GREN; WHO% 5.
200 lines
2.9 KiB
Groff
200 lines
2.9 KiB
Groff
;-*-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 |