;******************************
;         NEWTDV.M68          ;
;******************************

; Change terminal drivers -- AMOSL version

       SEARCH  SYS
       SEARCH  TRM
NEWTDV: BYP                     ; Move command line pointer
       LIN                             ;    to new driver name
       BNE     NTD1                    ; Error if missing
       TYPECR  Usage:  NEWTDV trmdef - name
       EXIT
NTD1:   LEA     A1,TDVNAM               ; Index packed name area
       PACK                            ; Convert driver name to RAD50 format
       PACK
       LEA     A1,TDVNAM               ; Reset A1 to name start
       MOV     @A1,D1

;  First see if driver is in system terminal driver chain

       MOV     #TRMTDC,A2              ; A2 = driver chain base address
NTD2:   MOV     @A2,#0                  ; A2 = address of next driver
       CMP     A2,#0                   ; end of chain means not found
       BEQ     NTD3
       CMP     D1,4(A2)                ; do names match?
       BNE     NTD2                    ; no - go to next driver in chain
       ADD     #8.,A2                  ; yes - bypass link word and
       BR      NTD6                    ;       two name words

;   Look for driver isn system memory

NTD3:   SRCH    @A1,A2                  ; A2 gets module address if found
       BEQ     NTD5
NTD4:   TYPESP  ?Can't find             ; else report failure to user
NTD7:   PRNAM   @A1
       CRLF
       EXIT
NTD5:   MOV     #MEMBAS,A6              ; driver must be in system memory
       CMM     A2,@A5                  ; (SRCH checks system and user mem)
       BHIS    NTD4
NTD6:   JOBIDX  A6                      ; locate my job control block
       MOV     JOBTRM(A6),A5           ;  - then my TRMDEF table
       MOV     A2, T. TDV(A5)          ; point to new terminal driver
       TYPESP  Switched to             ; report success to user
       JMP     NTD7
       EXIT
TDVNAM: WORD    0,0,[TDV]               ; RAD50 name of driver
       END