首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于
游戏 morning

在 Linux 上的 CP/M 模拟器上玩 Zork 1 (2021)

摘要

Playing Zork 1 on a CP/M emulator on Linux This article is about using the z80pack Z80 emulator to run CP/M on Linux, and then using the CP/M implementation to run Zork 1. I've chosen Zork 1 for this ...

the Zork and for with emulator Linux using but was
2026-11-09 1 阅读 约7分钟阅读 linuxkernal
分享:
字号:
在 Linux 上的 CP/M 模拟器上运行 Zork 1 本文介绍如何使用 z80pack Z80 模拟器在 Linux 上运行 CP/M,然后使用 CP/M 实现来运行 Zork 1。我在本示例中选择 Zork 1,因为它是一个不简单的程序,但仅使用纯文本输入和输出。运行 WordStar 之类的东西可能更具说明性,但它会引发与终端相关的问题,我不想在这个简单的示例中涉及这些问题。不过,我将在文章末尾讨论这个主题。注意:绝对没有实际理由使用 CP/M 模拟器来玩 Zork。如果您愿意的话,有很多更好的方法可以在现代计算机上玩 Zork。使用 CP/M 模拟器的一个原因(可能是唯一的原因)是总体上熟悉 CP/M,以便构建您自己的基于 Z80 的复古计算机。 Zork 是当今所谓的“互动小说”的早期例子,但在所有计算都是基于文本的时代,它被称为“文本冒险”。 Zork 接受“拿斧头”和“看盒子”等简单指令作为本质上解决谜题练习的输入。 CP/M 是一个早期的操作系统,最初用于带有软盘驱动器的微型计算机,但最终用于早期的硬盘驱动器。 50 岁以下的人几乎没有人记得使用 CP/M 时它是最新、最伟大的,但它的遗产在 MS-DOS 中得以延续,并受到它的启发。 CP/M 最初是为 8080 微处理器开发的,但在 Z80 中使用更广泛。要在 Linux 上运行 CP/M,最简单的方法可能是使用 Z80 模拟器。在本文中,我将概述如何获取和构建 z80pack 以及一些适用于 Linux 的 CP/M 工具、如何设置虚拟磁盘来存储 Zork 文件以及如何从 CP/M 命令提示符运行该程序。我假设您熟悉 Linux,并且愿意使用命令行工具。我还假设您至少对 CP/M 有所了解。安装 z80pack 我认为 z80pack 在标准 Linux 存储库中通常不可用 —— 如果是的话,它可能不是最新的。您需要下载源代码并构建它。将源代码解压到任何方便的目录中。我正在使用 $HOME/lib/z80pack-1.37 。编译核心: $ cd ~ /lib/z80pack- 1.37 /cpmsim/srcsim $ make -f Makefile 。 linux 编译配套工具: $ cd ~ /lib/z80pack- 1.37 /cpmsim/srctools $ make -f Makefile 。 linux 通过启动 CP/M 3 测试安装是否基本正常运行: $ cd ~ /lib/z80pack- 1.37 /cpmsim $ 。 /cpm 3 请注意,cpm3 只是一个脚本,它在从磁盘映像库复制相关磁盘后运行 ./cpmsim(更多内容见下文)。构建和安装 cpmtools cpmtools 是一组用于管理 CP/M 磁盘映像的实用程序。它可以列出磁盘映像内容,并将文件复制到其中或从中复制文件。我们需要它来将程序文件和数据从主机系统复制到 CP/M。 cpmtools 可在各种 Linux 存储库中使用,但我发现我的(Fedora 31)系统的存储库版本不能可靠地工作。然而,从源代码构建很容易。下载源代码。解压存档,运行 ./configure ,然后运行 ​​make ,即 sudo make install 。默认安装位于 /usr/local/bin 中,它可能位于也可能不位于您的 $PATH 中。 z80pack 如何处理磁盘 z80pack 使用文件(图像)来表示物理磁盘,就像大多数虚拟化软件一样。这些文件的结构在某种意义上是物理磁盘的表示,因此操作它们的工具(即 cpmtools 包中的实用程序)需要了解物理磁盘结构。默认情况下,cpmtools 实用程序假定使用 720kB、8 英寸的软盘——这对于许多用途来说都很好。事实上,运行 Zork 1 就很好了,但无论如何我都会解释如何创建硬盘映像,因为您可能在某些时候需要这样做。默认情况下,cpmsim 在“./disks”目录中查找磁盘映像。也就是说,它查找相对于当前工作目录的目录。它基本上支持六个磁盘设备:软盘驱动器 A: 到 D: 以及硬盘 I: 和 P:。它期望以文件drivea.dsk、driveb.dsk等形式找到这些磁盘的映像。如果这些映像文件不全部存在,cpmsim仍将启动——它只会做出响应,就好像驱动器中没有介质一样。启动 CP/M 3 所需的最低限度是映像 disks/library/cpm3-1.dsk 作为驱动器 A: 但是,CP/M 集的第二个磁盘上有一些有用的实用程序,用于驱动器 B: 因此: $ cp disks/library/cpm 3 - 1 。 DSK 磁盘/驱动器a 。 dsk $ cp 磁盘/库/cpm 3 - 2 。 dsk 磁盘/driveb 。 dsk 您现在应该能够运行 ./cpmsim ,并且您会发现只有驱动器 A: 和 B: 可用。让我们创建一个 4Mb 硬盘作为驱动器 I:(CP/M-3 实际上支持最大 500Mb,但对于本示例来说 4Mb 已经足够了)。 $ /usr/local/bin/mkfs 。 cpm -fz80pack-hd 磁盘/drivei 。 dsk 在此命令中,z80pack-hd 指的是存储在文件 /usr/local/s 中的一组物理磁盘参数
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