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

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

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

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

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

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

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

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

9得票1回答
单独测试中6502的中断行为与在Commodore PET中的行为有何不同

我正在使用FPGA构建Commodore PET。我在Kansas Lava中实现了自己的6502核心(代码可在https://github.com/gergoerdi/mos6502-kansas-lava找到),通过在其周围放置足够的IO(https://github.com/gergoe...

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

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

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

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

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

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

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

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

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

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