8086tiny:極小 PC エミュレータ

まあこの日記(?)的には例の「MS-DOS ソースコード公開」ネタをやっとくべきかもしれないけど敢えて外していくスタイル(ほんとはまだ落としただけでソース確認してない)。
まあそんなわけで 8086tiny です。例によって例の DOS 系掲示板で知ったのですが興味深いところがあります。

  • 驚きの短さ。本体は C ソース1本で 750 行程度(もっとも、エミュレーションには専用 BIOS も必要であり、こちらはアセンブラで 3850 行程度。PC/XT 相当機をエミュレーションしており、SDL 経由の CGA/Hercules グラフィックやビープ音出力までサポートしている。
    しかし、この短さには若干のトリックが…(下項参照)
  • CPU エミュレーションに必要なデータがゲスト空間側にもおいてある。レジスタエイリアスがゲスト空間上にメモリマップされていたり、命令デコード用のテーブルが BIOS 上にハードコードされていたりする。
  • MIT ライセンス。GPL よりは気楽に再利用できる…ただ、↑のような技術的仕様になっているので IBM PC の枠を外れた運用は面倒かもしれない。
  • テキストモードの出力はホストのコンソールに出力される。Windowsコマンドプロンプトエスケープシーケンスがサポートされないので事実上ただのダム端末であり、フルスクリーンのテキストアプリは使い物にならない。

エミュレータとしての完成度、という意味合いで言うとそれほど利用価値は高くないかもしれません(レガシー IBM PC エミュレータとしては DOSBox という決定版がありますし…)が、実装に関する技術的側面のほうに面白さがある、というのが個人的なポイント。

で、フォーラムに上がってた Win32 版のバイナリ使って付属のディスク起動してみた。しかしこのゲーム(ALLEYCAT)、どうやって終了するのかよくわからない…わからないのでタスクマネージャで 8086tiny を落としている。

おまけ:ノリで訳してみたドキュメント 8086tiny_jadoc_20140323.zip