A2osX/X.PRINTF.S.txt
2016-12-13 17:32:37 +01:00

188 lines
2.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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