;       SETX.M68
;       VER 1.0         8611.20
;
;       ALLOW USER TO SET/RESET THE USER NAME AND THE COMMAND LINE
;               IN THE JOB CONTROL BLOCK
;
;       PROPRIETARY PROGRAM MATERIAL
;
;       THIS MATERIAL IS THE PROPERTY OF JEFF STUYVESANT,
;       12307 PACIFIC AVE, APT 2,MAR VISTA, CALIF. ,90066
;       PERMISSION TO COPY AND USE IS GRANTED FOR
;       NON-PROFIT USES ONLY.
;
;       Copyright (c) 1986 JEFF STUYVESANT


       SEARCH  SYS
       SEARCH  SYSSYM
       SEARCH  TRM


       RADIX 8.

VMAJOR  =       1.
VMINOR  =       0.
VSUB    =       0.
VEDIT   =       0.
VWHO    =       0.



       PHDR    -1,0,PH$REE!PH$REU

START:  ; A2 POINTS TO INPUT LINE

       BYP
       LIN
       BEQ     SEL%ERR
       MOVW    #0,D0
       LEA     A1,SEL%LST                              ; POINT TO SELECTION LIST
10$:    CMMB    @A2,4(A1)                               ; CMP THE TWO
       BEQ     200$                                    ; IF MATCH CKECK REMAINDER
       BLO     SEL%ERR                                 ; IF LOW GONE TO FAR ERROR
       ADD     @A1,A1                                  ; POINT TO NEXT
       BR      10$

100$:   ADD     @A1,A1
       MOV     A0,A2
       BR      10$

200$:   ; A2 POINTS TO INPUT: A1 POINTS TO PROMPT LIST SELECTION

       MOVW    #-1,D0                                  ; COUNTER
       MOV     A2,A0                                   ; SAVE A2

220$:   INC     D0                                      ; POINT TO NEXT
       TRM                                             ; END OF INPUT ?
       BEQ     FOUND                                   ; IF END WE'VE FOUND IT
       CMPB    4(A1)[~D0],#0                           ; END OF PROMPT?
       BEQ     100$                                    ; BR IF YES - NO GOOD LOOK SOME MORE
       CMMB    (A2)+,4(A1)[~D0]                        ; CMP FOR MATCH
       BNE     100$
       BR      220$

FOUND:  ; A1 POINTS TO PROMPT, A2 POINTS TO AFTER INPUTED PROMPT
       JOBIDX  A5
       LEA     A0,10(A1)
       ADD     @A0,A0
       JMP     @A0

SEL%ERR:
       CRLF
       TYPECR  <USAGE: SETX function,{new parameter}>
       CRLF
       TYPECR  <Functions:>
       TYPECR  <       USN  Display or set User name>
       TYPECR  <            (maximum of 19 characters)>
       CRLF
       TYPECR  <       CMD  Display of set Command line>
       TYPECR  <            (maximum of 29 characters)>
       EXIT

SEL%LST:
       LWORD   L%2-.           ; 0
       ASCIZ   \CMD\           ; 4
       LWORD   CMD-.           ; 10
L%2:    LWORD   L%3-.           ; 0
       ASCIZ   \USN\           ; 4
       LWORD   USN-.           ; 10
L%3:    LWORD   0
       BYTE    255.
       BYTE    255.
       EVEN

;
;
; INPUT/EDIT USER NAME
;
USN:
       BYP                             ; BYPASS ANY BLANKS
       LEA     A0,JOBUSN(A5)           ; POINT TO JOB USER NAME
       TRM                             ; POINT TO TERMINATING CHAR
       BNE     50$                     ; IF NOT TRM THEN STORE

       CMPB    @A0,#0                  ; ANY USER NAME STORED ?
       BNE     10$                     ; IF NE THAN CURRENT STORED

       TYPECR  %No current USER NAME stored
       EXIT
;
; PRINTS OUT USER NAME
10$:
       ; A0 POINTS TO JOBUSN IN MEMORY
       ; A2 POINTS TO INPUT LINE

       TYPE    Current USER NAME:
       MOVW    #19.,D1
       BR      T.OUT

;
; STORES USER NAME
50$:
       CMPB    @A2,#'*                 ; * IDENT DELETE
       BEQ     200$                    ; TO RTN TO DELETE

       ; A0 POINTS TO JOBUSN IN MEMORY
       ; A2 POINTS TO INPUT LINE

       MOVW    #19.,D1
       BR      STORE
;
; DELETES THE USER NAME
200$:
       ; A0 POINTS TO JOBUSN IN MEMORY
       ; A2 POINTS TO INPUT LINE

       MOVW    #19.,D1

;
; DELETE STORED LINE
DEL:
       MOVW    D1,D0

220$:   MOVB    #0,(A0)+
       DBEQ    D0,220$
       EXIT
;
;
STORE:  ; A0 POINTS TO SELECTED LINE IN MEMORY
       ; A2 POINTS TO INPUT LINE
       ; D1 CONTAINS THE COUNT

       MOVW    D1,D0

80$:    MOVB    (A2)+,(A0)+
       DBEQ    D0,80$
       EXIT
;
;
T.OUT:  ; A0 POINTS TO SELECTED LINE IN MEMORY
       ; A2 POINTS TO INPUT LINE
       ; D1 CONTAINS THE COUNT

       MOVW    D1,D0
       BR      30$

20$:
       TOUT

30$:    MOVB    (A0)+,D1
       DBEQ    D0,20$
;       CRLF
       EXIT

;
;
; INPUT/EDIT CMD LINE
;
CMD:
       BYP                             ; BYPASS ANY BLANKS
       LEA     A0,JOBCMD(A5)           ; POINT TO JOB USER NAME
       TRM                             ; POINT TO TERMINATING CHAR
       BNE     50$                     ; IF NOT TRM THEN STORE

       CMPB    @A0,#0                  ; ANY USER NAME STORED ?
       BNE     10$                     ; IF NE THAN CURRENT STORED

       TYPECR  %No current CMD LINE stored
       EXIT
;
; PRINTS OUT CMD LINE
10$:
       ; A0 POINTS TO JOBCMD IN MEMORY
       ; A2 POINTS TO INPUT LINE

       TYPE    Current CMD LINE:
       MOVW    #29.,D1
       BR      T.OUT

;
; STORES THE CMD LINE
50$:
       CMPB    @A2,#'*                 ; * IDENT DELETE
       BEQ     200$                    ; TO RTN TO DELETE

       ; A0 POINTS TO JOBCMD IN MEMORY
       ; A2 POINTS TO INPUT LINE

       MOVW    #29.,D1
       BR      STORE
;
; DELETES THE CMD LINE
200$:
       ; A0 POINTS TO JOBCMD IN MEMORY
       ; A2 POINTS TO INPUT LINE

       MOVW    #29.,D1
       JMP     DEL
       END