

       NAM BIGBAN
       ORG $2000
       SPC 1
*INPUT UP TO 80 CHARACTERS TO BE PRINTED
START  LDS #STACK INIT USER STACK
       LDX #REMARK INPUT MESSAGE AREA
       STX REMREG HSKP NEXT REM CHAR POINTER
       LDAA #$80 RESET VALUE
TAGA0  STAA 0,X HSKP REMARKS AREA
       INX
       CPX #REMARK+81 ALL HSKP DONE
       BNE TAGA0 NO, FINISH THE HSKPING
       LDX #INREQ INPUT REQUEST MESSAGE
       JSR PDATA OUTPUT TO USER
*      INPUT USERS MESSAGE
       LDX #REMARK MESSAGE STORAGE AREA
TAGA1  JSR INCHNP INPUT 1 CHAR W/NO PARITY
       CMPA #CR CARRIAGE RETURN ENTERED
       BEQ TR000 EQUAL END OF INPUT
       STAA 0,X STORE THIS CHARACTER
       INX
       CPX #REMARK+80 80 CHARS INPUT
       BNE TAGA1 NO, GET ANOTHER
*      UP TO 80 CHARACTER REMARK HAS BEEN ENTERED
*       NOW TRANSLATE IT FOR PRINTING
TR000  LDX #CRLF2 OUTPUT TWO CR LF 
       JSR PRINT1
       LDX REMREG NEXT INPUT REMARK CHAR
       LDAA 0,X TO ACC A
       BMI START ALL DONE, GET NEXT MESSAGE
       INX ADJUST POINTER TO NEXT CHAR
       STX REMREG AND SAVE IT
       SUBA #$20 CHAR LESS THAN A SPACE
       BMI TR010 YEP, MAKE IT A SPACE
       CMPA #$3B CHAR TOO LARGE
       BLS TR011 NO, GO TO TRANSLATE IT
TR010  CLR A MAKE CHARACTER A SPACE
TR011  LDX #INDEX-1 IX TO TRANS TBL IN ACC A
TR012  INX NEXT TABLE ENTRY ADDRESS
       DECA MORE TO ADJUST TO
       BPL TR012 YEP
       LDAA 0,X TRANSLATE TABLE ENTRY VALUE
       CMPA #$73 SEMI-COLON 
       BNE TR013 NO
       LDX #PATTRN
       BRA TR013A
TR013  CMPA #$71 COMMA
       BNE TR014 NO
       LDX #PATTRN+12
TR013A STX HOLD+4
       LDX #PATTRN+68
       STX HOLD
       LDX #PATTRN+12
       LDAA #8 TO PRINT 8 LINES
       STAA LNCNT
TR013B LDX #PRNT+12 PRINT LINE ADDRESS
       STX IX3 NEXT PRNT CHAR ADDRESS
       LDX HOLD 1ST TO PRINT FROM
       STX IX4 NEXT CHAR TO MOVE TO PRINT
       DEX
       STX HOLD
       LDAB #04 MOVE 4 CHARS
       JSR TR013C
       LDX HOLD+2 NEXT LOC TO GET FROM
       STX IX4
       LDAB #13 MOVE 13 CHAR
       JSR TR013C
       LDX #PATTRN MOVE 13 SPACES
       LDAB #13
       JSR TR013C
       LDX HOLD+4
       STX IX4
       LDAB #13
       JSR TR013C
       LDAB #$04 EOT
       STAB 0,X
       JSR PRINT
       DEC LNCNT ANOTHER LINE TO DO
       BNE TR013B YEP
       LDX #$2020 TWO SPACE CHAR
       STX PRNT+2
       STX PRNT+4
       STX PRNT+6
       JMP TR000 GET NEXT CHARACTER
       SPC 1
TR014  CMPA #$70 DOLLAR SIGN
       BNE TR02 NO
       LDX #DOLLAR ADDRESS OF DOLLAR SIGN
       LDAB #05 BREAKDOWN BLOCKS
       BRA TR03
       SPC 1
TR02   LDX #CHAR-20 CHARACTER BREAKDOWN TABLE
TR020  LDAB #20 20 BYTES PER ENTRY
TR021  INX ADJUST ENDEX TO NEXT
       DECB BREAKDOWN TABLE ENTRY
       BNE TR021 FIRST BYTE ADDRESS
       DECA ANOTHER ENTRY TO BYPASS
       BPL TR020 YEP
       LDAB #04 #OF BKDWN BLOCKS 2 WK W/
*      CHARACTER BREAKDOWN TABLE ENTRY IS NOW IN IX
TR03   STX IX1 CHAR BRKDWN ENTRY ADDRESS
       STAB BDCNT BRKDWN SEGMENT COUNT
