PR#3 PREFIX /A2OSX.SRC NEW INC 1 AUTO 6 .LIST OFF *-------------------------------------- PrintPStrAX >STAX TmpPtr1 lda (TmpPtr1) tax beq .9 ldy #1 .1 lda (TmpPtr1),y ora #$80 jsr $FDED COUT iny dex bne .1 .9 rts *-------------------------------------- PrintCStrAX >STAX TmpPtr1 pla sta .91+1 pla sta .9+1 ldy #0 .1 stz X.b0Flag stz X.DigitCount lda (TmpPtr1),y beq .9 cmp #'%' bne .5 .11 iny lda (TmpPtr1),y beq .9 cmp #'0' bne .22 ror X.b0Flag beq -> CS bra .11 .22 bcc .21 cmp #'9'+1 bcs .21 and #$0f sta X.DigitCount bra .11 .21 cmp #'d' bne .2 pla jsr PrintADec bra .8 .2 cmp #'D' bne .3 plx pla jsr PrintAXDec bra .8 .3 cmp #'h' bne .4 pla jsr $FDDA PRBYTE bra .8 .4 cmp #'H' bne .5 pla jsr $FDDA PRBYTE pla jsr $FDDA PRBYTE bra .8 .5 cmp #'\' bne .7 iny lda (TmpPtr1),y beq .9 cmp #'n' bne .9 lda #$0D .7 ora #$80 jsr $FDED COUT .8 iny bne .1 .9 lda #$ff Self modified RTS HI pha .91 lda #$ff Self modified RTS LO pha rts *-------------------------------------- PrintADec ldx #0 PrintAXDec >STAX X.HexBuffer stz X.BCDBuffer stz X.BCDBuffer+1 stz X.BCDBuffer+2 phy 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 jsr $FDED COUT .81 iny cpy #6 bne .6 .9 ply rts *-------------------------------------- *-------------------------------------- X.HexBuffer .BS 2 X.BCDBuffer .BS 3 X.b0Flag .BS 1 X.DigitCount .BS 1 X.DigitBuffer .BS 6 *-------------------------------------- MAN SAVE X.PRINTF.S