;*************************** AMUS Program Label ******************************
; Filename: SETTRM.M68                                        Date: 08/30/89
; Category: Change baud rate Hash Code: 234-160-442-335     Version: 2.0(103)
; Initials: AODP/AM       Name: GARY D. CHESSER
; Company: EMERGITECH                              Telephone #: 61488666712
; Related Files:none
; Min. Op. Sys.: 1.3                           Expertise Level: BEG
; Special: Allow you to find out or change baud rate of any trmdef on the
; system. This will work with the AM1213 ports.
; Description: This program will allow you to change any TRMDEF's baud rate.
;
; INPUT: SETTRM TERM1 1200
;
; RESULT: Will change TERM1's baud rate to 1200.
;
; INPUT: SETTRM TERM1
;
; RESULT: Will tell you TERM1's baud rate.
;

       SEARCH  SYS
       SEARCH  SYSSYM

VMAJOR=2.
VMINOR=0.
VSUB=0.
VEDIT=103.
VWHO=0.

START:  PHDR    -1,0,PH$REE!PH$REU
       SSTS    D3                      ; save psw for lsts
       PUSH    #42                     ; Need more !
       PUSH                            ;
       GETMEM  @SP                     ;
       BEQ     MEMORY                  ;
       LSTS    D3                      ; BACK TO USER MODE
       EXIT                            ;

MEMORY: POP     A4                      ; Free memory space in A4
       POP                             ;

INDEX:  JOBIDX  A5                      ;
       MOV     70(A5),A5               ;

       BYP                             ; Skip blanks
       LIN                             ; just a CR?
       JNE     GOOD                    ; nope
       EXIT

GOOD:   TRM                             ; Check ours?
       JEQ     PRTBAU                  ;  Yes, go do it
       NUM                             ; Is it a baud rate?
       BEQ     GETRAT                  ;  Yes, change this trmdef

; LOCATE A TERMINAL DEFINITION
; EXIT  A3->TERMINAL DEFINITION BLOCK
;       =0 IF NOT FOUND

GET1:   FILNAM  (A4),XXX                ; Save the terminal name
       MOV     (A4),D2                 ; Save terminal name
       CALL    TRMSRH                  ; Locate terminal definition, in A3
       CMP     A5,#0                   ; If A3=0 then it wasn't found
       BNE     GETRAT                  ; A5 now indexes the TRMDEF to change
       TYPECR  <That terminal was not found>
       LSTS    D3                      ; BACK TO USER MODE
       EXIT

TRMSRH: MOV     TRMDFC,A5               ; INDEX THE TERMINAL DEFINITION CHAIN
TMSA:   CMMW    4(A5),(A4)              ; TERMINAL DEFINITION NAME
       BNE     TMSB                    ; TO FILENAME IN DDBTRM(A5)
       CMMW    6(A5),2(A4)
       BNE     TMSB
       ADD     #10,A5                  ; ADVANCE TO TERMINAL DEFINITION BASE
       RTN
TMSB:   MOV     @A5,A5                  ; Next terminal in chain
       CMP     A5,#0
       BNE     TMSA                    ; Unless end of terminal chain
       RTN

GETRAT: SUPVR
       BYP
       LIN
       JEQ     PRTBAU
       GTDEC
       MOVW    4(A0),D2
       LEA     A0,TABLE


BAUD:   CMPW    D1,(A0)+
       BEQ     RATE
       TSTW    @A0
       BNE     BAUD
       TYPESP  <?Baud rate>
       DCVT    0,OT$TRM
       TYPECR  < is not a valid baud rate>
       LSTS    D3              ; BACK TO USER MODE
       EXIT

RATE:   SUBW    #2,A0           ; Backup to actual baud rate
       LEA     A6,TABLE        ; Reindex the beginning of table
       SUB     A6,A0           ; Calculate the difference
       MOV     A0,D0           ;
       ASR     D0,#1           ; Make it a count offset

CLROIP: MOVW    @A5,D7          ;
       ANDW    #200,D7         ; MAKE SURE NOT OIP FLAG
       BNE     CLROIP          ;
       MOVW    D0,120(A5)      ; Save new baud rate flag
       MOV     2(A5),A6        ;
       CALL    2(A6)           ; Call init routine
       CRLF                    ;
       LSTS    D3              ; BACK TO USER MODE
       EXIT                    ;

PRTBAU: CLR     D1              ;
       MOVW    120(A5),D1      ; Get current baud rate
       ASL     D1,#1           ; Shift to word size
       LEA     A1,TABLE        ; Index table
       MOVW    0(A1)[D1],D1    ; Offset it
       TYPESP  <Current baud rate is>
       DCVT    0,OT$TRM
       CRLF
       LSTS    D3              ;BACK TO USER MODE
       EXIT

TABLE:  WORD    50.
       WORD    75.
       WORD    110.
       WORD    134.
       WORD    150.
       WORD    200.
       WORD    300.
       WORD    600.
       WORD    1200.
       WORD    1800.
       WORD    2000.
       WORD    2400.
       WORD    3600.
       WORD    4800.
       WORD    7200.
       WORD    9600.
       WORD    19200.
       WORD    38400.
       WORD    56000.
       WORD    0
       END