*      READY TO START GETTING PRINT OFFSET VALUES
TR04   LDX #HOLD NEXT HOLD ENTRY TO STORE
       STX IX2 OFFSET TBL ADDRESS INTO
       LDAB #5 LOOP COUNT OF FIVE
       STAB CNT1 CHAR BRKDWN ENTRY/LINE
TR041  LDX IX1 CHAR BRKDWN ENTRY ADDR
       LDAB 0,X OFFSET ENTRY NUMBER
       BPL TR042 GOOD NUMBER, GO ON
       JMP TR000 NEGATIVE MEANS FINISHED
TR042  INX NEXT 
       STX IX1 CHAR BRKDWN ENTRY ADDRESS
       LDX #OFFSET
TR044  LDAA #8 EIGHT BYTES PER ENTRY
TR045  INX PASS NEXT PRINT OFFSET ENTRY
       DECA 
       BNE TR045
       DECB AT PROPER ENTRY
       BNE TR044 NO, PASS OVER ANOTHER
       STX IX5 TEMP SAVE PRINT OFFSET ADDR
       LDAA IX5
       LDAB IX5+1
       LDX IX2 HOLD TABLE ENTRY ADDR
       STAA 0,X PRINT OFFSET TABLE ENTRY
       INX ADDRESS TO HOLD TABLE
       STAB 0,X
       INX
       STX IX2 NEXT HOLD ENTRY ADDR
       DEC CNT1 ALL THIS LINE OF CHAR
       BNE TR041 BRKDWN ENTRIES NOT DONE
*      TABLE HOLD CONTAINS 5 ADDRESSES, EACH ADDRESS
*       IS FOR A TABLE OF PRINT OFFSETS ENTRY
       LDAA #8 EIGHT LINES TO PRINT
       STAA LNCNT
TR051  LDX #HOLD HSKP NEXT HOLD TBL ADDR TO
       STX IX2 WORK WITH
       LDAA #5 FIVE BLOCKS PER LINE
       STAA CNT1
       LDX #PRNT+7 HEX PRINT LINE ADDRESS
       STX IX3
TR052  LDX IX2 HOLD TABLE ENTRY ADDRESS
       LDX 0,X
       STX IX4 SAVE ADDRESS OF THIS PRN
       LDX IX2
       LDAA 0,X
       LDAB 1,X
       ADDB #1
       ADCA #0
       STAA 0,X SAVE NEXT OFFSET TABLE
       STAB 1,X ENTRY ADDRESS IN HOLD TBL
       INX
       INX
       STX IX2 NEXT HOLD TABLE ENTRY ADDR
       LDX IX4 THIS OFFSET ENTRY ADDRESS
       LDAB 0,X THIS OFFSET VALUE
       LDX #PATTRN-1 ADDR OF PRINT PATTERNS
TR06   INX NEXT PRINT PATTERN START ADDR
       DECB AT THIS ONE
       BPL TR06 NO
       STX IX4 YEP, SAVE PRNT PATTERN ADDR
*      NOW MOVE PRINT PATTERN TO PRINT LINE
       LDAB #13 THIRTEEN CHARACTERS
       JSR TR013C MOVE PRINT CHARS
       DEC CNT1 ALL BLOCKS MOVED
       BNE TR052 NOP
       LDX #PRNT PRINT DATA FROM
       JSR PRINT1 DATA STRING
       DEC LNCNT 8 LINES PER THIS BLOCK
       BNE TR051 NO, DO NEXT LINE
       DEC BDCNT THIS CHAR BRKDWN DONE
       BEQ TR071
       JMP TR04 NO, DO NEXT BRKDWN
TR071  JMP TR000 DO NEXT CHAR
       SPC 1
*      MOVE DATA FROM PATTRN TO PRINT LINE
TR013C LDX IX4 NEXT CHAR FR PATTRN AREA
       LDAA 0,X
       INX
       STX IX4
       LDX IX3 TO NEXT PRNT CHAR SLOT
       STAA 0,X
       INX
       STX IX3
       DECB ALL DONE
       BNE TR013C NO
       RTS YEP, RETURN
       SPC 1
*      SIMPLE PRINT ROUTINE
LIST   PSHA
       CLR CNTRL
       LDAA #$FF
       STAA DATA
       LDAA #$3E
       STAA CNTRL
       PULA
       STAA DATA
       LDAA #$36
       STAA CNTRL
       LDAA #$3E
       STAA CNTRL
LIST1  LDAA CNTRL
       BPL LIST1
       LDAA DATA
LIST2  RTS
       SPC 1
