克莱夫・辛克莱爵士 (Clive Sinclair) 先生,生于 1940 年,是许多人都知道的企业家和发明家。您可能会因为他以 Sinclair C5 电池为动力的”velomobile” 这种古怪的东西而认识他,该电池在 1985 年解决了通勤者的问题。但是,许多人会以他的名字命名的一系列电子产品认识他。 Sinclair Radionics 成立于 1961 年,致力于生产具有成本效益的电子产品,例如袖珍计算器和便携式电视。
但是,在 1980 年,辛克莱尔的公司以 99.95 英镑的价格发布了 ZX80 计算机,并被推销为” 第一款价格低于 100 英镑的个人计算机”。 ZX80 被证明是购买第一台计算机并学习编码的一种经济有效的方式,但是它确实有一些怪癖,众所周知,当按下每个键时,屏幕会闪烁。 ZX81 于 1981 年发布,零售价为 ZX80 的一半,解决了此问题和其他问题,同时为渴望编码的学习者提供了坚实的基础。与 Timex 达成的协议将 ZX81 命名为 Timex Sinclair 1000 ,并在美国通过 Microdigital Eletronica 在巴西发布了未经授权的克隆 TK85 。
ZX81 取得了成功,从最初的成功开始,发布了更多具有更好图形和臭名昭著的橡胶键的”ZX” 机器。 1982 年发布的第一个 ZX 频谱介绍了标志性经典计算机的橡皮键和小巧的尺寸。在这里,我们开始模拟 ZX Spectrum 机器的旅程,主要是 48K 和 128K (也称为”Toastrack”)。模拟可以给我们同样的怀旧气息,我们可以创建 BASIC 代码项目吗?模拟 ZX Spectrum 的最佳方法是什么?下面,我们向您展示两种方法:一种将树莓派变成 Spectrum ,另一种为您提供一个简单的模拟器,该模拟器应可在 Ubuntu 和其他版本的 Linux 中使用。
使用树莓派模拟频谱
我们不需要太多的计算能力来模拟 Spectrum ,因此,即使您最老的 Linux 机器也应能胜任。从 2000 年代后期开始,就有适用于 Windows , macOS ,智能手机甚至诺基亚的 Linux Internet Tablets 的模拟器。
安装 ZXBaremulator
ZXBaremulator 是直接在树莓派上运行的裸机模拟器。它与除树莓派 4 之外的所有 Pi 型号兼容,这使 ZXBaremulator 成为重用旧树莓派的理想选择。裸机仿真直接在 Pi 硬件上运行,并提供 Z80 处理器的精确仿真。借助树莓派 GPIO ,它也可以与实际硬件一起使用。这意味着我们可以将 Pi 嵌入损坏的”Speccy” 外壳中,并重新使用原始键盘。
要安装 ZXBaremulator ,您将需要备用的 micro SD 卡。使用了 128MB 卡。
- 将 SD 卡格式化为 FAT 设备。
- 从网站下载所需的所有文件档案。
- 将下载内容提取到 SD 卡中。
- 弹出 SD 卡,然后将其插入树莓派。
- 连接您的 Pi 配件并上电。
在短短的几秒钟内,我们将看到 ZXBaremulator 启动到 Spectrum 48K 。如果要模拟 128K ,请按 ALT + F3,频谱 + 2A 为 ALT + F4 *,并通过 *ALT + F2 返回 48K Speccy 。
编写几行 BASIC
BASIC (初学者通用符号指令代码) 语言是 1980 年代的 Python 。它通常预先安装为 ROM 芯片,可以直接从计算机启动。编写 BASIC 是相对容易的,因为它是一种人类可读的语言。最经典,最简单的 BASIC 项目是”Hello World”,它看起来像这样。
10 PRINT"你好,世界"
20 goto 10
go
第 10 行将”Hello World” 写入屏幕,第 20 行指示代码无限循环返回第 10 行。键入 RUN 将启动代码。
为自己编写此代码,我们需要记住, Spectrum 的键盘与我们现在使用的键盘有很大不同。 Spectrum 的键有多种用途,很容易混淆。按 ALT + K 将打开键盘帮助菜单,其中显示 Spectrum 键盘布局和颜色编码的关键字。
- 按 SHIFT + P 插入 PRINT 。
- 按 CTRL + P 插入”,然后输入您的消息,在本例中为”Hello World”。不要忘了在邮件末尾添加另一个”。
- 按 Enter 换行。类型 20
- 要插入 GO TO ,请按 SHIFT + G。
- 要键入 RUN ,请按 R ,然后会出现该单词。
- 按 Enter 以运行代码。
该代码会将消息打印到屏幕上,一旦文本填满屏幕,我们将被询问是否要滚动文本。如果合适,请按 Y 或 N 。
在任何 Linux 计算机上模拟频谱
我们在 Ubuntu 18.04 上安装了 Fuse (免费 Unix Spectrum 模拟器)。保险丝被认为是 Sinclair 机器的事实仿真器。打开终端,然后键入以下内容以安装 Fuse 应用程序和 Spectrum 机器 ROM 。
$ sudo apt update
$ sudo apt-get install fuse-emulator-gtk
$ sudo apt install Spectrum-roms
安装后,通过键入此命令启动应用程序。
$reboot
掌握 BASIC 和保险丝
当 Fuse 启动时,我们将看到 48K BASIC 解释器。因此,让我们启动一些 BASIC 代码并了解其一些怪癖。首先,它与所有 Sinclair 机器具有相同的按键布局。因此,编写简单的 Hello World 脚本。
该项目的 BASIC 代码比以前复杂一些。该代码将循环四次,每次都要求输入一个数字。这些数字加在一起以在末尾产生总和。它演示了如何创建一个 for 循环,以及如何在 BASIC 中创建变量。
1 输入 10 以开始这一行,然后按 SHIFT + L 插入 LET 。这用于创建变量 total 并存储零的整数值。
共 10 LET = 0
2 键入 20 ,然后按 SHIFT + F 插入 FOR ,然后键入 c = 1 并按 CTRL + F 插入 TO 。输入整数 5 。这将创建一个 for 循环,该循环将迭代 5 次。
20 对于 c = 1 到 5
3 键入 30 ,然后按 SHIFT + I 以插入 INPUT 关键字,这将捕获用户的数字并将其保存到名为”a” 的变量中。 INPUT 关键字带有一个额外的参数,该参数使提示提示问题 / 向用户提供指示。
30 输入"数字", a
4 输入 40 ,并使用另一个 LET (SHIFT + L),我们将更新存储在 total 变量中的值,并将下一个整数加到总和中。
40 LET 总计=总计+ a
5 输入 50 ,然后按 SHIFT + N 插入 NEXT ,然后添加变量 c 。这将更新存储在 c 中的值,该值用于控制我们的 FOR 循环。
50 下一个 c
6 键入 60 并插入 PRINT (SHIFT + P) 以打印存储在总变量中的值。
总共 60 个 PRINT
按 R 触发 RUN 出现在屏幕上。按 Enter 键并提供五个数字。该代码会将每个数字加在一起,一旦输入所有五个数字,它将显示最终金额。
完整的代码清单
共 10 LET = 0
20 对于 c = 1 到 5
30 输入"数字", a
40 LET 总计=总计+ a
50 下一个 c
总共 60 个 PRINT
如果要向代码中添加一个总计,请添加新行 45 ,每次 for 循环迭代时,该行都会显示总计。
总共 45 个 PRINT
本文的一个版本最初出现在 Linux Format Magazine_._的一期中