mirror of
https://github.com/antoinevignau/source.git
synced 2025-01-01 15:30:02 +00:00
192 lines
3.2 KiB
ArmAsm
192 lines
3.2 KiB
ArmAsm
|
*
|
||
|
* Playing with BCD
|
||
|
*
|
||
|
* (c) 2018, Brutal Deluxe Software
|
||
|
*
|
||
|
|
||
|
xc
|
||
|
xc
|
||
|
mx %00
|
||
|
org $1000
|
||
|
lst off
|
||
|
|
||
|
*---
|
||
|
|
||
|
clc
|
||
|
xce
|
||
|
rep #$30
|
||
|
|
||
|
lda #$1000
|
||
|
jsr BCD2HEX
|
||
|
|
||
|
lda #$9999
|
||
|
jsr BCD2HEX
|
||
|
|
||
|
lda #$270f
|
||
|
jsr HEX2BCD
|
||
|
|
||
|
sec
|
||
|
xce
|
||
|
sep #$30
|
||
|
rts
|
||
|
|
||
|
*---
|
||
|
|
||
|
mx %00
|
||
|
|
||
|
BCD2HEX pha
|
||
|
|
||
|
* milliers
|
||
|
|
||
|
and #$f000
|
||
|
lsr
|
||
|
lsr
|
||
|
lsr
|
||
|
xba
|
||
|
tax
|
||
|
lda tblBM,x
|
||
|
sta result
|
||
|
|
||
|
* centaines
|
||
|
|
||
|
lda 1,s
|
||
|
and #$0f00
|
||
|
asl
|
||
|
xba
|
||
|
tax
|
||
|
lda tblBC,x
|
||
|
clc
|
||
|
adc result
|
||
|
sta result
|
||
|
|
||
|
* dizaines
|
||
|
|
||
|
lda 1,s
|
||
|
and #$00f0
|
||
|
lsr
|
||
|
lsr
|
||
|
lsr
|
||
|
tax
|
||
|
lda tblBD,x
|
||
|
clc
|
||
|
adc result
|
||
|
sta result
|
||
|
|
||
|
* unites
|
||
|
|
||
|
lda 1,s
|
||
|
and #$000f
|
||
|
asl
|
||
|
tax
|
||
|
lda tblBU,x
|
||
|
clc
|
||
|
adc result
|
||
|
sta result
|
||
|
|
||
|
plx
|
||
|
jmp printME
|
||
|
|
||
|
*--- BCD 2 HEX table
|
||
|
|
||
|
tblBM dw 0000,1000,2000,3000,4000,5000,6000,7000,8000,9000
|
||
|
tblBC dw 0000,0100,0200,0300,0400,0500,0600,0700,0800,0900
|
||
|
tblBD dw 0000,0010,0020,0030,0040,0050,0060,0070,0080,0090
|
||
|
tblBU dw 0000,0001,0002,0003,0004,0005,0006,0007,0008,0009
|
||
|
|
||
|
*---
|
||
|
|
||
|
HEX2BCD pha
|
||
|
|
||
|
* Step 1
|
||
|
|
||
|
and #$f000
|
||
|
lsr
|
||
|
lsr
|
||
|
lsr
|
||
|
xba
|
||
|
tax
|
||
|
lda tblH1,x
|
||
|
sta result
|
||
|
|
||
|
* Step 2
|
||
|
|
||
|
lda 1,s
|
||
|
and #$0f00
|
||
|
asl
|
||
|
xba
|
||
|
tax
|
||
|
sed
|
||
|
lda tblH2,x
|
||
|
clc
|
||
|
adc result
|
||
|
sta result
|
||
|
cld
|
||
|
|
||
|
* Step 3
|
||
|
|
||
|
lda 1,s
|
||
|
and #$00f0
|
||
|
lsr
|
||
|
lsr
|
||
|
lsr
|
||
|
tax
|
||
|
sed
|
||
|
lda tblH3,x
|
||
|
clc
|
||
|
adc result
|
||
|
sta result
|
||
|
cld
|
||
|
|
||
|
* Step 4
|
||
|
|
||
|
lda 1,s
|
||
|
and #$000f
|
||
|
asl
|
||
|
tax
|
||
|
sed
|
||
|
lda tblH4,x
|
||
|
clc
|
||
|
adc result
|
||
|
sta result
|
||
|
cld
|
||
|
|
||
|
exit plx
|
||
|
jmp printME
|
||
|
|
||
|
*--- HEX 2 BCD table
|
||
|
|
||
|
tblH1 dw $0000,$4096,$8192
|
||
|
tblH2 dw $0000,$0256,$0512,$0768,$1024,$1280,$1536,$1792
|
||
|
dw $2048,$2304,$2560,$2816,$3072,$3328,$3584,$3840
|
||
|
tblH3 dw $0000,$0016,$0032,$0048,$0064,$0080,$0096,$0112
|
||
|
dw $0128,$0144,$0160,$0176,$0192,$0208,$0224,$0240
|
||
|
tblH4 dw $0000,$0001,$0002,$0003,$0004,$0005,$0006,$0007
|
||
|
dw $0008,$0009,$0010,$0011,$0012,$0013,$0014,$0015
|
||
|
|
||
|
|
||
|
*---
|
||
|
|
||
|
printME sta result
|
||
|
|
||
|
sec
|
||
|
xce
|
||
|
sep #$30
|
||
|
|
||
|
lda result+1
|
||
|
jsr $fdda
|
||
|
lda result
|
||
|
jsr $fdda
|
||
|
|
||
|
lda #$8d
|
||
|
jsr $fded
|
||
|
|
||
|
clc
|
||
|
xce
|
||
|
rep #$30
|
||
|
rts
|
||
|
|
||
|
*---
|
||
|
|
||
|
result ds 2
|
||
|
|