|
|
|
|
|
|
|
|
|
; Multiply 7 with 10 and print the result
|
|
|
|
|
; For testing this program was assembled with c64 (using the -R option):
|
|
|
|
|
; https://www.aartbik.com/MISC/c64.html
|
|
|
|
|
|
|
|
|
|
strout .equ $1100 ; console output address
|
|
|
|
|
con_flags .equ $009A ; console flags address
|
|
|
|
|
prt_str_flag .equ $0001 ; print string flag
|
|
|
|
|
|
|
|
|
|
; FAST MULTIPLY program from:
|
|
|
|
|
; http://6502.org/source/integers/fastx10.htm
|
|
|
|
|
main LDA #7 ; load 7 into the accumulator
|
|
|
|
|
ASL ;multiply by 2
|
|
|
|
|
STA TEMP ;temp store in TEMP
|
|
|
|
|
ASL ;again multiply by 2 (*4)
|
|
|
|
|
ASL ;again multiply by 2 (*8)
|
|
|
|
|
CLC
|
|
|
|
|
ADC TEMP ;as result, A = x*8 + x*2
|
|
|
|
|
|
|
|
|
|
; PRINT RESULT
|
|
|
|
|
STA strout ; store A into the console output address
|
|
|
|
|
LDX #0 ; 0xA2, 0x00, ; null terminator
|
|
|
|
|
STX strout+1 ; store null terminator to output addr + 1
|
|
|
|
|
|
|
|
|
|
; Set flag to do the print
|
|
|
|
|
LDA con_flags ; load the current console flag set
|
|
|
|
|
ORA #prt_str_flag ; turn on the print string flag
|
|
|
|
|
STA con_flags ; store the flags back in memory
|
|
|
|
|
|
|
|
|
|
; End the program
|
|
|
|
|
RTS ; 0x60
|
|
|
|
|
|
|
|
|
|
; Variables
|
|
|
|
|
TEMP .byte 0
|