A2osX/X.PRINTF.S.txt
2017-04-30 13:42:15 +02:00

195 lines
2.9 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.BUILD
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 PrintCStrAX.Next+1
pla
sta .91+1
pla
sta .9+1
.1 stz X.b0Flag
stz X.DigitCount
jsr PrintCStrAX.Next
beq .9
cmp #'%'
bne .5
.11 jsr PrintCStrAX.Next
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 .1
.2 cmp #'D'
bne .3
plx
pla
jsr PrintAXDec
bra .1
.3 cmp #'h'
bne .4
pla
jsr $FDDA PRBYTE
bra .1
.4 cmp #'H'
bne .5
pla
jsr $FDDA PRBYTE
pla
jsr $FDDA PRBYTE
bra .1
.5 cmp #'\'
bne .7
jsr PrintCStrAX.Next
beq .9
cmp #'n'
bne .9
lda #$0D
.7 ora #$80
jsr $FDED COUT
bra .1
.9 lda #$ff Self modified RTS HI
pha
.91 lda #$ff Self modified RTS LO
pha
rts
*--------------------------------------
PrintCStrAX.Next
lda $ffff
beq .8
inc PrintCStrAX.Next+1
bne .8
inc PrintCStrAX.Next+2 Always !=0
.8 rts
*--------------------------------------
PrintADec ldx #0
PrintAXDec >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 rts
*--------------------------------------
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