上一个 向上 下一步

橡子原子模拟器

我很自豪拥有一个工作橡子原子,微型计算机围绕6502处理器(照片).这是一种相当未知的机器,由英国橡子公司制造有一个非常好的Basic方言,设计得相当不错正交。我被介绍给例如,当我在大学学习时,对于计算哈密尔顿路径.为此,我编写了程序:啤酒,kl_比斯特、和山毛榉.(英寸2003年1月,我设法恢复了三盘磁带中的更多程序:磁带1,胶带4侧面a、和火腿).

自从我听说像橡子这样的各种其他机器的仿真器Atom,在我发现没有可用的。我知道橡子原子是一个相对简单的要仿真的机器。它没有基于中断的键盘,视频是直接的内存映射,没有特殊定制芯片(例如无声音芯片)。

(1997年10月17日,星期一,Wouter Ras告诉我,他已编写用于MS-DOS的橡子原子仿真器。这个模拟器似乎很强大比这里描述的要好。)

资源

起初我看了一下Xbeeb公司 英国广播公司模拟器。我还发现了一个非常紧凑的规范65C02 cpu。对于与磁带接口相关的软件,我查看了Ian的ZX Spectrum页面(Spec-Cave标准).

最后来源David Firth的Atari 800模拟器证明我最常用full。我从这个模拟器的源代码开始Acorn Atom模拟器的点。

设计

橡子原子有一个非常简单的设计,这使得仿真变得简单。最复杂的部分是CPU仿真,它已经可用。Acorn Atom只有三个内存映射I/O端口用于与硬件通信。

我的设计理念之一是让模拟器与原始机器的未修改ROM映像。

屏幕设计

Acorn Atom有一个简单的一对一内存映射视频接口(使用MC6847视频芯片),这意味着内存的固定部分显示在屏幕上一行接一行。只有有限数量的视频模式,一个文本模式(无闪烁光标)和许多图形模式。这个基本ROM提供黑白图形。扩展ROM允许带有两种附加颜色的图形模式。请参见过去的爆炸声/15年前的BYTE有关的描述另一台家用电脑使用此炸薯条.

图形模式是通过一个I/O端口选择的。所有图形模式使用相同的屏幕分辨率256 x 192像素。文本模式通过放置字符的位图像(很难在源代码中编码)。

键盘设计

Acorn Atom通过两个I/O端口扫描键盘矩阵。一个端口决定要选择的行,另一个端口显示已按下的键。换档和控制键有此端口上的专用线路。“Break”键导致橡子原子要重置。这是重置CPU的唯一方法。没有开机重置。所有其他键都在扫描矩阵中。

由于我不想更改ROM,我决定保留一个矩阵所有键的状态。问题是橡子原子不同于当前计算机上的原子,因此必须重新绘制地图。设计选择是正确的映射(如果只按下一个键),因为这是通常的方法工作,但如果有多个键,则忽略换档冲突按下。(当两个键位于正常位置时,会发生移位冲突键盘,位于Acorn Atom键盘。)

磁带接口设计

I/O端口上的两个门连接到盒式磁带接口。显然,磁带接口所需的时间取决于计算CPU周期。因为这很难实施,而且因为这个接口相当原始,所以我决定使用一些模拟的附加命令扩展监视器Tape-OS中提供的加载和保存操作。

ROM的

ROM仍然是最大的问题。我有一个橡子原子,所以我确实拥有所有ROM。但问题是如何读出它们。一个可能是把它们从Atom中取出,然后用一些读出来专用硬件。虽然,我想我没有这样的硬件在大学里一定很容易找到它。另一个问题Atom已被原始所有者修改,并且我担心在我尝试取出ROM时可能会导致破坏机器。

另一种方法是将ROM保存到磁带中磁带接口,并使用特殊程序读取在PC上,只需分析记录的信号。罗伯特·施密特,“英国广播公司生存!”页面的维护者,写过这样的Acorn BBC机器的程序,Acorn Atom的继承者,如果我们比较一下规格,它似乎使用了相同的信号。

幸运的是,雷内·德·弗里斯给我提供了软盘上的ROM。

发展历史

我在我们的留在中国乌鲁木齐,基于我手头收集的一些信息,比如工作键盘和屏幕上的字符表示。

之后回家,我花了一些时间来编译这些源代码。后来证明,为主要主持人生成的X事件有效与我预期的不同,我需要重新编程键盘模块。问题是你没有得到正确的如果按下了shift键,则显示按键压缩和按键释放序列或同时释放。例如,您可以按下“a”键,按下(shift)键,“A”-释放,(换档)-释放序列。

1996年9月20日

我在屏幕模块中测试了字符生成,并删除了一些字符编码中的小错误。

1996年9月25日

今天,雷内·德·弗里斯突然造访了我的办公室递给我一张软盘,里面有我需要。我在家里试了试ROM,但没用在实验中,我决定把Atom从盒子里拿出来挂起来去看电视。在四处乱逛之后,我发现有些地方Atom中的ROM与软盘上的ROM图像不匹配。

1996年10月8日

今天,我从Renéde Vries那里得到了正确的ROM图像,并尝试了他们。它运行良好,直到开始等待60赫兹信号在0xb002的高位,该高位不存在。这意味着我必须找到产生60赫兹信号的方法,并使其可用。我还怀疑有其他的虫子。

我在WWW上读到Acorn不允许你使用模拟器的ROM映像。为此,我一直在思考关于反编译ROM映像并将其作为C代码包含在模拟器中。

