本网页已闲置超过3分钟,按键盘任意键或点击空白处,即可回到网页
最热资讯


亲,“电路城”已合并升级到更全、更大、更强的「新与非网」。点击查看「新与非网」
本方案是一个基于 Arduino Mega 2560 的个人电脑 Arduino Altair 8800 模拟器。相信小的时候都有过想拥有一台个人电脑的想法,但没有现金购买 Altair?现在你可以通过制作一个属于你自己的来实现这个儿时梦想!
很长一段时间以来,我一直认为拥有一台 Altair 8800 计算机会很酷。但是工作的老式 Altairs 很少见,因此很昂贵,如果有的话,很容易花费 1500 到 2500 美元。这对我来说太贵了,无法花在一台电脑上——虽然很酷——但用途有限。
幸运的是,Altair Clone 的创建者 Mike Douglas 向社区提供了他在创建克隆时寻找和使用的所有旧文档和软件。感谢 Mike 的工作,提供了大量有关 Altair 内部工作原理的信息,并且可以方便地获取其最流行的外围设备。
在某个时候,我正在查看 Arduino Mega 2560 规格并开始怀疑它是否有足够的 I/O 引脚来连接 Altair 前面板的 LED 和开关并编写我自己的仿真器软件。原来Arduino的巨型具有完全相同的I / O引脚正确的号码。所以我只需要制作我自己的 Altair 克隆。
使用 Arduino Mega 驱动模拟器运行良好,设置简单,但模拟运行速度仅为 Altair 速度的 25% 左右,并且只能提供 6KB 的模拟 RAM(尽管在当时会很多)。永久存储容量(用于保存在模拟器中创建的程序/数据)也受到限制,因为 Mega 的 EEPROM 只能容纳 4KB。
Arduino Due 有足够的内存来支持完整的 64KB 模拟 RAM,并且运行速度比 Mega 快得多。此外,Due 可以在运行时将数据保存到闪存中。这使得可以将模拟器本身未使用的任何 512K 闪存部分用于永久存储。
使用 Due 我现在有一个 Altair 8800 模拟器,它以大约原始速度运行,提供 64K 的模拟 RAM,包括许多 Altair 软件,并且仍然可以提供 32K 的半永久存储空间来加载和保存模拟器中的程序和数据。
我对这个项目的目标是在使用模拟器时尽可能接近“真实”的 Altair 8800 感觉。这包括让前面板灯尽可能地反映真实行为。
Processor Technology 发布了一个用于 Altair 的小型扩展板(只有几个电容器和电阻器),附带的软件将 Altair 变成了一个音乐系统。可以对模拟器进行相同的添加,使其能够播放当时为音乐系统创建的曲调。
Altair 的另一个具有历史意义的重要扩展是Cromemco Dazzler图形板。使用软件或硬件扩展,模拟器还可以模拟该板:
当然,我最终没有拥有原始的 Altair,因此有关其工作原理的所有信息都必须来自文档和视频。可能会有一些细微的差异,但总的来说,我认为它很好地再现了原始行为。一个已知(和有意)的区别是 HLDA 状态灯:在原始状态灯上,它表示 CPU 已确认被外部设备暂停。此功能从未在模拟器中使用过,因此在这里它表示文件(串行/磁带捕获/重放)当前处于打开状态。
强调
文档
由于模拟器的工作原理与 Altair 8800 完全相同,原始 Altair 的文档(可在 Google 上轻松找到)将提供操作前面板开关所需的所有信息。
但是,模拟器确实包括许多额外的功能和 Altair 的内置软件,可通过前面板上的 AUX1/AUX2 开关访问这些功能(包括但未在原始 Altair 上使用)。
构建说明
一个目标是使用尽可能少的支持电路。Arduino Mega 和 Due 都有足够的 I/O 引脚来直接连接所有前面板元件。唯一需要的附加电路是驱动 36 个 LED 的晶体管和电阻器(如果 LED 直接连接到 Aruino 的输出引脚并且同时打开太多,总电流将超过 Arduino 的限制)。
为这个项目创建完整的原理图将是乏味的、重复的(36 个相同的 LED 驱动器电路,32 个开关的接线)并且不是很有帮助。因此,原理图文档包含有关哪些元件连接到哪些 Arduino 引脚以及各个子电路(如 LED 驱动器)的原理图的详细表格。我还添加了一个 Fritzing 文件来显示条板上 LED 驱动器组件的布局。
为了创建前面板,我首先对 Altair 的前面板进行高质量扫描,然后在复印店将其打印到卡片纸上。对于背衬(实际上将开关和 LED 固定到位),我使用了一块 22 号金属板,使用常规电钻为 LED 和开关打孔。LED 驱动电路焊接在条形板上,条形板直接焊接到 LED 上,而 LED 又由金属板固定到位。
前面板由一个简单的木箱固定并直立。盒子没有原来的 Altair 深(因为它只需要固定前面板和 Arduino)。
为了连接前面板开/关开关,我只是在盒子上添加了一个电源插座(与 Arduino 本身相同),将其连接到前面板开关,然后从那里连接到插入 Arduino 的电源插头。
使用 Arduino Due 时,可以通过将 SD 卡连接到 Due 的 SPI 端口来启用最多 16 个 88-DCDD 磁盘驱动器的仿真。原理图文档的最后一页详细显示了所需的接线。
在将草图上传到 Arduino Due 之前,请务必将 Arduino 编译器的优化设置切换为“性能”。默认情况下,它设置为“大小”(不知道为什么,因为 Due 有 512k 闪存)。为此,加载文件
进入文本编辑器并将任何出现的“-Os”更改为“-O3”。您可以跳过此步骤,但模拟器的运行速度会明显变慢。
模拟器软件也可以在没有连接任何前面板控件的情况下在裸机 Arduino(Mega 或 Due)上运行。这确实允许运行很多包含的程序(那些主要使用串行终端而不是前面板元素的程序)。为此,请编辑config.h 源文件并设置#define STANDALONE 1 (而不是 0)。请参阅文档中的“调试功能”部分,了解如何在该设置中操作虚拟前面板元素。但请记住,这不是模拟器的预期用途。如果您不想构建前面板硬件,我建议使用基于 PC 的全软件仿真器。这config.h 源文件包含许多包含/排除模拟器功能的开关。默认设置运行良好,但如果您想调整模拟器,这是开始的地方。
如果您对此项目有任何想法、意见或问题,请在下方留言。
微软开源 AirSim 模拟器 可训练无人机和无人车
2017-02-20
任天堂再告模拟器网站:索赔1亿美元
2018-07-23
模拟器让Windows 95在浏览器中运行
2016-02-01
基于树莓派的复古游戏模拟器制作
2021-10-28
基于 Raspberry Pi 3 Model A+ 的乙烯基模拟器
2021-11-11
X400 Ryzen 5 Pro 4650G迷你电脑,传说中的仿真怪物
2021-02-14
讨论