5

我最近买了一个 c64 mini 并尝试使用 Turbo Macro Pro v1.2 编写一些程序集。

在编写 hello world 程序时,我发现了一个使用自动运行 BASIC 标头的教程。

我还尝试包含 PRINT CHR$(147) 以清除屏幕,但出现内存不足错误。

原始的 BASIC 标头是:

*=$0801
.byte $0c, $08, $0a, $00, $9e, $20
.byte $34, $30, $39, $36, $00, $00
.byte $00

我将其修改为:

*=$0801
.byte $0e, $08, $0a, $00, $99, $20
.byte $c7, $28, $31, $34, $37, $29
.byte $00, 
.byte $19, $08, $14, $00, $9e, $20
.byte $34, $30, $39, $36, $00, $00
.byte $00

当我从 TMP 组装并运行然后键入 LIST 时,我得到了,

10 PRINT CHR$(147)
20 SYS 4096

但是当运行时,我在第 10 行得到 OUT OF MEMORY ERROR。

难道我做错了什么?还是这条指令真的内存不足?

TMP 仍然在后台加载到内存中。我目前正在 VICE 中运行它。

4

1 回答 1

2

我猜想 TMP 会为查找表、中间代码等分配所有内存。它想要的最后一件事是 BASIC 把事情搞砸了,所以它会将 BASIC 内存的顶部指向安全的地方。可分配的 BASIC 内存可以在 43-44 和 55-56 的指针中找到,指示 BASIC 内存的开始/结束。通常,它们是 0801 美元到 A000 美元,但我猜 TMP 会以其他方式设置它们。

于 2019-09-14T17:35:55.060 回答