ほんとうに DOS 上で動く qemu

つーことで軽くためしてみました。
以下さっき個人的にやってみたときの手順。

  1. HX DOS Extender のランタイムを取ってくる。HXRT.zip と HXGUI.zip だけでよい。
  2. qemu の Win32 版を取ってくる。qemu-0.8.1-windows-3.zip を使いました。
  3. MSVCRT.DLL が必要なので、持ってない場合はどっからか取ってくる。Windows の SYSTEM もしくは SYSTEM32 フォルダに入っている場合が多い。
  4. qemu-0.8.1-windows-3.zip を適当に展開(これは Windows 上でやった)。
  5. copy vgabios-cirrus.bin VGABIOS-.BIN
  6. MSVCRT.DLL を qemu と同じフォルダにコピー
  7. HX DOS Extender を適当に展開。ディレクトリを手動で作成して(C:\HX)そこに HXRT.zip と HXGUI.zip を unzip。
  8. Windows 上での作業はひとまずおしまい。再起動して Win98SE のシングル DOS モードにする。
  9. HX DOS Extender の BIN ディレクトリに PATH を通す(PATH C:\HX\BIN;%PATH% とかそんな感じ)
  10. GUI 起動時の画面サイズが BIN\HXGUIHLP.INI に設定されている。変えるときは適当に直す。
  11. 画面を英語モードにしておく(us.bat もしくは chcp 437)
  12. qemuディレクトリで、
    dpmild32 -g qemu.exe -m 64 -L . -hda linux.img -localtime
  13. …あっさり起動した。
  14. 気が済んだら ctrl+alt+2qemu モニタに移って 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/2DOS 窓では動かなかった。OS(もしくはメモリマネージャ)組込の DPMI サーバだと基本的にダメかもわからんね…。