8得票8回答
从6502汇编中获取随机数

我正尝试使用JSR $E09A在Commodore 64 (C64)上生成一系列随机数,并从$63和$64中检索数字。(根据我看到的所有文档,这与在BASIC中使用RND(0)时相同。但是不能迭代。以下内容将在单独执行时起作用,并放置不同的数字在$63和$64中。 . C000 A5 00...

9得票2回答
C64汇编渲染精灵

我已经使用ca65汇编器和ld65链接器为Commodore 64编写了一个短小的程序。该程序应该在显示屏中心附近呈现一个实心正方形精灵,但我并没有看到任何渲染。 以下是我的汇编代码: .segment "CODE" ; set sprite pointer index ...

21得票7回答
6502 CPU仿真

周末到了,所以我会写一个业余项目来放松一下,这样就可以从整个星期的编程中得到解脱。 昨天我编写了MOS 6502 CPU模拟器的框架,实现了寄存器、堆栈、内存和所有操作码。(源代码链接如下) 我可以在我编写的调试器中手动运行一系列操作,但我想加载一个NES rom并将程序计数器指向它的指令...

8得票2回答
在Commodore 64上使用汇编语言编写磁盘文件

我正在尝试学习如何使用内核例程编写磁盘文件,遵循这个Codebase64教程的步骤。 下面是我用Acme交叉汇编器编写的程序。它无法打开文件,并显示错误消息:"FILE NOT OPENED"。 ; Definitions SETNAM = $FFBD SETFLS = $FFBA OPE...

14得票3回答
快速对6502进行带符号16位除以7的计算方法

我正在为6502 cpu编写汇编语言程序,发现需要一个尽可能快的除以7例程,特别是可以处理16位被除数的例程。 我熟悉这里找到的例程,但是通用除以7例程的推广非常复杂,并且对一般算法(使用整数除法) x/7 ~= (x + x/8 + x/64 ... )/8 的粗略检查表明,要处理16...

12得票3回答
对8位系统上lisp类语言的虚拟机感兴趣

我正在寻找适用于8位微处理器且支持动态语言的虚拟机软件。我希望使用虚拟机解决方案,因为从代码密度、可移植性以及可以留更多空间给更大的程序等方面,我看到了优势。 我的目标是在类似6502微处理器上运行完整的LOGO解释器,遵循“LOGO for the Apple II”语法。 我已经看到过...

8得票2回答
为什么6502的中断标志的初始状态是1?

我正在模拟6502处理器,并且已经接近完成(现在处于测试阶段)。我正在使用来自nesdev网站的一些NES测试,并且它告诉我初始时中断标志和未使用的第五个标志都应该设置为1(即禁用中断),但是为什么? 我可以理解未使用的标志部分,因为它是...嗯...未使用的,但是我不理解中断标志。我尝试在谷...

11得票2回答
等待$D012的变化(C64汇编)

我在模拟C64机器上尝试汇编时遇到了一些问题。 我想要做的是检查键盘上的“N”键是否被按下,程序应该等待地址$D012上出现变化。现在我不明白的是如何“等待”出现变化?有人能告诉我这是怎么回事吗? 检查键盘上的N按键是否按下很简单-只需使用子程序FFE4(输入)和FFD2(输出)。 我并...

12得票6回答
了解指令如何被翻译(计算机体系结构)

这位用户正在寻找学习低级编程的资源,希望了解指令(如十六进制或汇编代码)如何在简单的计算机中执行,并想写一个模拟器。他们已经学习了计算机体系结构、逻辑门、时序逻辑等内容,并且对使用汇编语言的6502有一些兴趣。他们寻求推荐书籍和资源来帮助他们理解这些概念并实践低级编程。

9得票2回答
我能通过一些16位的魔法将这个转化为一个循环吗?

我现在开始学习6502汇编语言,但是在处理需要处理超过8位数字的循环时遇到了问题。 具体来说,我想要循环一些内存位置。用伪代码表示,我的目标是这样的: // Address is a pointer to memory int* address = 0x44AD; ...