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

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

11得票3回答
如何定义“VALUE”和“TO”

我希望在一个RPC/8上(这是一个Minecraft mod中的模拟计算机),实现Forth单词VALUE和TO。我的最佳尝试得到了一组单词,只要我不在编译时使用它们就可以正常工作。更具体地说,VALUE有效,但TO无效。 : VALUE CREATE , DOES> @ ; : TO...

13得票4回答
6502仿真实现ADC和SBC的正确方法

我一直在开发MOS 6502模拟器,但是ADC和SBC似乎无法正常工作。 我正在将AllSuiteA程序加载到模拟内存的0x4000中测试我的模拟器,在test09中,我的当前ADC和SBC实现没有获得正确的标志位。 我尝试了无数次更改它们的算法,但每次都会导致进位标志位和溢出标志位略有差异,...

8得票11回答
经典汇编语言书籍是否不使用x86?

我正在寻找详细介绍汇编编程原理且不以x86为目标架构的文本。我没有找到最近的类似书籍,但我希望在20世纪70年代和80年代有一些好的书籍,当时整个应用程序仍然使用汇编语言编写。所使用的架构也应该是比较干净的设计之一,例如6502或VAX。

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

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

27得票7回答
CPU仿真和锁定到特定的时钟速度

如果您阅读过我其他的问题,就会知道这个周末我花了很多时间编写了一个6502 CPU模拟器作为一个编程练习。CPU模拟器大部分完成,根据我的有限测试来看,它似乎相当准确,但是其运行速度非常快,我想将其降到实际机器的时钟速度。我当前的测试循环是这样的: // Just loop infini...

10得票2回答
如何在Commodore 64中改变内核SCNKEY例程行为

我正在尝试使用Commodore 64的内核例程实现游戏控制。下面的代码可以工作,但有一个例外。每个按键都被计为单个输入,例如:如果您一直按住按钮,则没有效果。您必须松开并再次按下才能进行移动。如何更改此行为?简单地说,我想重复按键操作,只要按键保持按下状态即可。 GETIN = ...

8得票1回答
如何在真实硬件上测试自制的任天堂娱乐系统软件?

几年前,我在课程项目中实现了一款NES游戏,使用6502汇编语言编写。我只在NES模拟器上运行过它,但我想看到它在真正的硬件上运行。有没有开发板可以做到这一点?我知道这有点棘手,需要使用映射器芯片等,但我愿意限制使用普通的映射器(比如MMC3)。

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

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

7得票4回答
什么是中断?

我希望了解关于我的6502仿真处理器项目中中断的确切含义。 我知道中断会执行以下步骤: 1. 停止当前正在进行的程序处理 2. 将所有未完成的数据保存到堆栈中 3. 进行 "SOMETHING" 操作 4. 加载回未完成的数据并使程序继续正常运行。 我的问题是:在“SOMETHING”步骤...