1996年10月11日至13日

我决定通过计算执行的指令来产生一个60赫兹的信号。我没有检查这个信号是否接近60赫兹。经过一些调试,我得到了`ACORN原子'屏幕上的消息提示。但我需要做更多的工作才能走得更远。大多数其中的问题与键盘接口有关。我也是决定不在每次更新后刷新屏幕,而是这样做仅以定期间隔,并且仅当屏幕更新时。这个效果很好。我以后可能会改变,因为我觉得直接更新更为现实。

我现在可以运行一个小程序了。许多键尚未运行。我已向发送公告comp.emulators.misc公司.

1996年10月15日

我用键盘修复了大部分错误。所有按键似乎都有效现在,除了Escape-key。F1-键具有断键,Alt键具有重复键的功能。

1996年10月16日

Escape键正在工作。

1996年10月18日

使B/W图形模式工作。看起来仿真器确实在运行以大约正确的速度。

发布版本1.0。

1996年10月19日

在键盘模拟中添加了缺少的单引号(右引号)。(仍然没有检查复制键)添加了保存和加载功能到监视器程序。

1996年10月21日

发布版本0.2。

1996年12月28日

今天,我收到罗兰·勒尔斯的电子邮件,他告诉我一直在为PC开发Acorn Atom插件,他声称使其操作率达到95%,这确实支持声音和磁带接口。我还没能加载游戏我的模拟器,因为它们的格式不同。

他还告诉我Dick Bronsdijk写了一个橡子原子模拟器在MS DOS下运行。

1997年1月7日

我收到了罗纳德的一些游戏和MS DOS Acorn Atom模拟器鲁尔斯。他还发送了一个包含以下例程的汇编程序列表在PC硬件上仿真MC6847视频芯片。

(大约在这个日期:)我还下载了一个65xx拆卸器,确实看了一下。我还在想关于反编译橡子光盘。

1997年2月9日

我扩展了加载功能以处理两个附加文件格式。如果给它一个带扩展名的文件名`.bin',该文件将作为二进制图像从当前基本位置。如果文件名具有扩展名`.html格式'它从HTML文件中读取程序,其中的代码应该是格式如下:
<!--地址--><预览>程序</PRE><!--结束-->

1997年2月10日

我在屏幕处理代码中做了一些小的更改。而不是将整个图像按一定间隔放在屏幕上代码现在只更新已更改的区域。这导致了显著提高速度(在高速机器上)。看来你也可以现在打字更快。以前,每次击键都会导致键回显到屏幕时要更新的屏幕。

我还修复了键盘代码中的一个小错误。的状态alt-keys只在键盘扫描时出现。

1997年2月11日

增加了对彩色图形模式的支持。使用的颜色是可能不正确。我现在使用黑色、白色、红色和绿色。

我认为是时候发布新版本了。这将是0.3版。

状态

当前状态为:

1999年2月3日星期三

我收到一封来自的电子邮件托比·塞恩他在信中说,他为BBC Micro编写了一个有效的模拟器(橡子原子的继任者),继续运行Macintosh,1987年。但悲剧发生了,他丢失了源代码,他永远的遗憾之一。他认为这可能是第一个为Macintosh编写的仿真器。

2000年2月1日,星期二

今天,我收到朱利安·斯基德莫尔的一封电子邮件,他在邮件中告知我我说他正在为Mac开发橡子原子模拟器基于此处描述的内容。查看他的主页了解详细信息。

来源

这些来源分布在GNU(全球导航单元)通用公共许可.以下源发行版可用作gzipped tar文件:源代码可以在Linux和SunOS 4.1下用gcc编译,并使用基本的X库函数。低于a对分发中的文件进行了描述。

以下文件包含稍作修改的Atari 800版本模拟器源。

其他来源包括:

安装和说明

修改生成文件根据本地设置。你可能有根据X窗口的安装设置INCLUDE和LDLIBS系统。

第一次运行使依赖,后面是制作.编译器仍然可以生成许多警告消息,但不应生成任何错误消息。

可执行文件放在当前目录中。目录来自执行模拟器的,应该包含文件阿克内勒·罗姆,abasic.rom公司、和(可选)漂浮式房间包含ROM的图像。如果从X终端执行模拟器程序(比如xterm公司)它将创建一个新窗口,表示橡子原子的屏幕。X终端窗口将用于打印消息,并发出监视器命令。当^C时进入监视器在X终端监视器中按下。在显示器上键入“help”提示符将显示可能的命令。

加载和保存

要加载文件,必须通过在终端窗口。这将显示监视器提示符。加载文件命令负载后面可以使用文件名。(适用于其他监视器命令,键入帮助)三种支持文件格式:
  1. 二进制格式。此格式与以下格式进行比较BASIC程序存储在内存中。具有扩展名的文件.bin被视为采用此格式。

  2. HTML格式。程序作为嵌入式代码存储在HTML文件。代码应包含在<预览></PRE>标记,以及有关代码位置的信息开始和结束以以下方式在注释中给出:
    <!--地址--><预览>程序</PRE><!--结束-->
    程序的每一行都应该有一个行号,后面跟着内容。特殊字符“<”、“>”和“&”应使用“&lt;”编码`&gt;',和“&amp;”。

    此格式的示例可以在中找到Ha_beest.html(_B)。另存为源。

  3. 文本格式。待解释

我的 黑客第页