【发布时间】:2019-11-09 16:50:48
【问题描述】:
我在 6502 汇编中编写了一小段代码(add.asm,如下所示),但在使其在 Apple ii 模拟器上正确运行时遇到了一些问题。使用下面的配置文件,以及 ca65 和 ld65,我可以得到一个二进制文件来编译。
然后,使用 ciderpress,我可以将它放到磁盘映像中。但是,这是我的问题开始的地方。当我编辑文件的属性,使其成为二进制文件时,Ciderpress 将名为“辅助类型(十六进制)”的内容更改为 D818。我不确定这是为什么(将其更改为 6000,我说过 ram 在我的 ld65 配置文件中启动并不能解决我将要描述的问题)。
在 Ciderpress 中,我可以查看我刚刚添加到磁盘映像中的文件添加。它说它从位置“D818”开始。但是,它不包括直到“STA ADR1”的每一行,这已经超过了程序的一半。当我在 appleii 模拟器上运行它时,程序的行为确认似乎只存在代码的后半部分。
谁能帮我理解发生了什么?
add.asm:
CLC ; CLEAR CARRY BIT
CLD ; CLEAR DECIMAL BIT
ADR1 = $6100
ADR2 = $6101
ADR3 = $6102
LDA #01
STA ADR1
LDA #02
STA ADR2
LDA ADR1 ; LOAD CONTENTS OF ADR1 INTO ACCUMULATOR
ADC ADR2 ; ADD CONTENTS OF ADR2 INTO ACCUMULATOR
STA ADR3 ; TRANSFER CONTENT OF ACC TO ADR3
RTS
apple.cfg:
MEMORY {
RAM: start = $6000, size = $8E00, file = %O;
}
SEGMENTS {
CODE: load = RAM, type = ro;
DATA: load = RAM, type = rw;
}
【问题讨论】:
-
您可能想在retrocomputing.stackexchange.com 上提问。 (我认为即使您使用的是模拟器,而不是真正的 Apple II,它也会成为该网站的主题。)
标签: assembly 6502 ca65 apple-ii