ca65 V2.17 - Git 582aa41 Main file : single_byte_multiply.ca65 Current file: single_byte_multiply.ca65 000000r 1 ; 000000r 1 ; ACORN System 1 Applications: Single Byte Multiply 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 QHEXTD1 := $FE64 ; quad hex to display 1 000000r 1 QDATFET := $FE88 ; quad data fetch 000000r 1 RESTART := $FF04 ; Monitor renentry point 000000r 1 ; 000000r 1 .org $0200 000200 1 ; 000200 1 D8 SMULT: cld 000201 1 EA nop ; serves no purpose ? 000202 1 84 20 sty $20 ; setup prompt for zero multiplier 000204 1 A9 11 lda #$11 000206 1 85 21 sta $21 ; prompt for first - multiplicand 000208 1 A2 20 ldx #$20 00020A 1 20 88 FE jsr QDATFET ; fetch the numbers 00020D 1 98 tya ; clears A 00020E 1 A0 08 ldy #$08 ; loop counter 000210 1 66 20 LOOP: ror $20 ; shift multiplier (and high byte of result) 000212 1 90 03 bcc NADS ; no add if not bit 000214 1 18 clc 000215 1 65 21 adc $21 ; add multiplicand into low byte of result 000217 1 6A NADS: ror A ; and shift low byte of result 000218 1 88 dey 000219 1 D0 F5 bne LOOP 00021B 1 85 21 sta $21 ; put in low byte 00021D 1 66 20 ror $20 ; final justification shift 00021F 1 20 64 FE jsr QHEXTD1 ; display answer 000222 1 4C 04 FF jmp RESTART 000222 1