ca65 V2.17 - Git 582aa41 Main file : hex_to_decimal.ca65 Current file: hex_to_decimal.ca65 000000r 1 ; 000000r 1 ; ACORN System 1 Applications: Hexadecimal To Decimal 000000r 1 ; 000000r 1 ; From the Acorn System 1 User's Manual 000000r 1 ; 000000r 1 ; (Chris Oddy January 2022) 000000r 1 ; 000000r 1 ; entry point $0200 000000r 1 ; 000000r 1 .setcpu "6502" 000000r 1 .listbytes unlimited 000000r 1 ; 000000r 1 HEXL := $20 000000r 1 HEXH := $21 000000r 1 DECOUT := $22 000000r 1 QHEXTD1 := $FE64 ; quad hex to display 1 000000r 1 HEXTD := $FE7A ; hex to display 000000r 1 QDATFET := $FE88 ; quad data fetch 000000r 1 RESTART := $FF04 ; Monitor reentry point 000000r 1 ; 000000r 1 .org $0200 000200 1 ; 000200 1 84 20 HEXDEC: sty HEXL ; set up zero prompt 000202 1 84 21 sty HEXH 000204 1 A2 20 ldx #HEXL 000206 1 20 88 FE jsr QDATFET ; and fetch the data 000209 1 F8 sed ; decimal mode 00020A 1 A2 00 ldx #$00 ; set X & Y & DECOUT to zero 00020C 1 86 22 stx DECOUT 00020E 1 A5 20 DECRHX: lda HEXL ; test for zero, then decrement 000210 1 D0 06 bne NODEC 000212 1 A5 21 lda HEXH 000214 1 F0 13 beq DEAD ; if hex No. zero, then finished 000216 1 C6 21 dec HEXH 000218 1 C6 20 NODEC: dec HEXL 00021A 1 18 clc ; add 1 to decimal number, 00021B 1 98 tya ; using X & Y as two byte accumulator 00021C 1 69 01 adc #$01 00021E 1 A8 tay 00021F 1 8A txa 000220 1 69 00 adc #$00 000222 1 AA tax 000223 1 90 E9 bcc DECRHX 000225 1 E6 22 inc DECOUT 000227 1 B0 E5 bcs DECRHX 000229 1 84 20 DEAD: sty HEXL ; finished, so store X & Y 00022B 1 86 21 stx HEXH 00022D 1 A2 20 ldx #HEXL 00022F 1 20 64 FE jsr QHEXTD1 ; display 4 digits 000232 1 88 dey 000233 1 A5 22 lda DECOUT 000235 1 20 7A FE jsr HEXTD ; display 5th digit 000238 1 4C 04 FF jmp RESTART 000238 1