C = 64第2部分:文本输出-Marco

我将代码从第一部分转换为宏。 它有两个参数:第一个是要打印的字节数组,第二个是数组长度。 宏将文本写入屏幕上的位置[0,0]。

  * = $ 0801;  C64程序从该地址开始 
; 10 SYS(2064)
字节$ 0E,$ 08,$ 0A,$ 00,$ 9E,$ 20,$ 28,$ 32
字节$ 30,$ 36,$ 34,$ 29,$ 00,$ 00,$ 00
PRINT_AT_00你好,helloLength; 打印“ HELLO WORLD!”
rts
你好字节8、5、12、12、15,$ 20、23、15、18、12、4,$ 21
helloLength字节12
; ----------------------------------
;
; 在X,Y打印字符串
;
; ----------------------------------
defm PRINT_AT_00
; In / 1 =字符串/字节数组(内存)
; In / 2 =字符串/数组长度
; 必须> 0(内存)

lda / 1; A是要打印的值
ldx#0; X中的数组索引
@环
sta $ 0400,X; 将A存储到屏幕内存地址$ 400 + X
墨水; 增加X(移动屏幕内存)
lda / 1,X; 加载下一个字符串字节
cpx / 2; 比较X与字符串长度
密件抄送@loop; 如果A <字符串长度,则跳转
结局

结果是:

GitHub:https://github.com/RetroAsmDev/C64asm/tree/master/TextOutput2