Dac*_*obi 6 assembly basic c64 6502
我最近购买了一台 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
Run Code Online (Sandbox Code Playgroud)
我将其修改为:
*=$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
Run Code Online (Sandbox Code Playgroud)
当我从 TMP 组装并运行然后输入 LIST 时,我得到,
10 PRINT CHR$(147)
20 SYS 4096
Run Code Online (Sandbox Code Playgroud)
但是当运行时,我在第 10 行收到内存不足错误。
难道我做错了什么?或者这条指令真的内存不足了吗?
TMP 仍然在后台加载到内存中。我目前正在 VICE 中运行它。
我猜想 TMP 会为查找表、中间代码等分配所有可以分配的内存。它最不想看到的就是 BASIC 搞乱事情,因此它将把 BASIC 内存的顶部指向安全的地方。可分配的BASIC内存可以在43-44和55-56处的指针中找到,指示BASIC内存的开始/结束。通常,它们是 $0801 到 $A000,但我猜 TMP 会以其他方式设置它们。
| 归档时间: |
|
| 查看次数: |
529 次 |
| 最近记录: |