Bochs

Windows も実行できる PC/AT 機のエミュレータ

Brain 用 の PC/AT 機エミュレータには QEMU がありますが、Windows 3.x は保護違反、9x は BSoD となるなど、**Windows が軒並み動きません**。Windows CE 用に移植された **Bochs** を用いれば、**Windows を起動させることができます**。

概要
--

ダウンロード

オープンソースの移植性に優れた PC/AT 機のエミュレータです。Windows CE に移植された Bochs 2.3.5 for WinCE を使います。

## 実行速度

CPU のエミュレーション自体は QEMU より高速だと思われます。ただし、**ディスクのアクセス速度が遅い**です。ステータスバーに表示される情報によると平均して 500,000 IPS ほどで動作しているので、**386 命令に対応した 8086** といった速度です。クロック周波数で表現すると、約 2-3 MHz 程度でしょう。

実際に Windows をインストールしてみたところ、下表の結果となりました。試すなら **Windows 3.1 を推奨**します。Windows 95 や Windows 98 はとても重いため、PC 上の Bochs でインストールするのが無難です。

 Windows 3.1
 Windows 95 OSR2.1
 Windows NT 3.51
 Windows 98 SE
 Windows XP

## HDD イメージを作成する

「Bochs」->「PC」フォルダに「bximage.exe」があるので、**Windows PC で**実行して HDD イメージを作成します。その際、プロンプトでは以下のように操作します。

Please type hd or fd. [hd]
そのまま Enter を押します。
Please type flat, sparse or growing. [flat]
そのまま Enter を押します。
Enter the hard disk size in megabytes, between 1 and 129023 [10]
HDD イメージの大きさです。Windows 3.1 なら 64 MB、Windows 95 なら 128 MB、Windows 98 は 384 MB ほどあれば十分に動きます。
What should I name the image? [c.img]
HDD イメージのファイル名です。保存先が分からなくなることを防ぐため、`D:\win98.img` のようにフルパスで入力することを推奨します (エクスプローラーからこのウィンドウにドラッグ & ドロップすると入力できる)。Enter を押すと作成が始まります。終わると以下のようなログが出力されます。

```
ata0-master: type=disk, path="[ファイルパス]", mode=flat, cylinders=XXX, heads=16, spt=63

```

このうち、bochsrc.txt で使う **XXX の部分の数値をメモしておきます**。
## bochsrc.txt

Bochs フォルダに設定ファイルである「bochsrc.txt」があります。これを「My Device」直下に置くことで Bochs が読み込みます。設定項目は概ね Windows PC 用の Bochs 2.3.5 と同じですが、ここでも軽く説明します。

`megs: [MB]`
仮想マシンに割り当てるメモリサイズです。通常 16 MB 以上あれば問題ありません。Brain のメモリ容量は小さいので、大きすぎる値を指定しないよう注意します。
`boot: [floppy/disk]`
ブートするドライブです。`floppy` を指定すれば FD から、`disk` を指定すれば HDD から起動します。
`floppya: 1_44="[イメージのパス]", status=inserted`
FD ドライブのイメージを選択します。QEMU とは違い**仮想マシンの起動中にも入れ替えられます**。同様に「`floppyb:`」も設定すると B ドライブも使えます。
`ata0: enabled=1`
IDE コントローラーを有効化します。
`ata0-master: type=disk, path="[HDD イメージのパス]", mode=flat, cylinders=[HDD イメージ作成時の数値], heads=16, spt=63`
IDE のマスターとして HDD を設定します。[HDD イメージ作成時の数値]は、「HDD イメージ作成」の最後に表示された数値 XXX です。間違っているとエラーが出ます。
`ata0-slave: type=cdrom, path="[ISO イメージのパス]", status=inserted`
IDE のスレーブとして CD/DVD を設定しています。CD/DVD を使わないなら消します。
`vga_update_interval: [数値]`
画面の更新間隔です。4000 くらいを推奨します。動作速度よりも滑らかなカーソル移動を優先するなら 3000 に、DOS しか使わないならば 5000 くらいにするといいでしょう。
## 起動のポイント

起動にあたって、いくつかポイントがあります。

ceOpener を開いている場合は閉じる
ceOpener はスペースキーをフックするため、開いたままでは Bochs 上でスペースキーが使えなくなります。Task Switcher での代用がおすすめです。
辞書アプリを閉じる
開いたままではメモリ不足の原因になります。
**Bochs 本体は `\NAND3`** に、**イメージ等は `\Storage Card`** に置く
本体メモリーの方が読み書き速度が速いためです。
同梱の「WindowMove.exe」と「jotkbd.exe」を先に起動しておく
前者は Bochs ウィンドウの移動に使用します。後者はスクリーンキーボードです。
Bochs の起動には**引数「-q」**が必要
「\NAND3\Bochs\bochs.exe」となっている場合は同梱のショートカット (Start BOCHS) が機能しますが、それ以外の場合は自分で「`"「bochs.exe」のパス" -q`」というショートカットを作ったり、DOS窓Open で「bochs -q」と実行したりして対応します。
エラーが発生した場合は、Bochsrc.txt の設定を見直すと改善する可能性が高いです。また、何も表示されない場合、各種出力を有効にした状態の DOS窓Open 上で実行するとエラーが出力されるかもしれません。

操作
--

### ウィンドウの移動

起動するとウィンドウが大きくて下部が画面からはみ出ていますが、そこに HDD/FDD のアクセス表示があります。見えるようにするために先ほど実行した「WindowMove.exe」を使います。まず、WindowMove のウィンドウ内の左上にある㊉ボタンを押し、凹んだら Bochs のウィンドウ内をタップします。そして WindowMove の矢印ボタンで Bochs のウィンドウ位置を調整します。

### マウス操作・全画面表示

「jotkbd.exe」というスクリーンキーボードを使います。まず jotkbd の「File」メニューから一番上の「Show Function Keys」を押してファンクションキーを表示させ、「Show Numeric Keys」をオフにしてスペースを取る数字キーを非表示にします。そして Bochs のウィンドウをアクティブにし、その状態で jotkbd の F5 キーを押すと全画面化、F12 キーを押すとマウスが有効になります。マウスの状態はステータスバーに表示されます。なお、マウスを有効化すると Enter キーが左クリックに、矢印キーがカーソル移動 (タップでも可能) になるため、仮想マシン上で該当のキーを使いたい場合はもう一度 F12 を押してマウスを無効化します。また、 **Brain の「記号」キーは F12 に当たるため、こちらでもマウスの有効/無効化は可能**です。

### フロッピーディスクの入れ替え

QEMU と比べた Bochs の利点は、FD を入れ替えられることです。ツールバーの FD アイコンを押すと入れ替えのためのダイアログが出ますが、フォルダ参照の「...」ボタンを押してもファイル選択ダイアログが一瞬で消えてしまいます。横の入力欄にフルパスを入力してください。また、特に DOS において、FD を入れ替えてもしばらく認識しないことがあります。入れ替えたら `A:` のアクセスランプが消えるのを待ってからアクセスしましょう。

### Ctrl + Alt + Delete を押す

再起動の時はツールバーの「Reset」を押せばいいのですが、NT 系の Windows では起動時に Ctrl + Alt + Delete の入力を求められます。ツールバーの「USER」と書かれたキーボードのアイコンをタップし、ダイアログに「ctrl-alt-del」と入力することで可能です。

1. ↑ Instructions Per Second (1秒当たりの実行命令数)