;*************************** AMUS Program Label ****************************** ; Filename: CTLJOB.M68 Date: 1/19/93 ; Category: SBR Hash Code: 165-552-504-177 Version: 1.0(104) ; 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 ; Description: AlphaBASIC SBR to return AMOS job name or parent job name if ; running under MULTI; see also JOBNUM.M68/.SBR & JOBTRM.M68/.SBR ; ;*****************************************************************************;*; Updated on 19-Jan-93 at 2:12 PM by Steve Ash; edit time: 0:05:32 ;CTLJOB.M68 ;=========================================================================== ; ; Get job name from AlphaBASIC or Parent/Control job name if running Multi ; ;=========================================================================== ; Alpha Clean Systems, Inc ; 224 S Second St ; Rogers, AR 72756 ; (501) 636-8188 ;=========================================================================== ; Usage: ; ; XCALL JOBNAM, jobnam ; ; Where: ; jobnam = AMOS job name and is a string var at least ; 6 bytes long ; ; "jobnam" will be returned with trailing spaces stripped. ; ;=========================================================================== ; Revision History ; === Vers 1.0 === ; [100] 01-Jun-85 - initial release /ACS ; [101] 03-Jul-87 - added support for MULTI spawned jobs /saa ; [102] 16-Sep-88 - fix pblm w/NULLing out 1st byte past arg if arg ; contains no spaces /saa ; [103] 16-Sep-88 - add argument checking /saa ; [104] 09-Oct-90 - add conditional assembly code for .SBR/.XBR /wda ;=========================================================================== VMAJOR = 1 VMINOR = 0 VSUB = 0 VEDIT = 104. NVALU SELECT IF EQ,SELECT ASMMSG /=== Assembling .SBR version ===/ OBJNAM .SBR ENDC IF EQ,SELECT-1 ASMMSG /=== Assembling .XBR version ===/ OBJNAM .XBR ENDC ;** External Routines ****************************************** SEARCH SYS SEARCH SYSSYM SEARCH TRM ;** Offset Definitions ***************************************** ; use .OFDEFs to eliminate need to compute each address .OFINI .OFDEF ARGCNT,2 ; argument count .OFDEF A1.TYP,2 ; argument #1 type .OFDEF A1.IDX,4 ; argument #1 index .OFDEF A1.SIZ,4 ; argument #1 size ;** Main Routine *********************************************** START: PHDR -1,0,PH$REE!PH$REU ; s/b 1 string argument at least 6 bytes long CMPW ARGCNT(A3),#1 ;is there 1 argument? [103] BNE ARGERR ; no [103] CMPW A1.TYP(A3),#2 ;is arg-1 a string [103] BNE ARGERR ; no [103] CMP A1.SIZ(A3),#6 ;is it at least 6 bytes long? [103] BLO ARGERR ; no [103] ; get the job name JOBIDX A6 ;index JCB MOV JOBATT(A6),D6 ;get controller job [101] BEQ 10$ ;none so go get JOBNAM [101] MOV D6,A6 ;get owner job address [101] 10$: LEA A1,JOBNAM(A6) ;point A1 to RAD50 job name MOV A1.IDX(A3),A2 ;index JOBNAM argument in BASIC UNPACK ;unpack 1st half of job name UNPACK ;unpack 2nd half of job name MOVB #-1,D0 ;init space cnt to pre-increment[101] TRIM: INCB D0 ;pre-increment space cnt [102] CMPB -(A2),#40 ;are we at a space? BEQ TRIM ; yes - decrement arg index TSTB D0 ;were there any spaces? [102] BEQ 10$ ; no - so exit [102] CLRB 1(A2) ; yes - set 1st space to NUL 10$: RTN ;return to AlphaBASIC ;****** Error Routines ***************************************** ; display argument error message & exit to AMOS [103] ARGERR: MOVW #<-1_8.>+37.,D1 ;make sure TCRT ; screen is on MOV #7,D1 ;ring terminal TTY ; bell TYPE IF EQ,SELECT TYPE ENDC IF EQ,SELECT-1 TYPE ENDC TYPESP < - Notify Tech Support> KBD ;get KBD input RTN ;return to AlphaBASIC END ;=========================================================================== .