【发布时间】:2019-12-29 15:56:52
【问题描述】:
我最近买了一个 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 中运行它。
【问题讨论】:
-
不清楚
TMP是什么。那是你的全部代码吗?您是否为PRG设置了加载地址?听起来CHR$正在尝试分配一个新字符串并失败,因为它认为没有剩余的可用内存。 -
抱歉,TMP 是 Turbo Macro Pro v1.2。在完整代码中,我有一些汇编代码 *=1000 美元。但如果 BASIC 行是 10 SYS 4096,我不会收到 OUT OF MEMORY ERROR。
-
事实证明,如果我组装到磁盘然后重新启动并从磁盘运行它工作正常,那么 TMP 一定是一些内存问题。我只是不明白什么。