在树莓派上运行 ZXBaremulator 模拟 Spectrum

克莱夫・辛克莱爵士 (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 卡。

  1. 将 SD 卡格式化为 FAT 设备。
  2. 从网站下载所需的所有文件档案。
  3. 将下载内容提取到 SD 卡中。
  4. 弹出 SD 卡,然后将其插入树莓派。
  5. 连接您的 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 键盘布局和颜色编码的关键字。

  1. SHIFT + P 插入 PRINT 。
  2. CTRL + P 插入”,然后输入您的消息,在本例中为”Hello World”。不要忘了在邮件末尾添加另一个”。
  3. Enter 换行。类型 20
  4. 要插入 GO TO ,请按 SHIFT + G
  5. 要键入 RUN ,请按 R ,然后会出现该单词。
  6. 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_._的一期中

分享到