首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使代码在Apple ii上正确运行

如何使代码在Apple ii上正确运行
EN

Stack Overflow用户
提问于 2019-11-09 16:50:48
回答 1查看 195关注 0票数 1

我已经在6502程序集中编写了一小部分代码(add.asm,如下所示),但要使它在苹果ii模拟器上正确运行还存在一些问题。使用下面的配置文件以及ca65和ld65,我可以获得一个要编译的二进制文件。

然后,用苹果酒,我可以把这个放到磁盘映像上。然而,这是我的问题开始的地方。当我编辑文件的属性,使其为二进制时,Ciderpress将名为"aux Type (十六进制)“的内容更改为D818。我不知道这是为什么(将它改为6000,我已经说过,在我的ld65配置文件中启动的ram不会修复我将要描述的问题)。

在Ciderpress中,我可以查看刚才添加到磁盘映像中的文件add。它说它是从"D818“开始的。但是,它并不包括直到"STA ADR1“的每一行,这已经超过了程序的一半。当我在appleii仿真器上运行这个程序时,程序的行为确认了代码的后半部分似乎存在。

有人能帮我理解一下发生了什么吗?

add.asm:

代码语言:javascript
复制
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:

代码语言:javascript
复制
MEMORY {
RAM: start = $6000, size = $8E00, file = %O;
}
SEGMENTS {
CODE: load = RAM, type = ro;
DATA: load = RAM, type = rw;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-10 09:05:41

您的问题不是与Apple II知识有关,而是与在工具之间传递信息有关。如果您正在为C64构建,那么您将使用PRG格式来设置加载地址。请看我的答案

CiderPress是很棒的,但是也有局限性,有时你必须了解它才能达到你想要的目的。还有其他选项;例如,AppleCommander支持AppleSingle格式,即添加到cc65中格式。CiderPress也支持它,但我还没有使用它的经验。

(有时我更喜欢使用梅林32卡迪乌斯。)

在任何情况下,CiderPress都是猜测二进制文件的类型和开始地址。DOS "B“类型文件有一个2字节的加载地址头,因此地址D818来自:

代码语言:javascript
复制
6000-   18          CLC
6001-   D8          CLD

这些行是汇编程序指令,而不是代码,因此不会出现在输出二进制文件中。

代码语言:javascript
复制
ADR1 = $6100
ADR2 = $6101
ADR3 = $6102

实现所需内容的一种简单方法是使用以下方法指定文件类型(BIN)和地址(6000):

文件属性保存 CiderPress使用的文件属性保存机制的最终指南可以在www.nulib.com网站的“库”部分中找到。这是对这一主题的简要介绍。 添加Apple文件时必须还原四个属性:文件类型、aux类型、路径名和文件部分(即数据分叉、资源分叉、磁盘映像或注释)。 文件类型和辅助类型 ProDOS文件使用8位文件类型和16位辅助类型.它们可以用一个类似于"#062000“的六字符十六进制字符串进行编码。“#”用于指示属性保存字符串的开始。

例如。

代码语言:javascript
复制
.\bin\cl65.exe -o add#066000.bin -t apple2 -C apple.cfg add.asm

现在,您的输出文件名为:

代码语言:javascript
复制
add#066000.bin

CiderPress将正确地将该文件添加到DSK映像中,并且可以执行内容。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58781456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档