ほんとうに DOS 上で動く qemu
つーことで軽くためしてみました。
以下さっき個人的にやってみたときの手順。
- HX DOS Extender のランタイムを取ってくる。HXRT.zip と HXGUI.zip だけでよい。
- qemu の Win32 版を取ってくる。qemu-0.8.1-windows-3.zip を使いました。
- MSVCRT.DLL が必要なので、持ってない場合はどっからか取ってくる。Windows の SYSTEM もしくは SYSTEM32 フォルダに入っている場合が多い。
- qemu-0.8.1-windows-3.zip を適当に展開(これは Windows 上でやった)。
- copy vgabios-cirrus.bin VGABIOS-.BIN
- MSVCRT.DLL を qemu と同じフォルダにコピー
- HX DOS Extender を適当に展開。ディレクトリを手動で作成して(C:\HX)そこに HXRT.zip と HXGUI.zip を unzip。
- Windows 上での作業はひとまずおしまい。再起動して Win98SE のシングル DOS モードにする。
- HX DOS Extender の BIN ディレクトリに PATH を通す(PATH C:\HX\BIN;%PATH% とかそんな感じ)
- GUI 起動時の画面サイズが BIN\HXGUIHLP.INI に設定されている。変えるときは適当に直す。
- 画面を英語モードにしておく(us.bat もしくは chcp 437)
- qemu のディレクトリで、
dpmild32 -g qemu.exe -m 64 -L . -hda linux.img -localtime
- …あっさり起動した。
- 気が済んだら ctrl+alt+2 で qemu モニタに移って quit で終了。
いやホントに動くよ。こりゃすげえ。
いくつかメモ書いておきますね。
- HX のドキュメント(COMPAT.TXT)には LFN サポートの導入が必須と書かれている。これは一部のファイル(てゆうか vgabios-cirrus.bin だけど)が DOS の短いファイル名に収まらないから。むりやり 8.3 形式に丸め込むと LFN サポートのない環境で動く。
具体的には vgabios-cirrus.bin をリネームして VGABIOS-.BIN とすればよい(ファイル名が衝突せずに済んで本当によかった)。 - HX のオフィシャルサイトに qemu に関する項目がいつのまにかできていた。曰く、
- HX は仮想記憶をサポートしていないのでメモリ量にご注意。ゲストに 128M バイトのメモリを割り当てるには(ホストに)170M バイト程度のメモリが必要なもよう。
- パフォーマンスに関して過度の期待は禁物かと。なんせ土台が DOS なんで。
- Win95 ぶちこんだディスクイメージを持ってきて、qemu 上で Win95 のシングル DOS モードを動かしてみた。キーボードの日本語部分も期待通りに出てるみたい。それにしても filmtn のレスポンスとか、実機より機敏な気が…実機の VGA 部分があんまし速くないのか?
- Win95 GUI モードの起動は失敗。
WSOCK32: NO PACKET DRIVER FOUND.
ですって。えー、パケットドライバ入れないとダメ?
dkrnl32: exception C0000005, flags=0 occured at 2516A3E
ax=3244A4 bx=10 cx=E610016 dx=39840058
si=2103950 di=2103950 bp=3244F0 sp=3244A4
exception caused by access to memory address 39C07198
ip = Module 'wsock32.dll'+16A3E
dkrnl32: fatal exit!
WSAStartup: 0
ネットワーク関係のものを入れてない状態の Win95 だったら起動したような気がする。もう 8029 のドライバ入れちゃってたから…。 - あと気になるのはサウンド関係とタイマ関係ですが、調べてないです。スマンス。
- OS/2 の DOS 窓では動かなかった。OS(もしくはメモリマネージャ)組込の DPMI サーバだと基本的にダメかもわからんね…。