mirror of
https://github.com/PDP-10/its.git
synced 2026-05-12 10:21:04 +00:00
TREES - list toplevel jobs.
This commit is contained in:
379
src/sysen1/trees.32
Executable file
379
src/sysen1/trees.32
Executable file
@@ -0,0 +1,379 @@
|
||||
TITLE TREES -- P. D. LEBLING (PDL)
|
||||
|
||||
A=1
|
||||
B=2
|
||||
C=3
|
||||
D=4
|
||||
E=5
|
||||
F=6
|
||||
G=7
|
||||
|
||||
U=16 ;user ptr into system
|
||||
P=17
|
||||
|
||||
; mode bits
|
||||
|
||||
TYOC==2
|
||||
|
||||
PDL: BLOCK 40
|
||||
SNM: 0
|
||||
MASK: -1
|
||||
COMMND: BLOCK 10.
|
||||
|
||||
START: MOVE P,[-40,,PDL]
|
||||
.OPEN TYOC,[SIXBIT / !TTYXXXXXXYYYYYY/]
|
||||
.VALUE
|
||||
|
||||
.BREAK 12,[5,,COMMND]
|
||||
SKIPN COMMND ; none there?
|
||||
JRST DEFSNM
|
||||
;parse jcl
|
||||
MOVE A,[440700,,COMMND]
|
||||
MOVE B,[440600,,SNM]
|
||||
MOVE C,[440600,,MASK]
|
||||
SETOM MASK
|
||||
SETZM SNM
|
||||
MOVEI D,0
|
||||
LOOP: ILDB 0,A
|
||||
CAILE 0,40
|
||||
CAIL D,6
|
||||
JRST DONE
|
||||
ADDI D,1
|
||||
CAIE 0,"*
|
||||
JRST NOTSTR
|
||||
MOVEI 0,0
|
||||
IDPB 0,B
|
||||
IDPB 0,C
|
||||
JRST LOOP
|
||||
NOTSTR: IBP C
|
||||
SUBI 0,40
|
||||
CAIL 0,100
|
||||
JRST .-2
|
||||
IDPB 0,B
|
||||
JRST LOOP
|
||||
DONE: CAIE D,1
|
||||
JRST SYSTEM
|
||||
SKIPG MASK ;means was a *
|
||||
JRST SYSTEM
|
||||
SETZM SNM
|
||||
SETZM MASK
|
||||
JRST SYSTEM
|
||||
|
||||
DEFSNM: .SUSET [.RXUNA,,SNM] ;default is user himself
|
||||
|
||||
SYSTEM: PUSHJ P,INIT ;init symbols and map system
|
||||
MOVE U,L
|
||||
LSH U,1 ;skip sys and core jobs
|
||||
SYSLUP: SKIPE A,@XUNAME
|
||||
SKIPL @SUPPRO ;skip if top level job
|
||||
JRST SYSNXT ;not top-level job
|
||||
SKIPN @UNAME
|
||||
JRST SYSNXT ;job gone
|
||||
AND A,MASK
|
||||
CAME A,SNM ;matches mask?
|
||||
JRST SYSNXT ;no
|
||||
|
||||
TTYL: MOVE B,@JNAME ;job name
|
||||
SKIPL @APRC
|
||||
CAME B,[SIXBIT /TELSER/] ;telser is dull unless disowned
|
||||
SKIPA
|
||||
JRST SYSNXT
|
||||
MOVE B,@UTMPTR ;resource word
|
||||
SUB B,USRRCE
|
||||
CAML B,NCT ;skip if console
|
||||
JRST [SUB B,NCT
|
||||
SUBI B,2
|
||||
JRST .+1] ;otherwise sys or disowned
|
||||
CAMN B,[-2]
|
||||
OASC [ASCIZ / /] ;disowned tree
|
||||
CAMN B,[-1]
|
||||
OASC [ASCIZ /SYS /] ;system tree
|
||||
JUMPL B,UJ
|
||||
UTTY: OASCI "T ;tty num
|
||||
CAIGE B,10
|
||||
OASCI "0
|
||||
OOCT B
|
||||
OASCI "
|
||||
|
||||
UJ: OSIXS @UNAME ;uname of top job
|
||||
OASC [ASCIZ / /]
|
||||
OSIXS @JNAME ;jname of top job
|
||||
SKIPE @USTP
|
||||
SKIPL @APRC ;stopped and disowned?
|
||||
SKIPA
|
||||
JRST [OASC [ASCIZ / (Detached)/]
|
||||
JRST UCR]
|
||||
SKIPGE @APRC ;just disowned?
|
||||
OASC [ASCIZ / (Disowned)/]
|
||||
UCR: OASCR [0]
|
||||
|
||||
SYSNXT: ADD U,L ;next job
|
||||
CAMGE U,@USRHI
|
||||
JRST SYSLUP
|
||||
|
||||
QUIT: .BREAK 16,140000 ;exit
|
||||
|
||||
|
||||
; ================================================================
|
||||
; uuo handler (typeout uuos)
|
||||
; ================================================================
|
||||
|
||||
ZZZ==.
|
||||
LOC 40
|
||||
0
|
||||
JSR UUOH
|
||||
LOC ZZZ
|
||||
UUOCT==0
|
||||
UUOTAB: JRST ILUUO
|
||||
IRPS X,,[DEC BPTR OCT CTLP ASCC SIX ASC ASCI ASCR SIXS HPOS ALIGN SIGN]
|
||||
UUOCT==UUOCT+1
|
||||
O!X=UUOCT_27.
|
||||
JRST UO!X
|
||||
TERMIN
|
||||
|
||||
IFG UUOCT-37, PRINTC /---TOO MANY UUO'S---/
|
||||
|
||||
UUOMAX==.-UUOTAB
|
||||
|
||||
|
||||
UUOD: 0 ; contents of UUO eff addr.
|
||||
UUOE: 0 ; UUO effad.
|
||||
|
||||
UUOH: 0
|
||||
PUSH P,A
|
||||
PUSH P,B
|
||||
PUSH P,C
|
||||
PUSH P,D
|
||||
MOVEI @40 ; get eff addr. of uuo
|
||||
MOVEM UUOE
|
||||
MOVE @0
|
||||
MOVEM UUOD ; contents of eff adr
|
||||
MOVE B,UUOE ; eff adr
|
||||
LDB A,[270400,,40] ; get uuo ac,
|
||||
LDB C,[330600,,40] ; op code
|
||||
CAIL C,UUOMAX
|
||||
MOVEI C,0 ; grt=>illegal
|
||||
JRST @UUOTAB(C) ; go to proper rout
|
||||
|
||||
UUORET: POP P,D
|
||||
POP P,C
|
||||
POP P,B
|
||||
POP P,A ; restore ac's
|
||||
JRST 2,@UUOH
|
||||
|
||||
ILUUO: .VALUE [ASCIZ /:ILLEGAL UUO/]
|
||||
|
||||
UOBPTR: MOVEI C,0
|
||||
MOVE B,UUOD
|
||||
JRST UOASC1
|
||||
|
||||
UOASCR: SKIPA C,[^M] ; cr for end of type
|
||||
UOASC: MOVEI C,0 ; no cr
|
||||
HRLI B,440700 ; make ascii pointer
|
||||
UOASC1: ILDB A,B ; get char
|
||||
JUMPE A,.+3 ; finish?
|
||||
PUSHJ P,IOTA
|
||||
JRST .-3 ; and get another
|
||||
SKIPE A,C ; get saved cr?
|
||||
PUSHJ P,IOTA
|
||||
JRST UUORET
|
||||
|
||||
UOASCC: HRLI B,440700 ; make ascii pointer
|
||||
UOAS1C: ILDB A,B ; get char
|
||||
CAIN A,^C
|
||||
JRST UUORET
|
||||
PUSHJ P,IOTA
|
||||
JRST UOAS1C ; and get another
|
||||
|
||||
UOCTLP: MOVEI A,^P
|
||||
PUSHJ P,IOTA1
|
||||
|
||||
UOASCI: MOVE A,B ; prt ascii immediate
|
||||
PUSHJ P,IOTA
|
||||
JRST UUORET
|
||||
|
||||
UOSIX: MOVE B,UUOD
|
||||
USXOOP: JUMPE B,UUORET
|
||||
LDB A,[360600,,B]
|
||||
ADDI A,40
|
||||
PUSHJ P,IOTA
|
||||
LSH B,6
|
||||
JRST USXOOP
|
||||
|
||||
UOSIXS: MOVE A,[440600,,UUOD]
|
||||
USLOOP: ILDB C,A
|
||||
ADDI C,40
|
||||
PUSHJ P,IOTC
|
||||
TLNE A,770000
|
||||
JRST USLOOP
|
||||
JRST UUORET
|
||||
|
||||
UOHPOS: SUB B,HPOS
|
||||
SKIPG B
|
||||
MOVEI B,1 ; always at least one space
|
||||
UOHPO1: MOVEI A,40
|
||||
PUSHJ P,IOTA
|
||||
SOJG B,UOHPO1
|
||||
JRST UUORET
|
||||
|
||||
POWER: 0 ? 1 ? 10. ? 100. ? 1000. ? 10000. ? 100000. ? 1000000.
|
||||
|
||||
UOSIGN: MOVM D,UUOD
|
||||
ANDI A,7
|
||||
MOVE A,POWER-1(A)
|
||||
MOVEI C,40
|
||||
UOSIG1: CAMLE A,D
|
||||
PUSHJ P,IOTC
|
||||
IDIVI A,10.
|
||||
CAIE A,1
|
||||
JRST UOSIG1
|
||||
MOVEI A,"+
|
||||
SKIPGE UUOD
|
||||
MOVEI A,"-
|
||||
SKIPN UUOD
|
||||
MOVEI A,"
|
||||
PUSHJ P,IOTA
|
||||
SETZ A,
|
||||
JRST UODEC
|
||||
|
||||
UOALIG: MOVE D,UUOD
|
||||
ANDI A,7
|
||||
MOVE A,POWER(A)
|
||||
MOVEI C,40
|
||||
UOALI1: CAMLE A,D
|
||||
PUSHJ P,IOTC
|
||||
IDIVI A,10.
|
||||
CAIE A,1
|
||||
JRST UOALI1
|
||||
SETZ A,
|
||||
|
||||
UODEC: SKIPA C,[10.] ; get base for decimal
|
||||
UOOCT: MOVEI C,8. ; octal base
|
||||
MOVE B,UUOD ; get actual word to prt
|
||||
JRST .+3 ; join code
|
||||
UODECI: SKIPA C,[10.] ; decimal
|
||||
UOOCTI: MOVEI C,8.
|
||||
MOVEM C,BASE'
|
||||
SKIPN A
|
||||
HRREI A,-1 ; a=digit count
|
||||
PUSHJ P,UONUM ; print numbr
|
||||
JRST UUORET
|
||||
|
||||
UONUM: IDIV B,BASE
|
||||
HRLM C,(P) ; save digit
|
||||
SOJE A,UONUM1 ; done if 0
|
||||
SKIPG A ; + => more
|
||||
SKIPE B ; - => b=0 => done
|
||||
PUSHJ P,UONUM ; else more
|
||||
UONUM1: HLRZ C,(P) ; retreive digits
|
||||
ADDI C,"0 ; make to ascii
|
||||
CAILE C,"9 ; is it good dig
|
||||
ADDI C,"A-"9-1 ; make hex digit
|
||||
PUSHJ P,IOTC
|
||||
POPJ P, ; ret
|
||||
|
||||
IOTC: PUSH P,A
|
||||
MOVE A,C
|
||||
PUSHJ P,IOTA
|
||||
POP P,A
|
||||
POPJ P,
|
||||
|
||||
HPOS: 0 ; line pos
|
||||
|
||||
IOTA: CAIN A,^P
|
||||
JRST [.IOT TYOC,["^]
|
||||
ADDI A,100
|
||||
JRST IOTA1]
|
||||
CAIN A,^J
|
||||
POPJ P,
|
||||
IOTA1: .IOT TYOC,A
|
||||
CAIE A,^M
|
||||
JRST IOTTAB
|
||||
SKIPE SCRFLG'
|
||||
.IOT TYOC,[^J]
|
||||
SETZM HPOS
|
||||
POPJ P,
|
||||
; update line pos
|
||||
IOTTAB: CAIN A,^I
|
||||
JRST [MOVE A,HPOS
|
||||
ADDI A,10
|
||||
ANDI A,7770
|
||||
MOVEM A,HPOS
|
||||
POPJ P,]
|
||||
AOS HPOS
|
||||
POPJ P,
|
||||
|
||||
INIT: MOVE A,[-200,,200]
|
||||
MOVEI B,0
|
||||
.CALL [SETZ
|
||||
SIXBIT /CORBLK/
|
||||
MOVEI %CBRED
|
||||
MOVEI %JSELF
|
||||
A
|
||||
MOVEI %JSABS
|
||||
SETZ B]
|
||||
.LOSE 1000
|
||||
|
||||
MOVE A,USRVAR
|
||||
USRLOP: MOVE B,(A)
|
||||
.EVAL B,
|
||||
.VALUE
|
||||
ADDI B,400000
|
||||
HRLI B,U
|
||||
MOVEM B,1(A)
|
||||
ADD A,[2,,2]
|
||||
JUMPL A,USRLOP
|
||||
MOVE A,SYSLOC
|
||||
SYSLOP: MOVE B,(A)
|
||||
.EVAL B,
|
||||
.VALUE
|
||||
ADDI B,400000
|
||||
MOVEM B,1(A)
|
||||
ADD A,[2,,2]
|
||||
JUMPL A,SYSLOP
|
||||
MOVE A,SYSCON
|
||||
SYSCLP: MOVE B,(A)
|
||||
.EVAL B,
|
||||
.VALUE
|
||||
MOVEM B,1(A)
|
||||
ADD A,[2,,2]
|
||||
JUMPL A,SYSCLP
|
||||
POPJ P,
|
||||
|
||||
; TABLES FOR EVAL
|
||||
|
||||
; GROUP 1: VALUE SAVED HAS U IN LH, 400000 ADDED.
|
||||
USRTAB: SQUOZE 0,APRC
|
||||
APRC: 0
|
||||
SQUOZE 0,USTP
|
||||
USTP: 0
|
||||
SQUOZE 0,UNAME
|
||||
UNAME: 0
|
||||
SQUOZE 0,XUNAME
|
||||
XUNAME: 0
|
||||
SQUOZE 0,XJNAME
|
||||
XJNAME: 0
|
||||
SQUOZE 0,JNAME
|
||||
JNAME: 0
|
||||
SQUOZE 0,SUPPRO
|
||||
SUPPRO: 0 ; SUPERIOR PROCESS
|
||||
SQUOZE 0,UTMPTR
|
||||
UTMPTR: 0
|
||||
USRVAR: USRTAB-.,,USRTAB
|
||||
|
||||
; GROUP 2: VALUE SAVED HAS 400000 ADDED. REFERS TO ABSOLUTE LOCATIONS IN SYSTEM
|
||||
SYSTAB: SQUOZE 0,USRHI
|
||||
USRHI: 0
|
||||
SYSLOC: SYSTAB-.,,SYSTAB
|
||||
|
||||
; GROUP 3: LOCATION-INDEPENDENT VALUES
|
||||
SYSCTB: SQUOZE 0,L
|
||||
L: 0
|
||||
SQUOZE 0,NCT
|
||||
NCT: 0
|
||||
SQUOZE 0,USRRCE
|
||||
USRRCE: 0
|
||||
SYSCON: SYSCTB-.,,SYSCTB
|
||||
|
||||
END START
|
||||
|
||||
Reference in New Issue
Block a user