PCjs Machines – 在瀏覽器中模擬經典 IBM PC、DEC 小型電腦、計算機與遊戲
PCjs Machines – 在瀏覽器中模擬經典 IBM PC、DEC 小型電腦、計算機與遊戲
PCjs Machines 將 1970‑1990 年代的計算帶入瀏覽器
PCjs Machines 讓任何人都能在現代網頁瀏覽器內啟動完整功能的 IBM PC 相容機、DEC 小型電腦、經典計算機與街機遊戲,保留原始體驗,無需安裝舊硬體或作業系統。
此專案由 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,支援多種作業系統(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 映像、開機媒體或舊作業系統。
- 開源透明 – 原始碼(https://github.com/jeffpar/pcjs)公開,開發者可審核、擴充或移植模擬器至其他平台。
- 教育價值 – 學生可探索早期作業系統、組合語言與 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 以啟動完整模擬的 IBM PC(VGA 圖形)。
- 載入軟體 – 點擊任意軟體縮圖(如 Microsoft Windows 3.1 或 Zork I)即可自動掛載相應磁碟映像。
- 互動 – 模擬器支援鍵盤與滑鼠輸入,多數機器會透過瀏覽器音訊 API 播放原始聲音。
技術基礎
- CPU 核心 – 以純 JavaScript/TypeScript 撰寫,實作 8088/8086、80286、80386、80486、8080、6502 與 PDP‑11 指令集。
- 記憶體與 I/O – 記憶體映射與原硬體相同,支援 DMA、Interrupt Controller 與周邊埠。
- 圖形 – 文字模式 CGA/EGA/VGA 與點陣圖形皆在 HTML5 canvas 上渲染,調色盤符合原硬體規格。
- 儲存 – 磁碟映像以 JSON 描述檔儲存,模擬器按需讀取,實現快速載入且無網路延遲。
- 可擴充性 – 只要定義描述 CPU 類型、RAM 大小、ROM 檔案與周邊設備的 JSON 清單,即可新增機器。
限制與未來方向
- 音效忠實度 – 部分程式(如 Dune II)會出現音量或時序問題;歡迎社群貢獻音效卡模型。
- 周邊支援 – 並非所有舊式周邊(早期調製解調器、特殊顯示卡)皆已模擬。
- 低階裝置效能 – 現代桌機可順暢執行,較舊的智慧手機可能會有卡頓。
- 文件缺口 – 雖然網站連結了大量手冊與資料表,仍有部分冷門硬體配置缺乏詳細說明。
貢獻方式
本專案歡迎各類貢獻:
- 程式碼 – Fork GitHub 倉庫,改進 CPU 核心、加入新裝置或修正錯誤。
- 內容 – 提交額外磁碟映像、手冊或軟體套件(需符合公有領域或共享軟體授權)。
- 測試 – 在多瀏覽器上執行現有測試套件(CPU 測試、VGA Black Book 測試),回報回歸問題。
結論
PCjs Machines 提供一個完整、基於瀏覽器的平台,讓使用者體驗、保存與學習個人電腦史的全光譜──從第一台 IBM PC 到早期 Windows,從 DEC 小型電腦到經典街機。其開源本質與龐大的軟體檔案庫,使其成為愛好者、教育工作者以及任何想重溫塑造今日數位世界的計算時代者的寶貴資源。