

       NAM FLAGX
*      ASCII TO 5X7 MATRIX CHARACTER CONVERTER *
*
*      THE PUNCH UNIT OF THE REMEX HIGH-SPEED READER/PUNCH
*      IS INTERFACED TO THE EXORCISER VIA THE B-SIDE OF THE 
*      PIA LOCATED AT BASE ADDRESS $EC40
*      A POSITIVE TRANSITION ON CB1 INDICATES SYSTEM AND
*      PUNCH READINESS
*      A LOW TRANSITION ON CB2 STROBES THE DATA TO THE 
*      PUNCH UNIT.
*
*      THIS PROGRAM READS A TEXT FROM KEYBOARD AND PUNCH IT ON
*       AN HIGH SPEED PUNCH (REMEX) AS 5X7 MATRIX CHARACTERS
*      WRITTEN BY JEAN-CLAUDE MONNEY  MOTOROLA GVA
*      THE FOLLOWING 59 ASCII CHARACTERS CAN BE 
*      GENERATED BY THE PROGRAM:
*      ABCDEFGHIJKLMNOPQRSTUVWXYZ
*      0123456789
*      !"#$%&'()@*+?-/.,><;:= (SPACE)
       SPC 1
*      MONITOR EQUATES EXBUG 1.2 (MINIBUG II)
PDATA1 EQU $F027               ($E130)
OUTCH  EQU $F018               ($E108)
INCH   EQU $F015               ($E11F)
OUTSW  EQU $FF53               ($A00C)
MONITR EQU $F564               ($E040)
*
PIAD   EQU $EC42
PIAC   EQU $EC43
CT2OUT EQU $20
CT1POS EQU $2
SWPOS  EQU $18
SWNEG  EQU $10
DIRREG EQU $0
DATREG EQU $4
       SPC 1
       ORG $2000
START  EQU *
       LDS #STACK
*      INITIALIZATION OF PUNCH PIA
       LDAA #CT2OUT+SWPOS+DIRREG+CT1POS
       STAA PIAC
       LDAA #$FF
       STAA PIAD
       LDAA #CT2OUT+SWPOS+DATREG+CT1POS
       STAA PIAC
*      ONLY THE CHARACTERS BETWEEN 20 AND 5A
*      INCLUDED WILL BE ACCEPTED FOR THE TEXT
*      THE PUNCH COMMAND IS OBTAINED BY C/RETURN KEY
NEWTXT LDX #MSG0
       JSR PDATA1
*      PRINT THE COMMENT
       LDX #TEXT
NEW    INC OUTSW
AGAIN  JSR INCH
       CMPA #$0D
       BEQ ENDTXT
       CMPA #$7F DEL
       BEQ RUBOUT
       CMPA #$20
       BLT AGAIN
       CMPA #$5A
       BGT AGAIN
       CLR OUTSW
       JSR OUTCH
       STAA X
       INX
       BRA NEW
       SPC 1
*      IF RUBOUT,DELETE AND PRINT THE PREVIOUS CHAR.
RUBOUT CPX #TEXT
       BEQ NEW
       DEX
       LDAA X
       JSR OUTCH
       BRA AGAIN
       SPC 1
*      END OF INPUT;START PUNCH
ENDTXT STAA X
SAME   BSR LEAD
       LDX #TEXT
LOAD   LDAA X
       INX
       STX SAVE
       LDX #TABLE
       CMPA #$0D C/R
       BEQ FIN
COMP   CMPA X
       BEQ OK
       INX
       INX
       INX
       INX
       INX
       INX
       BRA COMP
OK     LDAB #5
LOOP   INX
       LDAA X
       BSR PUNCH
       DECB
       BNE LOOP
*      PUNCH 2 BLANKS AFTER THE CHARACTER
       CLRA
       BSR PUNCH
       BSR PUNCH
       LDX SAVE
       BRA LOAD
FIN    BSR LEAD
       LDX #MSG1
       JSR PDATA1
       JSR INCH
       CMPA #'Y
       BEQ EXIT
       LDX #MSG2
       JSR PDATA1
       JSR INCH
       CMPA #'Y
       BEQ SAME
       JMP NEWTXT
EXIT   JMP MONITR
       SPC 1
*      PUNCH LEADER/TRAILER
LEAD   LDAB #100
       CLRA
SPACE  BSR PUNCH
       DECB
       BNE SPACE
       RTS
       SPC 1
*      PUNCH ONE CHARACTER ON "REMEX"
PUNCH  STAA PIAD SEND DATA TO PERFO.
       LDAA #CT2OUT+SWNEG+DATREG+CT1POS
       STAA PIAC
       LDAA #CT2OUT+SWPOS+DATREG+CT1POS
       STAA PIAC
       LDAA PIAD RELOAD ACCA & CLEAR INTER.
PCH2   TST PIAC
       BPL PCH2
       RTS
       SPC 1
MSG0   FCB $D,$A,0,0,0,0
       FCC /ENTER THE TEXT, /
       FCC %"C/R" KEY GIVES THE PUNCH ORDER%
       FCB $D,$A,0,0,0,0,4
MSG1   FCB $D,$A,0,0,0,0
       FCC /EXIT (Y OR N) ? /
       FCB 4
MSG2   FCB $D,$A,0,0,0,0
       FCC /SAME TEXT (Y OR N) ? /
       FCB 4
       SPC 1
*      CHARACTER GENERATOR TABLE
TABLE  FCB $20,0,0,0,0,0
       FCB $21,0,0,$7D,0,0
       FCB $22,0,$70,0,$70,0
       FCB $23,$14,$7F,$14,$7F,$14
       FCB $24,$12,$2A,$7F,$2A,$24
       FCB $25,$62,$64,$08,$13,$23
       FCB $26,$36,$49,$35,$02,$05
       FCB $27,0,0,$70,0,0
       FCB $28,$1C,$22,$41,0,0
       FCB $29,0,0,$41,$22,$1C
       FCB $2A,$22,$14,$7F,$14,$22
       FCB $2B,$08,$08,$3E,$08,$08
       FCB $2C,0,1,6,0,0
       FCB $2D,8,8,8,8,8
       FCB $2E,0,0,1,0,0
       FCB $2F,2,4,8,$10,$20
       FCB $ FCB $3F,$20,$40,$4D,$50,$20
       FCB $40,$3E,$41,$5D,$55,$3D
       FCB $41,$3F,$48,$48,$48,$3F
       FCB $42,$7F,$49,$4$42,$3D
       FCB $52,$7F,$48,$4C,$4A,$31
       FCB $53,$32,$49,$49,$49,$26
       FCB $54,$40,$40,$7F,$40,$40
       FCB $55,$7E,$1,1,1,$7E
       FCB $56,$7C,$2,1,2,$7C
       FCB $57,$7F,$2,$C,2,$7F
       FCB $58,$63,$14,$8,$14,$63
       FCB $59,$60,$10,$0F,$10,$60
       FCB $5A,$43,$45,$49,$51,$61
       SPC 1
SAVE   RMB 2
       RMB 30
STACK  RMB 1
TEXT   EQU *
*      NO LIMITATION OF THE INPUT BUFFER SIZE
*      EXCEPT STORAGE CAPACITY OF RAM !
       END START
