PCjs Machines – クラシック IBM PC、DEC ミニコンピュータ、電卓、ゲームのブラウザ内エミュレーション
PCjs Machines – クラシック IBM PC、DEC ミニコンピュータ、電卓、ゲームのブラウザ内エミュレーション
PCjs Machines が 1970 年代〜1990 年代のコンピューティングをブラウザに届ける
PCjs Machines を使えば、誰でもモダンなウェブブラウザ内で完全に機能する IBM PC 互換機、DEC ミニコンピュータ、クラシック電卓、アーケードゲームを起動でき、レガシーハードウェアや OS をインストールせずにオリジナルの体験を保存できます。
このプロジェクトは Jeff Parsons が GitHub で(MIT ライセンス)管理しており、エミュレートされたハードウェア、オペレーティングシステム、アプリケーション、ドキュメントの膨大なカタログを提供しています。
今日実行できるもの
- IBM PC 互換機 – オリジナルの Model 5150 から AT、XT、AT 互換 COMPAQ マシン、さらには IBM PS/2 モデルまで。各マシンは CGA、EGA、VGA、モノクログラフィックで起動でき、多くは完全な BIOS ソースを含みます。
- DEC ミニコンピュータ – PDP‑10 KA10/KL10、PDP‑11/20/45/70 とさまざまな OS(RT‑11、RSTS/E、UNIX 系)や診断テープを搭載。
- プログラマブル電卓 – TI‑57、TI‑55、TI‑42、Ohio Scientific Challenger 1P。内蔵 BASIC プログラムと診断機能付き。
- アーケードの名作 – Space Invaders(1978)がオリジナルハードウェア構成で動作。
- ソフトウェアライブラリ – 200 以上のタイトル。初期 PC‑DOS ユーティリティ(DONKEY.BAS、VisiCalc)から Windows 95、MS‑DOS ゲーム(Wolfenstein 3D、Dune II)、生産性スイート(Lotus 1‑2‑3、Microsoft Word)、クラシックテキストアドベンチャー(Zork I‑III、The Hitchhiker’s Guide to the Galaxy)まで網羅。
- 開発ツール – オリジナルのコンパイラやアセンブラ(Turbo Pascal、Microsoft C、Borland Sidekick、IBM Macro Assembler)も実行可能で、ブラウザ内で歴史的なソフトウェア開発が可能です。
これらすべてはサイト上の PCjs Explorer ツリーからアクセスでき、カテゴリを展開したり、マシンをサプライズ選択したり、特定の ROM やディスクイメージにドリルダウンできます。
保存と教育における重要性
- 本物のハードウェア挙動 – JavaScript CPU コアはタイミング、I/O ポート、ビデオメモリレイアウトをエミュレートし、プログラムはオリジナルマシンと同様にハードウェアとやり取りします。
- インストール不要のアクセス – ユーザーはモダンブラウザさえあればよく、VM イメージやブートメディア、レガシー OS は不要です。
- オープンソースの透明性 – ソースコード(https://github.com/jeffpar/pcjs)は公開されており、開発者は監査、拡張、他プラットフォームへの移植が可能です。
- 教育的価値 – 学生は初期 OS、アセンブリ言語、GUI の進化を、入手困難で壊れやすい実機なしで探求できます。
Hacker News からのコミュニティハイライト
mk_stjames: 「PCjs 内で Windows 3.1 の VB プログラムを作成し、.exe と vbrun100.dll をエクスポートして実際の 1992 年製フロッピーにコピーし、ヴィンテージ 486 DX で実行した。現代の Mac → JavaScript エミュレータ → フロッピー → 1992 年ハードウェアという全工程が完璧に動作した。」
これは PCjs が数十年にわたるコンピューティングを橋渡しし、モダン開発者が本物のヴィンテージマシンで動くソフトを作れることを示しています。
glimshe: 「PCjs 上の Visicalc(1981)は、真の革命がどんなものだったかを示している。」
コメントは PCjs にあるソフトウェアの歴史的意義を強調しています。単なるノスタルジアではなく、画期的アプリケーションの生きた博物館です。
drivers99: 「IBM PC のブートディスクを探索できるが、音楽にノイズがある。」
ユーザーは音声ハードウェアのアナログ特性を JavaScript で再現する難しさから、軽微なエミュレーションの不具合を報告しています。
CharlesW: 「フルスクリーンの Oregon Trail と King's Quest を子どもたちに体験させるのが待ちきれない。」
PCjs はクラシックゲームを新世代に即座にプレイさせられます。
martin_drapeau: 「Dune II、Wolfenstein 3D、Commander Keen – かつて遊んだゲームが全部揃っている。とても素晴らしい!」
タイトルの幅広さは 90 年代初頭の重要 PC ゲームを保存し、インタラクティブエンターテイメントの時代を保全しています。
はじめ方
- https://www.pcjs.org/ にアクセス – ホームページにロゴとナビゲーションリンク(About、Blog、Explorer、Repository、Tools)が表示されます。
- Explorer を開く – Expand All をクリックしてハードウェアツリー全体を閲覧するか、Surprise Me でランダムマシンを選択します。
- マシンを選択 – 例: IBM → PC (Model 5150) → VGA Display を選び、VGA グラフィック付きの完全エミュレート IBM PC を起動します。
- ソフトウェアをロード – 任意のソフトウェアサムネイル(例: Microsoft Windows 3.1 や Zork I)をクリックすると、対応するディスクイメージが自動でマウントされます。
- 操作する – エミュレータはキーボードとマウス入力を受け付け、ほとんどのマシンはブラウザの Audio API を通じて元のサウンドを再生します。
技術的基盤
- CPU コア – 純粋な JavaScript/TypeScript で実装され、8088/8086、80286、80386、80486、8080、6502、PDP‑11 の命令セットをサポート。
- メモリと I/O – メモリマップはオリジナルハードウェアを鏡写しし、DMA、割り込みコントローラ、周辺ポートをサポート。
- グラフィック – テキストモード CGA/EGA/VGA とラスタ画像を HTML5 canvas に描画。カラーパレットはハードウェア仕様と一致。
- ストレージ – ディスクイメージは JSON ディスクリプタとして保存され、エミュレータがオンデマンドで読み込み、ネットワーク遅延なしで高速ロードが可能。
- 拡張性 – 新しいマシンは CPU タイプ、RAM 容量、ROM ファイル、周辺デバイスを記述した JSON マニフェストを定義するだけで追加可能。
制限事項と今後の方向性
- 音声忠実度 – Dune II など一部プログラムで音量やタイミングの問題が報告されており、コミュニティによるサウンドカードモデルの追加が期待されています。
- 周辺機器サポート – すべてのレガシー周辺機器(初期モデムや特殊グラフィックカードなど)はまだエミュレートされていません。
- 低スペックデバイスでの性能 – 現代のデスクトップはスムーズに動作しますが、古いスマートフォンでは遅延が発生する可能性があります。
- ドキュメントの欠落 – 多くのマニュアルやデータシートへのリンクはあるものの、マイナーなハードウェア構成については詳細な記述が不足しています。
コントリビューション
プロジェクトは以下の形での貢献を歓迎します:
- コード – GitHub リポジトリをフォークし、CPU コアの改善、新デバイスの追加、バグ修正を行う。
- コンテンツ – 追加のディスクイメージ、マニュアル、ソフトウェアパッケージを適切なパブリックドメインまたはシェアウェアライセンスで提出。
- テスト – 既存のテストスイート(CPU テスト、VGA Black Book テスト)を複数ブラウザで実行し、リグレッションを報告。
結論
PCjs Machines は、最初の IBM PC から初期 Windows、DEC ミニコンピュータ、クラシックアーケードタイトルまで、パーソナルコンピュータ史全体を体験・保存・学習できる包括的なブラウザベースプラットフォームです。そのオープンソース性と膨大なソフトウェアアーカイブは、ホビイスト、教育者、そしてコンピューティング時代を再体験したいすべての人にとって貴重なリソースとなります。