;*************************** AMUS Program Label ******************************
; Filename: JOBCMD.M68/JOBCMD.SBR Date: 05/24/91
; Category: UTIL Hash Code: 777-511-407-763 Version: 1.0(100)
; Initials: ULTR/US Name: DAVID PALLMANN
; Company: ULTRASOFT CORPORATION Telephone #: 5163484848
; Related Files:
; Min. Op. Sys.: AMOSL 1.3B/AMOS32 1.0 Expertise Level: INT
; Special: Useful for trapping access to AMOS command level
; Description: Allows setting/clearing of JOBCMD field in Job Control Block
!*****************************************************************************
;****************************************************************************
;* *
;* JOBCMD.SBR *
;* Lets an AlphaBASIC program set or clear JOBCMD field *
;* *
;****************************************************************************
;Copyright (C) 1991 UltraSoft Corporation. All Rights REserved.
;
;Written by: David Pallmann
;
;Usage: XCALL JOBCMD, command$
;
;Where: <command$> is the 1-19 character AMOS command to set, or a null string
; ("") to clear the JOBCMD field.
;
;Examples: XCALL JOBCMD, "LOGOUT"
; XCALL JOBCMD, ""
CHECK: CMPW X.ARGS(A3),#1 ; 1 argument supplied?
JNE CNTERR ; no - error
MOV X.SIZ1(A3),D0 ; get size of argument
JEQ CLEAR ; zero - clear JOBCMD field
;set JOBCMD field
SET: JOBIDX A0 ; index job control block
LEA A1,JOBCMD(A0) ; index job command field
MOV X.ADR1(A3),A2 ; index user argument
MOV #19.,D2 ; set loop count
COPY: MOVB (A2)+,D1 ; get character
BEQ TERM ; end of string
MOVB D1,(A1)+ ; copy character
DEC D2 ; decrement field size count
BEQ TERM2 ; filled
SOB D0,COPY ; loop unless end of user argument
TERM: CLRB (A1)+ ; clear remainder
SOB D2,TERM ; of JOBCMD field
TERM2: CLRB @A1 ; terminate JOBCMD field
RTN ; return to BASIC program
;clear JOBCMD field
CLEAR: JOBIDX A0 ;
LEA A1,JOBCMD(A0) ;
MOV #20.,D0 ;
10$: CLRB (A1)+ ;
SOB D0,10$ ;
RTN ; return to BASIC program
CNTERR: TYPECR ?Argument count error in JOBCMD.SBR
RTN ;