MS-DOSのFDからイメージファイルを作成するという作業は、FDドライブやMS-DOS自体の入手が困難になった現在ではかなりハードルが高いものです。 FreeDOSでなんとかなれば良いのですが、互換性の問題が時々あります。
本稿では、意外と持っている可能性が高く、現代のPCでも読み込みが容易なPC-98版Win9xのセットアップCDからDOS起動ディスクを生成する方法を記載しておきます。
なお、本手順に沿って出来上がった起動ディスクは動いてはいるもののどこか変な可能性があります。 DOSを起動できたらFORMATコマンド等を使い、別のディスクに正規の起動ディスクを構築するのを推奨します。
Windows 9xは自前でDOS(バージョンは7)を持っていて起動ディスクを作ることもできます。 こちらはWin用に最適化されてはいますが、MS-DOSの系統なのでFreeDOSよりは互換性があります(と思っています)。 しかし、Win9xのセットアップCDだけを持っている状況でこれを使おうとすると困ることに気付きます。
起動ディスクに必要なファイルはCDの中に入っています。 ところが、起動ディスク自体はWindowsが起動する状態か、その起動ディスクを持っている状態でないと作成できません。 起動ディスクを作るためにFreeDOSへWin9xのFORMATやSYSを持っていってもバージョン違いで拒否されます。 Windowsから作ろうとしても、FreeDOSでWin9xのセットアップを走らせようとすると互換性の問題で途中で止まってしまいます。
つまり、Win9xのDOSが起動するディスクを作るためにはWin9xのDOSが起動するディスク(または、MS-DOSの起動ディスク)が必要という無限ループになります。 したがって、なんとかしてこれ以外のルートで起動ディスクを生成しなければなりません。
作る際に必要なものは以下の通りです。 あらかじめ用意しておいてください。
ダウンロードしたFreeDOS(98) FDイメージから1.2MBの方をコピーしてwinbootdisk.hdmみたいな名前にリネームしてください。 リネームしたファイルをディスクイメージエディタで開き、中にあるファイルを全消去してください。 消去したら一旦ディスクイメージエディタを終了します。
他、FreeDOSのFDFORMATで空のディスクイメージをフォーマットして作成しても構いません。
Win9xのCDからCOMMAND.COMとWINBOOT.SYSとSYS.COMを抜いてきます。 WINBOOT.SYSはIO.SYSにリネームします。
WIN95\PRECOPY1.CABの中にCOMMAND.COMとWINBOOT.SYSが、WIN95_03.CABの中にSYS.COMが入っています。
WIN98N\PRECOPY1.CABの中にCOMMAND.COMが、WIN98N\PRECOPY2.CABの中にWINBOOT.SYSが、WIN98N\BASE4.CABの中のEBD.CABの中にSYS.COMが入っています。
COMMAND.COMとWINBOOT.SYS(またはIO.SYS)とSYS.COMを頑張って探してきてください。
FreeDOSのIPLではWin9xのDOSは起動できませんので、これを書き換える必要があります。
SYS.COMをバイナリエディタで開き、SWINという文字列を探します。 複数ありますが、ファイルの先頭から探したときに最初に見つかったものを使用してください。
SWINの4バイトほど手前に0xEBのデータがあり、それより前は0x00が続いていると思います。 この0xEBがIPLの開始位置です。 IPLの終了位置はそこから0x200くらいアドレスを進めた位置にある0x55 0xAAです。
先ほど用意したwinbootdisk.hdmもバイナリエディタで開き、アドレス000h~1FFhの範囲を先に見つけたSYS.COMにあるデータに置き換えます。 ただし、ディスクイメージのアドレス00Bh~03Dhの範囲だけは元の内容のままにしてください(なお、この範囲はSYS.COMではほぼ0で埋まっています)。 開始の0xEBと終了の0x55 0xAAはFreeDOSでも同じようにありますので、これを目印にしてズレないように注意してください。
作業が完了したら、winbootdisk.hdmを保存します。
手順3の書き換えをした後のディスクイメージをディスクイメージエディタで開きます。 ここでエラーが出る場合は手順3の書き換えで失敗していますので、手順3に間違いがないか再確認してください。
ディスクイメージが開けたら、その中にCOMMAND.COMとIO.SYSを書き込みます。 作業が完了したらディスクイメージエディタを終了します。
Win9xのDOSではMSDOS.SYSはダミーですので必要ありませんが、互換性の観点で必要であれば1024バイト以上のダミーデータを入れたMSDOS.SYSというファイルを置いておくと良いと思います。 中身はINI的な書き方ですので、コメントアウトの「;」を先頭に付けた1024バイト以上のテキストを書いたファイルを作り、MSDOS.SYSに名前を変えて入れておけばOKです。
エミュレータ(Neko Project 21/Wでもなんでもいいです)にwinbootdisk.hdmをマウントしてリセットします。 上手く出来ていれば、Win9xのDOSが起動するはずです。
上の状態でWin9xのDOSが起動できる状態ですが、FDやHDDのフォーマットが出来ませんのでそのためのファイルを準備します。
Win9xのCDからFORMAT.COM(FDフォーマット用)とFDISK.EXE(HDDフォーマット用)を抜いてきます。 抜いてきたファイルをディスクイメージエディタで書き込めばFDやHDDのフォーマットやシステム転送が出来るようになります。
FORMATやFDISKの使い方については割愛します。 なお、起動可能なHDDにしたい場合は、FDISKで領域確保した後で状態を変更→BOOT可に設定してFORMAT /Sでシステム転送するのを忘れずに。
WIN95\WIN95_03.CABの中にFDISK.EXEとFORMAT.COMが入っています。
WIN98N\BASE4.CABの中のEBD.CABの中にFORMAT.COMが、WIN98N\BASE5.CABの中にFDISK.EXEが入っています。
どこかに入っていると思うので頑張って探してきてください。
以上でエミュレータで起動可能なWin9x DOSのディスクが手に入りました。 後は煮るなり焼くなり好きにしてください。
出来た起動ディスクを使ってHDDをフォーマットし、Win9xをセットアップしてそこから起動ディスクを作ればもっと完全なものも作れます。 ただし、DOSでCDを使うための設定は結構大変ですので、CDの中身を丸ごとHDDイメージ内にコピーしてそこからセットアップを始めるのがおすすめです。 今時のPCであればCD1枚のサイズなんて気にする必要もないでしょう(セットアップにはWIN95やWIN98Nディレクトリだけあれば良いので実質はもっと少ない)。
WindowsのCDからDOS関係の物を探しました。 発掘の際の参考にしてください。
MS-DOSは元からFDですので通常であれば必要なファイル自体を入手できません。 ですが、運良くIO.SYS, MSDOS.SYS, COMMAND.COM等をバックアップデータやMO等から発掘できた場合は、同じような方法で起動ディスクにすることが出来ます。
MS-DOSでやる場合の注意点は、SYS.EXEではなくFORMAT.EXEでないと完全なIPLが含まれないことと、IPLの上書き範囲が2倍(アドレス000h~3FFh)になること、IO.SYSは必ずディスクの先頭に書かなければならないこと、の3点です。
MS-DOSのIPLは"NEC"という文字列を探し、その数byte前に0xEBのデータがあればそれが正解です。そこを開始位置として0x400のサイズで上書きしてください。 ディスクイメージのアドレス00Bh~03Dhの範囲だけは元の内容のままにするというのは同様です。 ただし、MS-DOS 3.3等は元の内容のままにする範囲がアドレス00Bh~01Dhの範囲まで狭くなっています。 その辺りはバイナリを見ながら臨機応変に対応してください。
IO.SYSは必ずディスクの先頭に書かなければならないという条件については、DiskExplorerの場合ディスクの全ファイルを削除してからIO.SYSを書き込めば先頭になります。