修改 C64 PRG BASIC header?
Modified C64 PRG BASIC header?
我最近买了一台 c64 mini 并尝试使用 Turbo Macro Pro v1.2 编写一些程序集。
在编写 hello world 程序时,我发现了一个教程,其中使用了自动 运行 BASIC header。
我还尝试包括一个 PRINT CHR$(147) 来清除屏幕,但我得到了内存不足错误。
原始 BASIC header 是:
*=01
.byte [=11=]c, , [=11=]a, [=11=], e,
.byte , , , , [=11=], [=11=]
.byte [=11=]
我修改为:
*=01
.byte [=12=]e, , [=12=]a, [=12=], ,
.byte $c7, , , , ,
.byte [=12=],
.byte , , , [=12=], e,
.byte , , , , [=12=], [=12=]
.byte [=12=]
当我从 TMP assemble 和 运行 然后键入 LIST 我得到,
10 PRINT CHR$(147)
20 SYS 4096
但是当 运行 我在第 10 行收到内存不足错误。
我是不是做错了什么?还是这条指令真的内存不足?
TMP 仍在后台加载到内存中。
我目前 运行 在 VICE 学习这个。
我猜想 TMP 会为查找表、中间代码等分配它可以分配的所有内存。它最不想要的就是 BASIC 把事情搞砸,所以它会将 BASIC 内存的顶部指向安全的地方。
可分配的BASIC内存可以在43-44和55-56的指针中找到,表示BASIC内存的start/end。通常,它们在 $0801 到 $A000 之间,但我猜 TMP 将它们设置为其他方式。
我最近买了一台 c64 mini 并尝试使用 Turbo Macro Pro v1.2 编写一些程序集。
在编写 hello world 程序时,我发现了一个教程,其中使用了自动 运行 BASIC header。
我还尝试包括一个 PRINT CHR$(147) 来清除屏幕,但我得到了内存不足错误。
原始 BASIC header 是:
*=01
.byte [=11=]c, , [=11=]a, [=11=], e,
.byte , , , , [=11=], [=11=]
.byte [=11=]
我修改为:
*=01
.byte [=12=]e, , [=12=]a, [=12=], ,
.byte $c7, , , , ,
.byte [=12=],
.byte , , , [=12=], e,
.byte , , , , [=12=], [=12=]
.byte [=12=]
当我从 TMP assemble 和 运行 然后键入 LIST 我得到,
10 PRINT CHR$(147)
20 SYS 4096
但是当 运行 我在第 10 行收到内存不足错误。
我是不是做错了什么?还是这条指令真的内存不足?
TMP 仍在后台加载到内存中。 我目前 运行 在 VICE 学习这个。
我猜想 TMP 会为查找表、中间代码等分配它可以分配的所有内存。它最不想要的就是 BASIC 把事情搞砸,所以它会将 BASIC 内存的顶部指向安全的地方。 可分配的BASIC内存可以在43-44和55-56的指针中找到,表示BASIC内存的start/end。通常,它们在 $0801 到 $A000 之间,但我猜 TMP 将它们设置为其他方式。