CALL TOP
CALL CRLF
START: MOV JOBTBL,A0
LEA A1,BUFF
MOV #0,(A1)+ ;set up clear buff
MOV #0,(A1)+
MOV #0,(A1)+
MOV #0,(A1)+
BR LOOP1 ; skip over buffer
BLANK: ASCII / /
BUFF: BLKW 24.
LOGIN: RAD50 /LOGIN /
FLPCTL: RAD50 /FLPCTL/
BGPCTL: RAD50 /BGCTL /
ABMON: RAD50 /ABMON /
LOOP1: MOV (A0)+,D7
BEQ LOOP1 ; no job allocated
CMP D7,#-1 ; ? end of table
JEQ ENDTBL ; yes
MOV D7,A3 ; no put index to jcb in a3
; this is the jbc indexed by a3
LOOP: LEA A1,JOBNAM(A3) ; program name to be unpacked
LEA A2,BUFF ; where the unpack goes to
UNPACK
UNPACK
MOV #0,(A2)
MOV JOBBAS(A3),D1 ; job base addr.
JEQ LOOP1 ; NEVER ON
MOV JOBSIZ(A3),D1 ; job size
JEQ LOOP1 ; NO MEMORY
MOV JOBUSR(A3),D1 ; LOAD PPN NUMBER
CMP D1,#177777 ; TEST FOR LOGOFF
JEQ LOOP1 ; IF NOT VALID GOTO MESSAGE
MOV JOBPRG(A3),D1 ; LOAD JOBNAME
LEA A4,LOGIN ; GET ADDR LOGIN
CMP D1,(A4) ; COMPAIR TO JOB NAME
JEQ LOOP1
LEA A4,ABMON ; GET ADDR RAD50 ABMON
CMP D1,(A4) ; COMPAIR TO JOB NAME
JEQ LOOP1
LEA A4,BGPCTL ; GET ADDR RAD50 BGPCTL
CMP D1,(A4) ; COMPAIR TO JOB NAME
JEQ LOOP1
LEA A4,FLPCTL ; GET ADDR RAD50 FLPCTL
CMP D1,(A4) ; COMPAIR TO JOB NAME
JEQ LOOP1
MOV JOBBAS(A3),A1 ; POINT TO JOB BASE
MOV #0,D1
LOP:
MOV @A1,D1 ; size of element
JEQ LOOP1 ; if zero then last memory mod reached
ADD A1,D1 ; add addr. to counter for next item
ADD #6,A1 ; move pointer to NAME
CMP (A1),#^H2D361C21 ; MACTH FOR GIN
JEQ MACH
MOV D1,A1 ; set new pointer
JMP LOP ; goto loop
MACH: TTYL BUFF ; PRINT NAME
LEA A2,BUFF
TAB
ADD #^H4C4,A1 ; MOVE POINTER TO ID
TTYL (A1) ; PRINT IT
TAB ; BLANK SPACE
ADD #6,A1 ; BUMP POINTER TO NAME
TTYL (A1) ; TYPE NAME
CALL CRLF ; kick new line for blank between jobs
JMP LOOP1 ; goto main loop
ENDTBL:
EXIT ; get out of the job
NOTO:
NOMEM:
LOGOF:
JMP LOOP1
CRLF: CRLF
SUB #1,D2
JGE BSK
KBD
TOP: MOV #19.,D2
MOVW #177400,D1
TCRT
TYPE < Job ID Name of user>
CRLF
TYPE <-------------------->
TYPE <-------------------->
TYPE <-------------------->
TYPE <------------------->
CRLF
BSK: RTN