; Mex patches for ATR8000 with MDM7 overlay
; These patches allow MEX to test the atr's
; Parelell port status - Select a baud rate
; Automatically from MEX's PHONE library.
;
; To install, use DDT and overlay the .HEX files over MEX.
;
;
; Ex. DDT MEX112.COM
;     -IMXO-ATR1.HEX
;     -R
;     -IMXO-SM13.HEX
;     -R
;     -S0D11
;     -94 D5(<- YOU TYPE D5)
;     -46 1D(<- YOU TYPE 1D) - - - You just installed the printer!
;     -G0
;
; DDT Will return to the logged drive at which time type SAVE 95 ATRMEX.COM
; at cp/m's comand prompt.
;
;
;          My thanks to the author of M7ATR
;
;                       also
;
;            to Ron Fowler author of MEX
;
;
;                      PATCHES
;         Authored by Rich Gortatowsky  [72376,2153]
;
;                     (12/22/84)
;
       .Z80
       ORG     01D5H         ;Place printer status routine in LOGON
                             ;as MEX does'nt use that area.
PSTAT: IN      A,(20H)       ;Get printer status
       RLCA                  ;If busy = 0BFH.. Carry set on busy
       JR      NC,PRED       ;If 3FH, printers ready
       LD      A,00H         ;A REAL busy code back to MEX.
       RET
PRED:  LD      A,0FFH        ;A REAL ready status back to MEX.
;
; This next routine allows for auto-baud selection from the PHONE command
; This has only been tested in MEX112.COM, Mex passes a value from 0 to 9
; to the routine in the A register, 0 corresponding to 110 baud and 9
; corresponding to 19.2k baud.
;
; * HOW CONVIENIENT! considering the ATR's SETCMD: routine uses these   *
; *                       same values!                                  *
;
NBAUD: ORG     06ADH         ;Right after physical modem ovly
       PUSH    HL
       PUSH    DE            ;Save all regs.
       PUSH    BC
       LD      HL,03F0H      ;Time values for CTC (baud values)
       PUSH    AF            ;Save the Baud select value passed from MEX
       ADD     A,L           ;Add to get offset to baud rate.
       LD      L,A           ;Store back to L.
       LD      B,(HL)        ;B now contains the Baud value
       LD      HL,06AAH      ;Parity values? HA! CTC init bytes!
       LD      A,(0683H)     ;Index from SETCMD.
       ADD     A,L           ;Must keep parity (?) the same
       LD      L,A           ;HL now points to it.
       LD      C,(HL)        ;C contains ctc control.
       POP     AF            ;Get Baud select value (from MEX)
       CP      06H           ;greater than 1200 bps?
       JR      NC,GRTR       ;If > 1200
       SET     5,C           ;Pre-scale of 256, not 16.
GRTR:  LD      (02BAH),BC    ;Set up parameter for use by COMINIT
       LD      (0398H),A     ;Set SETCMD:'s counter.
       LD      (0107H),A     ;Set MSPEED in modem ovly (MEX looks at it).
       CALL    02BCH         ;Call COMINIT, will init CTC.
       POP     BC
       POP     DE            ;Restore regs (DE used by COMINIT)
       POP     HL
       RET                   ;All DONE!
 
;
;
;
       ORG     0107H         ;Newbaud vector.
       DW      NBAUD
;
       END
