# PC/XT 8088 網頁模擬器（pc8088-web）

繁體中文介面的瀏覽器 IBM PC/XT（8088／8086）模擬器。目標是做出「完整感」嘅機器（可掛軟碟、開 FreeDOS、有除錯器），並逐步追過 PCjs、MartyPC Web、EmuXT 等。

**準確度標籤：功能完整／時序近似**（v1 唔聲稱 MartyPC 級 cycle-exact）。

## English

A browser IBM PC/XT-class emulator with Traditional Chinese UI. CPU/peripheral core is a WASM port of [8086tiny](https://github.com/adriancable/8086tiny) (MIT). Ships the 8086tiny open BIOS (not IBM ROM dumps) and a redistributable FreeDOS floppy image from that project.

## 功能（v1）

- 8086／8088 指令集（8086tiny；足以跑其 BIOS + FreeDOS）
- CGA 文字模式（80×25）+ 320×200×4／Hercules 風格圖形繪製
- PC 喇叭（Web Audio）
- 軟碟 `.img` 拖放／選擇器；上次映像可存 IndexedDB
- XT 風格鍵盤映射 + 手機螢幕鍵盤
- 除錯器：暫存器、FLAGS、反組譯、記憶體 hex、中斷點、單步／踏過、速度滑桿（暫停／4.77 名義／Turbo）
- 機台設定面板、狀態儲存、可分享設定 hash
- I/O 埠日誌、指令計數；CGA composite stub；cassette／MDA 標為預留

## 點樣用

1. 開啟網站（或本地 `npx serve .`）。
2. 預設已掛載 `disks/freedos.img`。
3. 等 BIOS／開機扇區跑；必要時按「重啟」。
4. 點一下畫面後用電腦鍵盤，或開「螢幕鍵盤」。
5. 可自行掛載其他 FreeDOS／DOS 軟碟映像。

免費軟碟：<https://www.freedos.org/download/>

## 授權

| 元件 | 授權 |
|------|------|
| 本專案 UI／包裝碼 | MIT（見下）|
| 8086tiny CPU／BIOS 原始碼與二進位 | MIT · Adrian Cable · `LICENSE-8086tiny.txt` |
| 內嵌 FreeDOS 軟碟（隨 8086tiny 發行） | 依 FreeDOS／8086tiny 再分發條款；原始碼見 FreeDOS 專案 |
| VGA 8×16 字型 | 歷史 VGA 文字字型轉儲（公開流通） |

**唔會**附帶有版權嘅 IBM PC ROM dump。

```
MIT License — pc8088-web UI © 2026 Li Ko-rean
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files...
```

## 本機開發

```bash
# 若改 C 核心：
source /path/to/emsdk_env.sh
cd core
emcc 8086tiny_web.c -O2 -fsigned-char -sWASM=1 \
  -sEXPORTED_FUNCTIONS='[...]' -sEXPORTED_RUNTIME_METHODS='["ccall","cwrap","HEAPU8",...]' \
  -sALLOW_MEMORY_GROWTH=1 -sMODULARIZE=1 -sEXPORT_ES6=1 \
  -sEXPORT_NAME='createPC8088Module' -sENVIRONMENT='web,worker' -sFILESYSTEM=0 \
  -o ../js/pc8088_core.js

npx --yes serve -p 8787 /workspace/pc8088-web
```

## 部署（Cloudflare Pages）

```bash
cd /workspace/pc8088-web
npx wrangler pages deploy . --project-name pc8088-web --commit-dirty=true
```

## Roadmap（超越 MartyPC／PCjs 方向）

1. Cycle-accurate 8088 匯流排時序（或嵌入 MartyPC／類似核心）
2. 真實 8259／8253／8237／FDC 路徑（非 8086tiny 簡化）
3. EGA／VGA、AdLib／Sound Blaster、滑鼠
4. 硬碟映像、ATA、可啟動 HDD
5. 完整記憶體快照／即時存檔雲端分享
6. 組譯器／記憶體編輯／執行追蹤火焰圖
7. 網絡（NE2000）與序列埠
8. 自動回歸測試（BIOS POST、DOS boot、demo 套件）

功能對照見 [`FEATURES.md`](./FEATURES.md)。
