mirror of
https://github.com/antoinevignau/source.git
synced 2024-12-29 11:30:55 +00:00
d29484938c
What we wrote to make audio hearable on a SCSI-2 CD-ROM drive ;-)
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
|
|
|