mirror of
https://github.com/PDP-10/its.git
synced 2026-02-04 23:54:37 +00:00
Added IDLE, which displays idle users.
This commit is contained in:
committed by
Lars Brinkhoff
parent
857a76de76
commit
b2341133ef
278
src/gren/idle.2
Executable file
278
src/gren/idle.2
Executable file
@@ -0,0 +1,278 @@
|
||||
;-*-Midas-*-
|
||||
|
||||
Title :IDLE - List idle users
|
||||
|
||||
A=1 ;General porpoise
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5
|
||||
F=6
|
||||
G=7
|
||||
|
||||
T1=10
|
||||
T2=11
|
||||
T3=12
|
||||
|
||||
I=13 ;Index
|
||||
T=14 ;TTY
|
||||
|
||||
P=17
|
||||
|
||||
Call=<PUSHJ P,>
|
||||
Return=<POPJ P,>
|
||||
|
||||
TTYo==1
|
||||
|
||||
MapBot==5
|
||||
MapTop=177
|
||||
MapLen==MapTop-MapBot+1
|
||||
|
||||
Pdlen==10
|
||||
JCLen==10
|
||||
MaxUsr==50.
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
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
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
JCLbuf: Block JCLen
|
||||
-1
|
||||
|
||||
Text: Block JCLen
|
||||
|
||||
Pdlist: -Pdlen,,Pdlist
|
||||
Block Pdlen
|
||||
|
||||
NCT: 0 ;Number Console Terminals - Max TTY#
|
||||
TTITM: 0 ;TTy Idle TiMe (?) - Idle time
|
||||
UNAME: 0
|
||||
TTYSTS: 0 ;STS? Has the index of the job which has that TTY
|
||||
|
||||
Who: Block MaxUsr
|
||||
When: Block MaxUsr
|
||||
Where: Block MaxUsr
|
||||
|
||||
Time: 30.*60.
|
||||
30.*60.*60.
|
||||
30.*60.*60.*24.
|
||||
|
||||
Alpha: 0
|
||||
|
||||
Now: 0
|
||||
|
||||
Target: 0
|
||||
Limit: 30.*60.
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
Begin: Move P,PDList
|
||||
Syscal OPEN,[%Clbit,,.uao\%TJDIS
|
||||
%Climm,,TTYo
|
||||
[Sixbit /TTY/]]
|
||||
.Lose %LsFil
|
||||
.Break 12,[..rJCL,,JCLbuf]
|
||||
Skipn JCLbuf
|
||||
Jrst SysMap
|
||||
Move A,[440700,,JCLbuf]
|
||||
|
||||
Clean: Ildb B,A ;Remove leading spaces/tabs
|
||||
Caie B,^I
|
||||
Cain B,40
|
||||
Jrst Clean
|
||||
Setz E,
|
||||
Move C,[440700,,Text]
|
||||
Skipa
|
||||
|
||||
Read: Ildb B,A
|
||||
Caie B,^C
|
||||
Cain B,^M
|
||||
Jrst Inter
|
||||
Caie B,177
|
||||
Cain B,^_
|
||||
Jrst Inter
|
||||
Cail B,"0
|
||||
Caile B,"9
|
||||
Setom Alpha
|
||||
Cail B,"a
|
||||
Trz B,40
|
||||
Idpb B,C
|
||||
Aoja E,Read
|
||||
|
||||
Inter: Jumpe E,SysMap
|
||||
Move C,[440700,,Text]
|
||||
Skipe Alpha
|
||||
Jrst Name
|
||||
|
||||
Numify: Imuli D,10.
|
||||
Ildb B,C
|
||||
Subi B,"0
|
||||
Add D,B
|
||||
Sojn E,Numify
|
||||
IMuli D,<30.*60.>
|
||||
Movem D,Limit
|
||||
Jrst SysMap
|
||||
|
||||
Name: Caile E,6
|
||||
Movei E,6
|
||||
Move D,[440600,,Target]
|
||||
|
||||
Sixify: Ildb B,C
|
||||
Subi B,40
|
||||
Idpb B,D
|
||||
Sojn E,Sixify
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
;;; JCL parsing done. LIMIT contains the time in ticks that
|
||||
;;; is the bottom cut-of for people listed. If TARGET is non-
|
||||
;;; zero, then only TARGET is listed, not all users
|
||||
;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
SysMap: Move B,[Squoze 0,NCT]
|
||||
.Eval B,
|
||||
.Lose
|
||||
Movem B,NCT
|
||||
Move C,[Squoze 0,UNAME]
|
||||
.Eval C,
|
||||
.Lose
|
||||
Add C,[(I)] ;Indexed by I
|
||||
Movem C,UNAME
|
||||
Move D,[Squoze 0,TTITM]
|
||||
.Eval D,
|
||||
.Lose
|
||||
Add D,[(T)] ;Likewise for T
|
||||
Movem D,TTITM
|
||||
Move E,[Squoze 0,TTYSTS]
|
||||
.Eval E,
|
||||
.Lose
|
||||
Add E,[(T)]
|
||||
Movem E,TTYSTS
|
||||
Syscal CORBLK,[%Climm,,%Cbndr
|
||||
%Climm,,%Jself
|
||||
[-MapLen,,MapBot]
|
||||
%Climm,,%Jsnum]
|
||||
.Lose %LsSys
|
||||
Movei T,1 ;Start at T01
|
||||
.RdTime T1,
|
||||
Movem T1,Now
|
||||
Seto E,
|
||||
|
||||
GetEm: Move C,@TTYSTS
|
||||
Hrre I,C
|
||||
Jumple I,Next
|
||||
Tlne C,400000
|
||||
Jrst Next
|
||||
Move A,Now
|
||||
Sub A,@TTITM
|
||||
Skipge A
|
||||
Setz A,
|
||||
Move D,@UNAME
|
||||
Camn D,Target
|
||||
Jrst Save
|
||||
Camge A,Limit
|
||||
Jrst Next
|
||||
Save: Aoj E,
|
||||
Movem T,Where(E)
|
||||
Movem A,When(E)
|
||||
Movem D,Who(E)
|
||||
Next: Aoj T,
|
||||
Camg T,NCT
|
||||
Jrst GetEm
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;;;
|
||||
;;; All unames and idle times have been read in. Now is the time
|
||||
;;; to sort and output, or just output for one name....
|
||||
;;;
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
Squeal: .Iot TTYo,[^P]
|
||||
.Iot TTYo,["A]
|
||||
Jumpl E,[TYPE "No users"
|
||||
Jrst Die]
|
||||
Skipn Target
|
||||
Jrst Sort
|
||||
Move T1,E
|
||||
Move T2,Target
|
||||
|
||||
Find: Camn T2,Who(T1)
|
||||
Jrst Here
|
||||
Sojge T1,Find
|
||||
TYPE "Who? Not idle... not even HERE!"
|
||||
Jrst Die
|
||||
|
||||
Here: Call OutLin
|
||||
Jrst Die
|
||||
|
||||
Sort: TYPE "TTY Uname Idle"
|
||||
|
||||
Loopi: Seto T2,
|
||||
Move T3,E
|
||||
Loop: Caml T2,When(T3)
|
||||
Jrst Too
|
||||
Move T1,T3
|
||||
Move T2,When(T3)
|
||||
Too: Sojge T3,Loop
|
||||
Skipge T2
|
||||
Jrst Die
|
||||
Call OutLin
|
||||
Setom When(T1)
|
||||
Jrst Loopi
|
||||
|
||||
Die: .Logout 1,
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
OutLin: .Iot TTYo,[^P]
|
||||
.Iot TTYo,["A]
|
||||
.Iot TTYo,["T]
|
||||
Move A,Where(T1)
|
||||
IDivi A,10
|
||||
Addi A,60
|
||||
.Iot TTYo,A
|
||||
Addi B,60
|
||||
.Iot TTYo,B
|
||||
.Iot TTYo,[" ]
|
||||
Movei C,7
|
||||
Move A,Who(T1)
|
||||
6Type: Setz B,
|
||||
Rotc A,6
|
||||
Addi B,40
|
||||
.Iot TTYo,B
|
||||
Sojn C,6Type
|
||||
|
||||
TType: Setz A, ;1st set has no leading '0'
|
||||
Movei D,2
|
||||
Move B,When(T1)
|
||||
TTloop: Idiv B,Time(D)
|
||||
Skipn A
|
||||
Jumpe B,TTnext
|
||||
Move F,B
|
||||
Idivi F,10.
|
||||
Addi F,"0
|
||||
Caig F,"0
|
||||
Skipe A
|
||||
.Iot TTYo,F
|
||||
Addi G,"0
|
||||
.Iot TTYo,G
|
||||
Skipe D
|
||||
.Iot TTYo,[":]
|
||||
Seto A,
|
||||
TTnext: Move B,C
|
||||
Sojge D,TTloop
|
||||
Return
|
||||
|
||||
END BEGIN
|
||||
Reference in New Issue
Block a user