;*****************************************************************
; JOBARY.M68    -       JOB ARRAY Subroutine
;
; by Dave Heyliger - AMUS Staff
;
; Returns all JOBs defined to the system in an array. Array ends with "".
;
; Usage:        XCALL JOBARY,array
;               where array is MAP1 array(40),S,6,""   (you may modify the 40)
;
; Sample BASIC program:
;
;       MAP1 names(40),S,6              ! 40 is not mandatory. Must be > #JOBS
;
;       XCALL JOBARY,names(1)           ! note names(1) !!!
;       FOR I = 1 TO 40
;               IF names(I) = "" THEN I = 40 &
;                                ELSE PRINT names(I)
;       NEXT I
;********************************************************************

       OBJNAM  .SBR

       VMAJOR=1                                ;original by Dave Heyliger
       VMINOR=0


       SEARCH  SYS                             ;search normals
       SEARCH  SYSSYM
       COPY    XCALL                           ;XCALL.M68 in [100,133]

       PHDR    -1,PH$REE!PH$REU

PARSE:  CMPW    XC.ARG(A3),#1           ;1 argument specified?
       BNE     INERR                   ;nope, error
       CMPW    XC.TY1(A3),#XC$STR      ;string?
       BNE     INERR                   ;nope, error
       CMP     XC.SZ1(A3),#6           ;should be this big
       BLT     INERR                   ;nope, error

SETUP:  MOV     JOBTBL,A0               ;get start of job table listing
       MOV     XC.AD1(A3),A2           ;get start of array into A2

LOOP:   MOV     (A0)+,A4                ;A4 points to a JCB or a -1
       MOV     A4,D0                   ;set status register
       BMI     DONE                    ;if -1 then done
       BEQ     LOOP                    ;no attached JOB but still not done
10$:    LEA     A1,JOBNAM(A4)           ;point A1 to RAD50 job name
       UNPACK                          ;unpack 1st half of job name
       UNPACK                          ;unpack 2nd half of job name
       BR LOOP                         ;get next JOB

DONE:   CLR     @A2                     ;end array with null
       RTN                             ;and return

INERR:  TYPECR  <Error in entry format for JOBARY.SBR>
       RTN

       END