;*************************** AMUS Program Label ******************************
; Filename: JOBNUM.M68 Date: 1/19/93
; Category: SBR Hash Code: 676-133-712-251 Version: 1.0(100)
; Initials: ML/AM Name: Steve Ash
; Company: Alpha Clean Systems, Inc. Telephone #: 5016368188
; Related Files:
; Min. Op. Sys.: 1.xD(?) Expertise Level: INT
; Special: may not assemble using pre-2.0 assembler; MUST be LNKLIT'd
; Description: AlphaBASIC SBR to return AMOS job & parent job names given
; the job number w/in the job table; can be used w/XLOCK.SBR to find the
; name of the job which has a lock set; see also CTLJOB.M68 & JOBTRM.M68
;*****************************************************************************
;JOBNUM.M68
;===========================================================================
;
; Return job name & controller job for a job table entry
;
;===========================================================================
; Alpha Clean Systems, Inc
; 224 S Second St
; Rogers, AR 72756
; (501) 636-8188
;===========================================================================
; Usage:
;
; XCALL JOBNUM, jobnum, jobnam, ctljob
;
; Where:
; jobnum = job number w/in JOBTBL and is either
; F,6 or B,1 or B,2
;
; jobnam = AMOS job name and is a string var at least
; 6 bytes long
;
; ctlnam = AMOS job name of controller job if job is running
; under MULTI. Must be a string at least 6 bytes long.
;
; "jobnam" & "ctljob" will be returned with trailing spaces
; stripped. If jobnum <= 0 or is not a valid job table entry,
; then jobnam will be returned set to null. If job is not
; running under MULTI, then ctljob will be set to null.
;
;===========================================================================
; Revision History
; === Vers 1.0 ===
; [100] 07-Mar-89 - adapted from "old" NUMNAM.SBR /saa
;===========================================================================
; UNPACKs 4 RAD50 chars into 6 ASCII; nulls 1st space in string
DEFINE DEPACK arg
MOV arg(A3),A2 ;index job name arg in BASIC
LEA A1,JOBNAM(A0) ;point A1 to RAD50 job name
UNPACK ;unpack 1st half of job name
UNPACK ;unpack 2nd half of job name
MOVB #-1,D0 ;init space cnt to pre-increment
10$$: INCB D0 ;pre-increment space cnt
CMPB -(A2),#40 ;are we at a space?
BEQ 10$$ ; yes - decrement arg index
TSTB D0 ;were there any spaces?
BEQ 20$$ ;no - so go on
CLRB 1(A2) ;yes - set 1st space to NUL
20$$:
ENDM
;== Main Routine ===========================================================
START: PHDR -1,0,PH$REE!PH$REU
; s/b 3 arguments, 1st s/b F or B,1 or B,2; 2nd & 3rd s/b min of S,6
CMPW ARGCNT(A3),#3 ;are there 3 arguments?
JNE ARGERR ; no
CMPW A2.TYP(A3),#2 ;is arg-2 a string
JNE ARGERR ; no
CMP A2.SIZ(A3),#6 ;is it at least 6 bytes long
JLO ARGERR ; no
CMPW A3.TYP(A3),#2 ;is arg-3 a string
JNE ARGERR ; no
CMP A3.SIZ(A3),#6 ;is it at least 6 bytes long
JLO ARGERR ; no
CMPW A1.TYP(A3),#4 ;is arg-1 floating pt.?
BNE 10$ ;no - go check for binary
; arg-1 is F-type so convert to binary
MOV #A1.TYP,D1 ;yes - so convert to
CALL $GTARG ; binary in D1
JNE ARGERR ;error in $GTARG, go report it
BR JOBNUM ;go get jobnam
; check for B,1 or B,2
10$: MOV A1.IDX(A3),A6 ;point to argument
CMPW A1.TYP(A3),#6 ;is arg-1 a binary?
JNE ARGERR ;no - go report error
CMP A1.SIZ(A3),#1 ;is arg-1 a B,1?
BNE 20$ ;no - see if it's a B,2
MOVB (A6),D1 ;get the value into D1
BR JOBNUM ;go get jobnam
20$: CMP A1.SIZ(A3),#2 ;is arg-1 a B,2?
JNE ARGERR ;no - error out
MOVW (A6),D1 ;get job number into D1
; get the job name
JOBNUM: MOV A2.IDX(A3),A2 ;pre-set job name
CLRB @A2 ; to NUL
MOV A3.IDX(A3),A2 ;pre-set ctl job
CLRB @A2 ; to NUL
TSTB D1 ;is job # > 0?
BLE EXIT ;no - get out
MOV JOBTBL,A0 ;point A0 to the job table
DECB D1 ;calculate offset
MUL D1,#4 ; into job table
ADD D1,A0 ; for job # per arg-1
MOV (A0),A0 ;point A0 to the job's JCB
MOV A0,D0 ;is it a valid JOBTBL entry?
BLE EXIT ;no - get out
DEPACK A2.IDX ;convert job name to ASCII
; check for controller job
MOV JOBATT(A0),D0 ;get controller job
BEQ EXIT ;none so exit