assembly - 修改了 C64 PRG BASIC header ?

标签 assembly basic 6502 c64

我最近购买了一台 c64 mini,并尝试使用 Turbo Macro Pro v1.2 编写一些汇编代码。

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

我还尝试添加 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 行收到内存不足错误。

我做错了什么吗?或者这条指令真的内存不足了吗?

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

最佳答案

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

关于assembly - 修改了 C64 PRG BASIC header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57641295/

相关文章:

在浏览器中执行脚本语言的 JavaScript 库

assembly - 汇编 6502 中的 256 和 64 位数字

c - 将程序计数器 (PC) 修改为已保存的地址

java - 为什么优化的虚拟调用指向热点 jit 程序集中的相同地址?

c++ - 在 C 中的 _asm block 中使用局部变量

LibreOffice Calc Macro - 在同一单元格中设置两种不同类型的字体

C++ WriteToProcessMemory() 意外结果

java - 深入了解 Java 图形

assembly - Vic 20 使用汇编器滚动

6502 - *等待*按键并获取其 martrix 或 PETSCII 代码的简单方法?