


       NAM OUTCH
MTTYSO EQU $FCF4
MTTYDO EQU $FCF5
CASSET EQU $FF62
SPEED  EQU $FF02
       ORG $F9CF
*      REV. 1.0 BY MOTOROLA MICROSYSTEMS MARCH 15, 1977
*
*      ALL REFERENCES TO ROUTINE VIA EXBUG SHOULD
*      USE EXBUG'S JUMP VECTOR ENTRY AT $F018
*
*      OUTPUT CHARACTER FROM ACCUMULATOR-A
OCHAR  PSH B
OCHAR1 LDA B MTTYSO
       BIT B #2
       BEQ OCHAR1
       STA A $FCF5
       PUL B
       RTS
*      OUTPUT CHARACTER FROM ACCUMULATOR A
*      IF 30 CPS AND TI TERMINAL PAD 4 NULLS AFTER C/R
*      IF 120 CPS & TI TERN.HHM. PAD 23 NULLS AFTER C/R
*      AND PAD 3 NULLS AFTER OTHER CHAR
*
OUTCH  PSH B SAVE B-REG
OUTC1  LDA B MTTYSO
       BIT B #%00000010
       BEQ OUTC1 TRANSMIT NOT READY
       STA A MTTYDO OUTPUT CHAR
       CMP A #$D
       BNE OUTCH5 NOT C/R
       TST CASSET
       BNE OUTCH3 PUNCHING
       LDA B #23
       TST SPEED
       BEQ OUTCH9 10 CPS PRINTING
       BMI OUTCH7
OUTCH3 LDA B #4
OUTCH7 EQU *
       PSH A
       LDA A #0 NULL
       BSR OCHAR OUTPUT CHAR
       PUL A
       DEC B
       BNE OUTCH7 MORE NULLS
OUTCH9 PUL B
       RTS
OUTCH5 TST SPEED
       BPL OUTCH9 NOT C/R; 10 OR 30 CPS
       TST CASSET
       BNE OUTCH9 PUNCHING
       PAGE
       LDA B #3 120 CPS PRINTING; NOT C/R
       BRA OUTCH7
OUT2H   LDA A 0,X OUTPUT 2 HEX CHAR
       BSR CHEXL FORM LEFT HEX CHAR
       BSR OUTCH OUTPUT CHAR
       LDA A 0,X
       BSR CHEXR FORM RIGHT HEX CHAR
       BSR OUTCH OUTPUT CHAR
       INX
       RTS

       ORG $F9C0
CHEXL  LSR A CONVERT LEFT BCD DIGIT TO 4
       LSR A 
       LSR A 
       LSR A 
CHEXR  AND A #$F CONVERT RIGHT DIGIT TO HEX
       ADD A #$30
       CMP A #$39
       BLS CHEX1 IS 30-39
       ADD A #$7
CHEX1  RTS
       END
