PR#3 PREFIX /A2OSX.BUILD NEW INC 1 AUTO 6 .LIST OFF *-------------------------------------- PrintFAX >STAX PrintFAX.Next+1 pla sta PrintFAX.99+1 pla sta PrintFAX.98+1 lda $C011 RDLCBNK2 sta PrintFAX.91+1 lda $C012 RDLCRAM sta PrintFAX.90+1 lda $C08A RROMBNK1, make sure $D000-$FFFF ROM selected lda $CFFF get access to $C800-$CFFF internal ROM PrintFAX.1 stz X.b0Flag stz X.DigitCount jsr PrintFAX.Next beq PrintFAX.90 cmp #'%' bne .7 .2 jsr PrintFAX.Next beq PrintFAX.90 cmp #'0' bne .3 ror X.b0Flag beq -> CS bra .2 .3 bcc .4 cmp #'9'+1 bcs .4 and #$0f sta X.DigitCount bra .2 .4 ldx #PrintFAX.Tbl-PrintFAX.Esc-1 .5 cmp PrintFAX.Esc,x beq .6 dex bpl .5 bra PrintFAX.1 .6 txa asl tax jmp (PrintFAX.Tbl,x) .7 cmp #'\' bne .8 jsr PrintFAX.Next beq PrintFAX.90 cmp #'n' bne .8 lda #$0D .8 ora #$80 jsr $FDED COUT bra PrintFAX.1 PrintFAX.90 lda #$ff bpl PrintFAX.98 ROM was selected, nothing to do PrintFAX.91 lda #$ff bmi PrintFAX.92 RAM bank 2 was selected ldx #$8B RRAMWRAMBNK1 .HS 2C bit abs PrintFAX.92 ldx #$83 RRAMWRAMBNK2 lda $C000,x lda $C000,x PrintFAX.98 lda #$ff Self modified RTS HI pha PrintFAX.99 lda #$ff Self modified RTS LOPrintFAXPrintFAX pha rts *-------------------------------------- PrintFAX.Next lda $ffff beq .8 inc PrintFAX.Next+1 bne .8 inc PrintFAX.Next+2 Always !=0 .8 rts *-------------------------------------- PrintFAX.Esc .AS "dDhHS" PrintFAX.Tbl .DA PrintFAX.D .DA PrintFAX.DD .DA PrintFAX.H .DA PrintFAX.HH .DA PrintFAX.S *-------------------------------------- PrintFAX.D ldx #0 .HS D0 bne PrintFAX.DD plx pla >STAX X.HexBuffer stz X.BCDBuffer stz X.BCDBuffer+1 stz X.BCDBuffer+2 ldx #16 let's roll 16 bits sed .2 asl X.HexBuffer rol X.HexBuffer+1 php cpy will disturb carry while BCD adc ldy #0 .3 plp lda X.BCDBuffer,y adc X.BCDBuffer,y sta X.BCDBuffer,y php iny cpy #3 Last byte of X.BCDBufferBUF? bne .3 plp dex bne .2 cld ldx #0 ldy #5 .4 lda X.BCDBuffer,x pha and #$0F ora #$B0 sta X.DigitBuffer,y dey pla lsr lsr lsr lsr ora #$B0 sta X.DigitBuffer,y inx dey bpl .4 lda X.DigitCount beq .5 lda #6 sec sbc X.DigitCount .5 tay .6 lda X.DigitBuffer,y cmp #"0" beq .7 sec ror X.b0Flag bra .8 .7 cpy #5 beq .8 lda #" " bit X.b0Flag bpl .81 lda #"0" .8 phy jsr $FDED COUT ply .81 iny cpy #6 bne .6 .9 jmp PrintFAX.1 *-------------------------------------- PrintFAX.HH pla jsr $FDDA PRBYTE PrintFAX.H pla jsr $FDDA PRBYTE jmp PrintFAX.1 *-------------------------------------- PrintFAX.S pla sta .1+2 sta .2+2 pla sta .1+1 sta .2+1 .1 lda $ffff beq .9 tax ldy #1 .2 lda $ffff,y ora #$80 jsr $FDED COUT iny dex bne .2 .9 jmp PrintFAX.1 *-------------------------------------- X.HexBuffer .BS 2 X.BCDBuffer .BS 3 X.b0Flag .BS 1 X.DigitCount .BS 1 X.DigitBuffer .BS 6 *-------------------------------------- MAN SAVE /A2OSX.SRC/X.PRINTF.S