PRINT  LDAA #$0D CR
       BSR LIST
       LDAA #$0A LF
PRINT3 BSR LIST
PRINT1 LDAA 0,X DATA STRING
       CMPA #$04 EOT
       BEQ LIST2
       INX
       BRA PRINT3
       SPC 1
*      WORKING STORAGE
IX1    FDB 0 CHARACTER BRKDWN ENTRY ADDR
IX2    FDB 0 NEXT HOLD TBLE ENTRY ADDRESS
IX3    FDB 0 NEXT PRINT LINE ADDRESS
IX4    FDB 0
IX5    FDB 0
REMREG FDB 0 NEXT REMARK ENTRY
BDCNT  FCB 0 BRKDWN SEGMENT LENGTH
CNT1   FCB 0 CHAR BRKDWN LOOP COUNT
LNCNT  FCB 0 # OF LINES TO PRINT
       SPC 1
*      TRANSLATE TABLE
INDEX  FCB 00 SPACE
       FCB 42 !
       FCB 00 SPACE
       FCB 00 #
       FCB $70 $
       FCB 46 %
       FCB 00 SPACE
       FCB 49 '
       FCB 39 (
       FCB 40 )
       FCB 43 *
       FCB 41 +
       FCB $71 ,
       FCB 44 -
       FCB 51 .
       FCB 45 /
       FCB 15 0
       FCB 27 1
       FCB 28 2
       FCB 29 3
       FCB 30 4
       FCB 31 5
       FCB 32 6
       FCB 33 7
       FCB 34 8
       FCB 35 9
       FCB 47 :
       FCB $73 ;
       FCB 37 <
       FCB 48 =
       FCB 38 >
       FCB 50 ?
       FCB 00 @
       FCB 01 A
       FCB 02 B
       FCB 03 C
       FCB 04 D
       FCB 05 E
       FCB 06 F
       FCB 07 G
       FCB 08 H
       FCB 09 I
       FCB 10 J
       FCB 11 K
       FCB 12 L 
       FCB 13 M
       FCB 14 N
       FCB 15 O
       FCB 16 P
       FCB 17 Q
       FCB 18 R
       FCB 19 S
       FCB 20 T
       FCB 21 U
       FCB 22 V
       FCB 23 W
       FCB 24 X
       FCB 25 Y
       FCB 26 Z
       FCB 36 CENT
       FCB 52 UNKNOWN
       SPC 1
