我得到?OUT OF MEMORY ERROR
当我试图让一个磁盘的目录列表返回汇编程序后。
我准备了一个简单的例程来了解发生了什么,例如:
*=$c000
lda #$00
sta $d020
rts
我的构建脚本是:
C:\...\acme0.95.6win\acme.exe --outfile build\ROUTFILE --format cbm RSOURCEFILE
C:\...\tools\WinVICE-2.4-x64\x64.exe build\ROUTFILE
当我运行构建脚本模拟器时加载 PRG 文件。尝试运行它但没有任何反应,因为我没有包含 BASIC 加载器。即使在那之后,如果我写信LOAD "$",8
来获取目录列表。我得到?OUT OF MEMORY ERROR
。那么上面的场景有什么问题呢?
PRG 文件的十六进制转储是:
00 c0 a9 00 8d 20 d0 60
这似乎只是 Commodore 64 加载程序的人工产物。当您使用 LOAD 命令将某些内容加载到内存中时,指向各种 BASIC 数据区开始和结束的指针将设置为加载程序之后的地址。因此,对于以 $C000 加载的 6 字节程序,这些指针设置为 $C006。然而,BASIC 内存指针的末尾仍为 $A000。这会造成无效情况,因为指向 BASIC 数据区的指针高于 BASIC 允许使用的最大地址。它最终看起来像 BASIC 内存不足。
通常这不是问题。您只能将汇编程序加载到 $C000,并且加载程序后通常要做的第一件事也是唯一的事情是通过输入执行程序SYS 49152
,就像 Jester 提到的那样。如果您想加载程序但不立即执行它,您可以使用 Peter Kofler 的回答中给出的 NEW 命令来修复无效指针问题,这应该将指针重置为其有效的默认状态,同时将代码加载到 $C000未修改。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句