;FNDUSR.M68 - Finds JOBs owned by an AlphaBase user
;
MAYCREF
SEARCH SYS
SEARCH SYSSYM
SEARCH TRM
BYP
MOV A2,A4
JOBIDX A6
MOV JOBTRM(A6),A5
ADDW #T$IMI+T$ECS,(A5)
MOV JOBTBL,A0
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:
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 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:
ADD #^H4C4,A1 ; MOVE POINTER TO ID
MOV A4,A2
CMPB (A2)+,(A1)+
JNE BY1
TRM
BEQ E1
CMPB (A2)+,(A1)+
JNE BY2
TRM
BEQ E2
CMPB (A2)+,(A1)+
JNE BY3
TRM
BEQ E3
CMPB (A2)+,(A1)+
JNE BY4
TRM
BEQ E4
CMPB (A2)+,(A1)+
JNE BY5
SUB #5,A1
JMP N1
E4: MOV A1,A2
SUB #4,A1
JMP N
E3: MOV A1,A2
SUB #3,A1
JMP N
E2: MOV A1,A2
SUB #2,A1
JMP N
E1: MOV A1,A2
SUB #1,A1
N: TRM ! IS THIS END OF A1 TO
JNE LOOP1
N1:
TTYL (A1) ; PRINT IT
TAB ; BLANK SPACE
ADD #6,A1 ; BUMP POINTER TO NAME
TTYL (A1) ; TYPE NAME
TAB
LEA A1,JOBNAM(A3) ; program name to be unpacked
LEA A2,BUFF ; where the unpack goes to
UNPACK
UNPACK
MOV #0,(A2)
TTYL BUFF ; PRINT NAME
LEA A2,BUFF
CRLF ; kick new line for blank between jobs
JMP LOOP1 ; goto main loop
ENDTBL:
EXIT ; get out of the job
BY5: SUB #1,A1
BY4: SUB #1,A1
BY3: SUB #1,A1
BY2: SUB #1,A1
BY1: SUB #1,A1
JMP LOOP1