*      CHARACTER BREAK DOWN TABLE
CHAR   FCB 02,02,02,02,02 - -
       FCB 02,02,02,02,02
       FCB 02,02,02,02,02
       FCB -1,-1,-1,-1,-1
       FCB 01,01,08,09,02 -A-
       FCB 02,01,10,07,25
       FCB 02,01,05,03,24
       FCB 01,01,04,06,02
       FCB 01,01,01,01,01 -B-
       FCB 01,02,01,02,01
       FCB 01,17,01,17,01
       FCB 10,16,18,16,06
       FCB 05,03,01,08,09 -C-
       FCB 01,06,02,10,01
       FCB 01,09,02,05,01
       FCB 10,07,02,04,06
       FCB 01,01,01,01,01 -D-
       FCB 01,02,02,02,01
       FCB 01,09,02,05,01
       FCB 10,07,01,04,06
       FCB 01,01,01,01,01 -E-
       FCB 01,02,01,02,01
       FCB 01,02,01,02,01
       FCB 01,02,02,02,01
       FCB 01,01,01,01,01 -F-
       FCB 02,02,01,02,01
       FCB 02,02,01,02,01
       FCB 02,02,02,02,01
       FCB 05,03,01,08,09 -G-
       FCB 01,06,02,10,01
       FCB 01,17,19,05,01
       FCB 10,07,19,04,06
       FCB 01,01,01,01,01 -H-
       FCB 02,02,01,02,02
       FCB 02,02,01,02,02
       FCB 01,01,01,01,01
       FCB 01,02,02,02,01 -I 
       FCB 01,01,01,01,01
       FCB 01,02,02,02,01
       FCB -1,-1,-1,-1,-1
       FCB 05,03,02,02,02 -J-
       FCB 01,06,02,02,02
       FCB 01,09,02,02,02
       FCB 10,07,01,01,01
       FCB 01,01,01,01,01 -K-
       FCB 02,05,03,08,09
       FCB 20,04,06,10,07
       FCB 24,22,02,02,02
       FCB 01,01,01,01,01 -L-
       FCB 01,02,02,02,02
       FCB 01,02,02,02,02
       FCB -1,-1,-1,-1,-1
       FCB 01,01,01,01,01 -M-
       FCB 02,02,20,04,06
       FCB 02,02,14,08,09
       FCB 01,01,01,01,01
       FCB 01,01,01,01,01 -N-
       FCB 02,21,20,04,06
       FCB 05,03,24,22,02
       FCB 01,01,01,01,01
       FCB 05,03,01,08,09 -O- -0-
       FCB 01,06,02,10,01
       FCB 01,09,02,05,01
       FCB 10,07,01,04,06
       FCB 01,01,01,01,01 -P-
       FCB 02,02,01,02,01
       FCB 02,02,01,17,01
       FCB 02,02,10,16,06
       FCB 05,03,01,08,09 -Q-
       FCB 01,06,02,10,01
       FCB 01,03,02,05,01
       FCB 04,07,01,04,06
       FCB 01,01,01,01,01 -R-
       FCB 02,21,01,02,01
       FCB 05,03,01,17,01
       FCB 04,06,10,16,06
       FCB 05,02,05,15,09 -S-
       FCB 01,02,01,18,01
       FCB 01,17,01,02,01
       FCB 10,16,06,02,06
       FCB 02,02,02,02,01 -T-
       FCB 01,01,01,01,01
       FCB 02,02,02,02,01
       FCB -1,-1,-1,-1,-1
       FCB 05,03,01,01,01 -U-
       FCB 01,06,02,02,02
       FCB 01,09,02,02,02
       FCB 10,07,01,01,01
       FCB 02,05,03,01,01 -V-
       FCB 20,04,06,02,02
       FCB 14,08,09,02,02
       FCB 02,10,07,01,01
       FCB 01,01,01,01,01 -W-
       FCB 10,07,25,02,02
       FCB 05,03,24,02,02
       FCB 01,01,01,01,01
       FCB 08,09,02,05,03 -X-
       FCB 10,07,11,04,06
       FCB 05,03,12,08,09
       FCB 04,06,02,10,07
       FCB 08,09,02,05,03 -Y-
       FCB 10,07,11,04,06
       FCB 02,23,14,08,09
       FCB 02,02,02,10,07
       FCB 08,09,02,02,01 -Z-
       FCB 01,07,25,13,01
       FCB 01,23,14,08,01
       FCB 01,02,02,10,07
       FCB 01,02,02,02,09 -1-
       FCB 01,01,01,01,01
       FCB 01,02,02,02,02
       FCB -1,-1,-1,-1,-1
       FCB 01,08,09,02,09 -2-
       FCB 01,10,01,02,01
       FCB 01,02,01,17,01
       FCB 01,02,10,16,06
       FCB 01,02,02,02,01 -3-
       FCB 01,02,15,02,01
       FCB 01,17,01,17,01
       FCB 10,16,18,16,06
       FCB 02,02,01,01,01 -4-
       FCB 02,02,01,02,02
       FCB 01,01,01,01,01
       FCB 02,02,01,02,02
       FCB 01,02,01,01,01 -5-
       FCB 01,02,01,02,01
       FCB 01,17,01,02,01
       FCB 10,16,06,02,06
       FCB 05,03,01,08,09 -6-
       FCB 01,18,01,10,01
       FCB 01,17,01,02,01
       FCB 10,16,06,02,06
       FCB 08,09,02,02,01 -7-
       FCB 10,07,25,13,01
       FCB 02,23,14,08,01
       FCB 02,02,02,10,07
       FCB 05,15,17,15,09 -8-
       FCB 01,18,01,18,01
       FCB 01,17,01,17,01
       FCB 10,16,18,16,06
       FCB 05,02,05,15,09 -9-
       FCB 01,02,01,18,01
       FCB 01,09,01,17,01
       FCB 10,07,01,04,06
       FCB 08,03,01,08,02 -CENT-
       FCB 10,01,25,01,02
       FCB 02,01,14,01,09
       FCB 02,16,02,16,07
       FCB 02,21,26,13,02 -.-
       FCB 05,03,12,08,09
       FCB 04,06,02,10,07
       FCB -1,-1,-1,-1,-1
       FCB 08,09,02,05,03 ->-
       FCB 10,07,11,04,06
       FCB 02,23,27,22,02
       FCB -1,-1,-1,-1,-1
       FCB 05,03,01,08,09 -(-
       FCB 01,06,02,10,01
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB 01,09,02,05,01 -)-
       FCB 10,07,01,04,06
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB 02,02,01,02,02 -+-
       FCB 01,01,01,01,01
       FCB 02,02,01,02,02
       FCB -1,-1,-1,-1,-1
       FCB 19,01,01,01,01 -!-
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB 08,09,01,05,03 -*-
       FCB 10,07,01,04,06
       FCB 05,03,01,08,09
       FCB 04,06,01,10,07
       FCB 02,02,01,02,02 ---
       FCB 02,02,01,02,02
       FCB 02,02,01,02,02
       FCB -1,-1,-1,-1,-1
       FCB 08,09,02,02,02 -/-
       FCB 10,07,25,13,02
       FCB 02,23,14,08,09
       FCB 02,02,02,10,07
       FCB 08,09,02,02,01 -%-
       FCB 10,07,25,13,02
       FCB 02,23,14,08,09
       FCB 01,02,02,10,07
       FCB 01,02,01,02,02 -:-
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB 02,02,19,19,02 -=-
       FCB 02,02,19,19,02
       FCB 02,02,19,19,02
       FCB -1,-1,-1,-1,-1
       FCB 02,02,02,01,01 -'-
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB 02,02,02,02,25 -?-
       FCB 19,01,25,13,01
       FCB 02,02,14,01,24
       FCB -1,-1,-1,-1,-1
       FCB 01,02,02,02,02 -.-
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB -1,-1,-1,-1,-1
       FCB 01,01,02,01,01 -UNKNOWN-
       FCB 02,19,02,02,12
       FCB 05,19,02,05,11
       FCB 01,01,02,24,27
