当我再次翻阅Charles Petzold的“代码”一书时,我在寻找一款易于使用的经典英特尔8080 CPU的在线汇编器和模拟器,但找不到任何完全符合我需求的产品。有一些做得很好的工具,但它们似乎更适合在模拟器上运行游戏ROM和高级程序;我的需求是不同的-我只想要一些可以玩的东西,用来练习8080汇编编程。
所以我最终开始了我自己的工作,js-8080-sim项目诞生了。该项目由三个主要部分组成:
8080的汇编程序:将汇编语言代码翻译成8080机器代码。我为此编写了一个定制汇编器。
一个CPU模拟器:模拟8080机器码。为此,我将Maly/8080js项目克隆到我的存储库[1]中,并对其进行了一些调整。
一个简单的Web用户界面,用于编写8080汇编代码、运行它并观察结果(如内存和寄存器中更改的值)。我写了一个基本的UI INJS:
如果您想要玩模拟器,可以在https://eliben.org/js8080上在线获得实况版本。
UI纯粹是客户端的;它不发出任何请求,只是将您的浏览器用作GUI。它确实使用浏览器的本地存储来保存最后一个程序友然。
在这样的项目中使用JS是非常自然的,因为最终我感兴趣的是有一个方便的Web用户界面来玩模拟器。当我这样做时,我几乎总是最终编写普通的HTML+CSS+JS,避免使用框架。我不经常编写JS,所以每当我开始新项目的工作时,框架都会与上次相比发生了典型的变化,我只是没有时间来跟踪这些信息。(这句话的意思是:“我不经常写JS,所以每当我开始做一个新的项目时,框架都会发生变化,我就是没有时间去跟踪。)”普通HTML+CSS+JS的寿命要长得多,IMHO,尽管它确实意味着更多的手动工作(例如,使UI与应用程序状态保持同步)。
我想使用的唯一框架是用于CSS和布局的Bootstrap,但为了简单起见最终决定不使用它。
与几年前相比,我们很幸运在2020年拥有了更多稳定和可用的JS和Web API。对于模拟器,我一直在使用JS的ES6版本,它现在得到了广泛的支持,并提供了许多细节。
我选择了供应商8080js,因为它似乎没有维护,而且我也想避免依赖,更喜欢项目自给自足。使用8080js很容易做到这一点,因为它是一个单独的JS文件,而且它有一个允许的2条款BSD许可证。我已经在克隆的源文件中完整地复制了许可证。FWIW,8080js本身也基于较早的BSD许可的模拟器;最好的操作系统:-)