下面是我在 Commodore 64 上进行内存复制的自我修改例程。
我在一个表中写了char codes
和number of repeats
,并用这个例程填充了 screen_ram。
我正在寻找优化建议。在这种情况下,我的首要任务是记忆。
memCopy:
sourceAddress=*+1 ; mark self modifying addrres
fetchNewData:
lda data_table ; read char value into A
ldx data_table+1 ; read repeat value into x
inc sourceAddress
inc sourceAddress
cpx #00 ; if X=0
beq end ; finish copying
destination=*+1
- sta SCREEN_RAM
inc destination
dex
bne -
jmp fetchNewData
end:
rts
; data format: <char>,<number of repeats>,[<char>,<number of repeats>,...],00,00
data_table:
!by 01,03,02,02,......,00,00