DOLLAR FCB 05,02,05,15,09 -$-
       FCB 01,02,01,18,01
       FCB 01,01,01,01,01
       FCB 01,17,01,02,01
       FCB 10,16,06,02,06
       SPC 1
*      TABLE OF PRINT OFFSETS
OFFSET FCB 00,00,00,00,00,00,00,00 -00-
       FCB 13,13,13,13,13,13,13,13 -01-
       FCB 00,00,00,00,00,00,00,00 -02-
       FCB 07,09,11,13,13,13,13,13 -03-
       FCB 13,13,13,13,13,15,17,19 -04-
       FCB 00,00,00,01,04,07,09,12 -05-
       FCB 14,16,19,22,25,00,00,00 -06-
       FCB 13,13,13,13,13,11,09,07 -07-
       FCB 19,17,15,13,13,13,13,13 -08-
       FCB 00,00,00,25,22,19,16,14 -09-
       FCB 12,10,07,04,01,00,00,00 -10-
       FCB 38,66,95,13,13,13,13,13 -11-
       FCB 13,13,13,13,13,95,66,38 -12-
       FCB 00,00,00,00,00,24,22,20 -13-
       FCB 13,13,13,11,08,06,03,01 -14-
       FCB 32,46,74,13,13,13,13,13 -15-
       FCB 13,13,13,13,13,74,46,32 -16-
       FCB 00,00,00,53,95,13,13,13 -17-
       FCB 13,13,13,95,53,00,00,00 -18-
       FCB 19,19,19,19,19,19,19,19 -19-
       FCB 01,04,06,08,11,13,13,13 -20-
       FCB 00,00,00,00,00,02,04,06 -21-
       FCB 20,22,24,00,00,00,00,00 -22-
       FCB 06,04,02,00,00,00,00,00 -23-
       FCB 13,13,13,15,18,20,23,25 -24-
       FCB 25,23,20,18,15,13,13,13 -25-
       FCB 00,00,00,32,74,13,13,13 -26-
       FCB 13,13,13,74,32,00,00,00 -27-
       SPC 1
*      PRINT PATTERNS
PATTRN FCC /             /
       FCC /XXXXXXXXXXXXX/
       FCC /            X/
       FCC /           XX/
       FCC /XXX         X/
       FCC /XXXX       XX/
       FCC /XXXXXXX     X/
       FCC /XXXXXXXXXX XX/
       FCC /XXXXX        /
       SPC 1
*      INPUT REQUEST MESSAGE
INREQ  FCB CR,LF,LF
       FCC /INPUT YOUR MESSAGE.../
       FCC /  CARRIAGE RETURN ENDS IT./
       FCB CR,LF,04
       SPC 1
CRLF2  FCB CR,LF,CR,LF,04
       SPC 1
HOLD   FDB 0,0,0,0,0
*      USER INPUT REMARKS
REMARK RMB 81
       SPC 1
*      PRINT LINE
PRNT   FCC /       /
       RMB 65
       FCB  CR,LF,EOT
       RMB 39
STACK  RMB 1
       SPC 1
CR     EQU $0D
LF     EQU $0A
EOT    EQU $04
CNTRL  EQU $EC11
DATA   EQU $EC10
INCHNP EQU $F015 INPUT ONE CHAR/NO PARITY
PDATA  EQU $F024 PRINT CR,LF,DATA STRING
       END START
