
2026/11/09 3:33
Linux で CP/M エミュレーター上でザーク 1 をプレイする(2021)
RSS: https://news.ycombinator.com/rss
要約▶
日本語訳:
概要:本記事は、Linux ユーザーが Z80 エミュレータ「z80pack」と CP/M を使用してザーク 1 を動作させるための実践的なガイドを提供しています。著者は、現代の日常コンピューティングにおいて他のエミュレーションオプションと比較して実用的な有用性は低いことを認めていますが、レガシーハードウェア体験と CP/M システムへの理解に興味を持つホビーユーザーにとって、このセットアップは依然として不可欠です。歴史的な文脈では、CP/M が 8080 フロッピードライブ搭載システムから始まり、ハードディスクを支持する Z80 プロセッサに進化した経緯を追跡しており、MS-DOS に与えた影響についても言及しています。ゲームを真正に動作させるためには、標準のリポジトリではなくソースコードから環境を組み立てる必要があります。具体的な手順としては、z80pack のディレクトリ構造内での
make コマンドを使用してコアとツールをコンパイルし、ディスクイメージを設定します(デフォルトは 720kB のフロッピーディスクまたはカスタムハードディスク)。特定のファイル要件(ZORK1.COM と ZORK1.DAT)を用意する必要があります。最後に、Linux CLI と CP/M に精通する読者には、Gnome Terminal でターミナル互換性設定を構成し、レトロソフトウェアが要求するバックスペースキーのマップingu問題(DEL versus Ctrl-H)を解消するために stty を使用してシェル動作を調整するように指示されています。本文
Linux 上で CP/M と『ザ・フォーク 1』を実行する方法(Z80Pack を使用)
はじめに
本記事では、Linux 環境で z80pack の Z80 エミュレーターを使用して CP/M を動作させ、その上からインタラクティブ・フィクションゲーム『ザ・フォーク 1』(Zork 1)を実行する手順を解説します。
なぜ『ザ・フォーク 1』か?
- 『ザ・フォーク 1』は複雑さはないが、純粋なテキスト入出力のみを使用するため扱いやすいです。
- WordStar など他のアプリを実行するとターミナル関連の課題が発生しやすく、本稿のような単純な例では触れず(詳細は後述)、本作に集中します。
重要な注意点
- 実用的な理由: 現代 PC で CP/M エミュレーターを使う実用的理由はほぼありません。『ザ・フォーク』をプレイするには他にも優れた方法が存在します。
- 唯一の正当な理由:
- CP/M の仕組み全般を理解したい場合。
- Z80 ベースのリトロコンピュータを構築する視野を広げたい場合。
対象読者への前提条件
- Linux の基本的な知識とコマンドラインツールの扱いに慣れていること。
- CP/M に大まかな理解があること。
z80pack のインストール
z80pack は標準の Linux リポジトリには常設されておらず、最新版が保証されません。そのため、ソースコードからダウンロードしてビルドする必要があります。
1. ソースコードの展開
任意のディレクトリ(例:
$HOME/lib)に移動し、z80pack を展開します。ここでは $HOME/lib/z80pack-1.37 を使用します。
2. コア部分と補助ツールのコンパイル
まずコアのエミュレーター (
cpmsim) を構築します。
cd ~/lib/z80pack-1.37/cpmsim/srcsim make -f Makefile.linux
次に、ディスク管理などの補助ツールを構築します。
cd ~/lib/z80pack-1.37/cpmsim/srctools make -f Makefile.linux
3. インストール確認
CP/M 3 が動作するか確認します(
cpm3 はスクリプトで、実際のディスクイメージから起動されます)。
cd ~/lib/z80pack-1.37/cpmsim ./cpm3
cpmtools のビルドとインストール
cpmtools は CP/M ディスクイメージを管理するためのユーティリティ群です。
- ディスク内容のリストアップ
- ファイルの送受信(ホストシステムから CP/M へのコピーなど)
これらはプログラムを移植する際に不可欠です。
インストール手順
- ソースダウンロード・展開
を実行./configure
で構築make
でインストールsudo make install
デフォルトのインストール先は
/usr/local/bin です(PATH に含まれているか確認)。
z80pack のディスク処理方法
z80pack は物理ディスクを**ファイル(イメージ)**として表現します。ツールは物理構造を理解する必要があります。
デフォルト設定
- 想定ディスク: 720KB の 8 インチフロッピーディスク。
- 用途: 『ザ・フォーク 1』実行には十分です。
- 保存場所:
ディレクトリ(相対パス)。./disks - サポートデバイス:
- フロッピー: A:, B:, C:, D: (
,drivea.dsk
など)driveb.dsk - ハードディスク: I:, P:
- フロッピー: A:, B:, C:, D: (
イメージファイルがない場合でもエミュレーターは起動しますが、「メディアなし」として動作します。
必須ディスクのセットアップ
CP/M 3 をブートするには最小限、以下のディスクが必要です。
第 1 ディスク (A: ドライブ):
cp disks/library/cpm3-1.dsk disks/drivea.dsk
第 2 ディスク (B: ドライブ): 有用なユーティリティが格納されています。
cp disks/library/cpm3-2.dsk disks/driveb.dsk
これで
./cpmsim を実行し、A: と B: のみ利用可能であることを確認できます。
ハードディスクイメージの作成 (オプション)
後々のため、4MB のハードディスクイメージを作成します(CP/M-3 は最大 500MB サポート)。
/usr/local/bin/mkfs.cpm -f z80pack-hd disks/drivei.dsk
: パラメータ定義ファイル(z80pack-hd
)。省略すると 720KB フロッピーになります。/usr/local/share/diskdefs
『ザ・フォーク 1』プログラムの入手とインストール
Infocom ゲームシリーズは法的に曖昧な状態が続くことが予想されますが、以下の手順で非公式コピーを使用できます。
ファイル構成
CP/M 版の『ザ・フォーク 1』は以下の 2 つのファイルからなります。
: プログラム本体(バイナリ)ZORK1.COM
: データファイル(z-machine インタプリタとして機能)ZORK1.DAT
※これらのファイルは同じディスクイメージに置かれます。
コマンドラインでのインストール (cpmcp)
作成したハードディスク (
drivei.dsk) にファイルをコピーします。CP/M ディスクはサブディレクトリをサポートしないため、ユーザーエリア 0 を使用します。
/usr/local/bin/cpmcp -f z80pack-hd disks/drivei.dsk ZORK1.COM 0: /usr/local/bin/cpmcp -f z80pack-hd disks/drivei.dsk ZORK1.DAT 0:
『ザ・フォーク 1』を実行する
キーマッピングの修正(重要)
Linux ターミナルでは「バックスペース」キーを押すと DEL (ASCII 127) が生成されますが、CP/M はこれを文字消去として処理します。一方、『ザ・フォーク 1』は伝統的な 「Ctrl+H」(ASCII 8) を要求します。
ターミナル設定を変更して、バックスペースキーを「Ctrl+H」の挙動に変換する必要があります。
Gnome Terminal の例:
- プロファイル設定ページ > 「互換性 (Compatibility)」 タブ
- 適切な設定を選択(詳細は端末依存)
システム再起動
新しいキーマッピングが有効になるように、シェルセッションを再スタートさせる必要があります。
stty erase ^H
これで Linux シェルは通常通り動作しますが、バックスペースキーの生成コードが変わります。これにより『ザ・フォーク 1』での入力も快適になります。
ゲーム起動
エミュレーターを実行し、ハードディスク (I:) からゲームを起動します。
./cpmsim # ... その後コマンドプロンプトから ... A> i: I> zork1
出力例:
ZORK I: The Great Underground Empire Copyright 1982 by Infocom, Inc. All rights reserved. ZORK is a trademark of Infocom, Inc. Release 25 / Serial number 000000 West of House You are standing in an open field west of a white house, with a boarded front door. There is a small mailbox here. >open mailbox Opening the mailbox reveals a leaflet. >read leaflet (Taken) WELCOME TO ZORK ZORK is a game of adventure, danger, and low cunning. In it you will explore some of the most amazing territory ever seen by mortals. ...
これで冒険が開始されます。
CP/M をもってさらなる冒険
CP/M はかつて非常に人気があり、膨大なソフトウェアが存在しました。多くのタイトルは法的に不確実ですが、「放棄されたソフトウェア (abandonware)」として私的使用や教育目的で広く利用されています。
推奨アプリケーション
- WordStar: 「キラーアプリ」。基本的なワープロソフトであり、現在も利用可能です。
- Turbo Pascal (Borland): Z80 の限られたメモリ (64KB) を最大限活用した驚くほど優れたコンパイラです。
画面出力について
これらのアプリは**ラインベース(スクロール可能)**の画面を使用します。ターミナルハンドリングに複雑さをもたらすため、z80pack は特別なターミナルを提供せず、ホストの標準ターミナルに出力を渡すだけです。
- 設定推奨: 多くの Linux ターミナルエミュレータは VT100 互換です。
- CP/M ソフトウェアを VT100 または VT52 モードとして設定することで、十分な動作結果が得られるはずです。