修改 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 将它们设置为其他方式。