mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 17:50:18 +00:00
180 lines
2.4 KiB
Plaintext
180 lines
2.4 KiB
Plaintext
PR#3
|
||
PREFIX /A2OSX.BOOT
|
||
DELETE A2OSX.SYSTEM
|
||
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 COUT
|
||
iny
|
||
dex
|
||
bne .1
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
PrintCStrAX >STAX TmpPtr1
|
||
pla
|
||
sta TmpPtr2
|
||
pla
|
||
sta TmpPtr2+1
|
||
|
||
ldy #0
|
||
|
||
.1 stz b0Flag
|
||
stz DigitCount
|
||
lda (TmpPtr1),y
|
||
beq .9
|
||
cmp #'%'
|
||
bne .4
|
||
|
||
.11 iny
|
||
lda (TmpPtr1),y
|
||
beq .9
|
||
cmp #'0'
|
||
bne .22
|
||
ror b0Flag beq -> CS
|
||
bra .11
|
||
|
||
.22 bcc .21
|
||
cmp #'9'+1
|
||
bcs .21
|
||
and #$0f
|
||
sta DigitCount
|
||
bra .11
|
||
|
||
.21 cmp #'d'
|
||
bne .2
|
||
pla
|
||
jsr PrintADec
|
||
bra .8
|
||
|
||
.2 cmp #'D'
|
||
bne .3
|
||
pla
|
||
plx
|
||
jsr PrintAXDec
|
||
bra .8
|
||
|
||
.3 cmp #'h'
|
||
bne .4
|
||
pla
|
||
jsr PRBYTE
|
||
|
||
.4 cmp #'\'
|
||
bne .7
|
||
iny
|
||
lda (TmpPtr1),y
|
||
beq .9
|
||
cmp #'n'
|
||
bne .9
|
||
lda #$0D
|
||
|
||
.7 ora #$80
|
||
jsr COUT
|
||
.8 iny
|
||
bne .1
|
||
|
||
.9 lda TmpPtr2+1
|
||
pha
|
||
lda TmpPtr2
|
||
pha
|
||
rts
|
||
*--------------------------------------
|
||
PrintADec ldx #0
|
||
PrintAXDec >STAX HEX
|
||
stz BCD
|
||
stz BCD+1
|
||
stz BCD+2
|
||
|
||
phy
|
||
|
||
ldx #16 let's roll 16 bits
|
||
sed
|
||
.2 asl HEX
|
||
rol HEX+1
|
||
php cpy will disturb carry while BCD adc
|
||
ldy #0
|
||
.3 plp
|
||
lda BCD,y
|
||
adc BCD,y
|
||
sta BCD,y
|
||
php
|
||
iny
|
||
cpy #3 Last byte of BCDBUF?
|
||
bne .3
|
||
plp
|
||
dex
|
||
bne .2
|
||
|
||
cld
|
||
|
||
ldx #0
|
||
ldy #5
|
||
|
||
.4 lda BCD,x
|
||
pha
|
||
and #$0F
|
||
ora #$B0
|
||
sta DigitBuffer,y
|
||
dey
|
||
|
||
pla
|
||
lsr
|
||
lsr
|
||
lsr
|
||
lsr
|
||
ora #$B0
|
||
sta DigitBuffer,y
|
||
inx
|
||
dey
|
||
bpl .4
|
||
|
||
lda DigitCount
|
||
beq .5
|
||
lda #6
|
||
sec
|
||
sbc DigitCount
|
||
.5 tay
|
||
.6 lda DigitBuffer,y
|
||
cmp #"0"
|
||
beq .7
|
||
|
||
sec
|
||
ror b0Flag
|
||
bra .8
|
||
|
||
.7 cpy #5
|
||
beq .8
|
||
lda #" "
|
||
bit b0Flag
|
||
bpl .81
|
||
lda #"0"
|
||
.8 jsr COUT
|
||
.81 iny
|
||
cpy #6
|
||
bne .6
|
||
|
||
.9 ply
|
||
rts
|
||
*--------------------------------------
|
||
HEX .BS 2
|
||
BCD .BS 3
|
||
b0Flag .BS 1
|
||
DigitCount .BS 1
|
||
DigitBuffer .BS 6
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE A2OSX.S.TOOLS
|
||
LOAD A2OSX.S
|
||
ASM
|