问题标签 [ca65]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - CA65:来自 16 位计算地址的“范围错误”
给定以下 CA65 代码:
我收到此错误消息:
有趣的是,以下版本按预期工作:
那么我如何让这个在 a 中工作.scope
呢?
c - CC65:四行坏,两行好?
我正在尝试stdio.h
在 Commodore 64 上使用 IO,但我正在使用以下程序:
问题是,如果我不加printf
注释 2 ,那么它会按预期工作。如果我取消注释所有四个,那么它根本不起作用:如果我RUN
这样做了,我只会看到在屏幕重置为仅显示READY.
在空屏幕上之前闪烁的线条。
如果我有三个,那么它第一次不起作用(闪烁到空READY.
屏幕),但如果我RUN
再次使用它,那么它就起作用了......
我应该补充一点,我只在 VICE 上测试过这个,而不是真正的 C64。
assembly - 在 C64 上移除侧边框的示例
我知道可以使用汇编删除 C64 中的顶部和底部边框,并且我已经找到了示例代码。但我找不到任何删除侧边框的示例代码(由 1001 Crew 发明。)
有人知道这方面的例子吗?
assembly - 在 C64/Assembly 中更改没有颜色记忆的文本颜色
我有一个类似下面的代码,它工作正常。它清除屏幕,将一些颜色放入屏幕前 12 个字符的颜色记忆中,然后在屏幕上打印文本。
我想知道的是,如果有更简单的方法来更改 C64 程序集中的文本颜色,就像POKE 646,color
在 BASIC 中一样?
编辑:我想我需要更清楚,我可以使用
但它不会影响 1024+ 中的汇编代码在屏幕上显示的文本。
是否有影响屏幕上所有字符的地址?
编辑:我想我知道答案,不。
assembly - 自动填充以将某些指令组装到预定地址中
我想用 CA65 组装一个需要自己运行的 6502 ROM,即没有其他可用的内核。我希望我的程序从$C000
. 但这意味着我还需要$00 $C0
在$FFFC
. 有没有办法让 CA65 在程序结尾和重置向量之间用零填充我的程序?
即我想做的是写类似
并得到一个.prg
可以直接用作连续ROM区域的文件,从$C000
一路到$FFFF
.
我想我能做的一件事就是写
但这意味着每次我更改程序时都必须更新该数字。
assembly - CA65 段内存映射问题
我在 CA65 中工作一个 6502 项目,我无法理解一些指令。
我想要做的是定义一个段,就好像它在内存的另一部分一样,以便该代码的所有寻址都好像它在编译期间已经在该内存段中,但它将被加载主程序并且需要在加载后移动到位......对于这些旧机器来说这是一个非常基本的模型,但我无法让段命令中的 DEFINE 指令正常工作。
因此,我在 cfg 文件中创建了一个名为 MYMEM 的 MEMORY 定义,作为程序实际加载位置之外的位置,如下所示:
然后在我创建一个名为 MYMEMSEG 的段
然后,我尝试访问它声称它创建的 _ _MYMEMSEG_LOAD__ 或 _ _MYMEMSEG_RUN__ 或 _ _MYMEMSEG_SIZE__ 值,但它们都是未定义的......生成的 MAP 文件不包含任何带有 MYMEM 或 MYMEMSEG 的东西......那我是什么不明白这里?
assembly - 使用ca65编译一个简单的程序
我开始使用 Rodney Zaks 的书 Programming the 6502 来学习 6502 组装。其中有示例代码,我希望能够在我的 macbook 上运行它。我希望代码能够以书中呈现的形式运行,但我不确定。
我已经下载了 ca65 汇编程序,但遇到了一些麻烦。该命令ca65 3_1.as
有效,但随后ld65 -o example 3_1.o
(我认为这是正确的)导致错误:ld65: Error: Memory configuration missing
文件中的代码3_1.as
如下。
谁能建议如何解决我的问题?
(作为一个小问题,目前我猜 100 美元和 200 美元实际上不包含任何值,因此即使程序可以运行,也不会进行实际添加,这是正确的吗?)
assembly - ca65:包含防护生成“错误:预期标识符”
试图学习如何使用 ca65 汇编器,我一直在努力使包含警卫工作。谷歌搜索和阅读ca65 用户指南没有帮助。这是产生错误的最小示例。
如果我只在其中包含65.inc
一次,test.s
则可以毫无问题地组装,如下所示:
我错过了什么?
assembly - 如何让代码在 Apple ii 上正确运行
我在 6502 程序集中编写了一小段代码(add.asm,如下所示),但在使其在 apple ii 模拟器上正确运行时遇到了一些问题。使用下面的配置文件,以及 ca65 和 ld65,我可以得到一个二进制文件来编译。
然后,使用 ciderpress,我可以将它放到磁盘映像中。但是,这是我的问题开始的地方。当我编辑文件的属性,使其成为二进制文件时,Ciderpress 将名为“辅助类型(十六进制)”的内容更改为 D818。我不确定这是为什么(将其更改为 6000,我说过 ram 在我的 ld65 配置文件中启动并不能解决我将要描述的问题)。
在 Ciderpress 中,我可以查看刚刚添加到磁盘映像中的文件添加。它说它从位置“D818”开始。但是,它不包括直到“STA ADR1”的每一行,这已经超过了程序的一半。当我在 appleii 模拟器上运行它时,程序的行为确认似乎只存在代码的后半部分。
谁能帮我理解发生了什么?
添加.asm:
苹果.cfg:
assembly - C64 程序集渲染精灵
我使用ca65 汇编器和ld65 链接器在 Commodore 64 的 6502 汇编器中编写了一个短程序。该程序应该在显示器中心附近的某处渲染一个实心方形精灵,但我没有看到任何正在渲染的东西。
这是我的组装:
这是我的链接器脚本,改编自ca65 推荐的链接器脚本,用于 c64 上的手写汇编程序。我所做的唯一更改是添加“GFXDATA”段,以便我可以将我的精灵存储在 address $2000
。
这是我用来编译和链接的命令:
这是编译后的mapfile的内容:
以及最终二进制文件的十六进制转储:
“GFXDATA”段是我的精灵。精灵是 64 字节的$FF
,所以它应该看起来像一个实心正方形。该精灵数据位于 address $2000
。
“CODE”段从通常的 BASIC 开始位置开始,ca65 正在为我插入一个 BASIC 加载程序,所以我可以run
在加载程序后输入。
我没有切换 VIC 的银行,所以屏幕仍然在它的默认地址范围 ( $0400-$07FF
),这个范围的最后 8 个字节是我的精灵指针。我只使用精灵指针 0 ( $07f8
) 因为我只有一个精灵。
当我运行程序时,一切都被锁定了——这是意料之中的,因为程序以无限循环结束。但我在屏幕上的任何地方都看不到精灵:
我错过了什么?