PC-98とDOS/V機の両方で読めるハードディスク(裏技編)


ハードディスク(以下HD)の規格は、大きく言ってSCSIとIDEの2種類があります。HDの出始めから今日まで、紆余曲折はありましたが、これらの規格化のおかげで、マシンとの相性などを殆ど気にせずにHDの使用が可能となっています。

PC-98とDOS/V機という異なる機種でも同じHDが使えます。PC-98用とかDOS/V機用というHDはなく、SCSIのHDならSCSIのインターフェースを持つ機種で、IDEのHDならIDEのインターフェースを持つ機種で使うことが可能です(細々したことまで言うときりがないので止めます)。一般ユーザーの視点から見るとHDに関しては、PC-98とDOS/V機による差異は意識する必要はありません。プログラマの視点ではどうなるか?と言うと、HD-BIOSのベクター番号の違いやら(PC-98はInt1Bh、DOS/V機はInt13h)パラメータの違い、パーティションテーブル等の位置や構造(フォーマット)の違い、などなどどちらのマシンでも共通で使えるプログラムを作ろうとしたら大変です。もちろん、これはDOSレベルのプログラムの話で、Windows上ではAPIがこれらの差異を吸収してくれるため、共通化は比較的容易です。話を元に戻して、先程「同じHDがどちらの機種でも使える」と言いましたがこれは、それぞれのマシンに合わせた初期化・領域の確保を行えばの話で、あるHDを違うタイプの種類に付け替えれば、またそちらで初期化・領域の確保を行う必要があることはHDを増設した経験のあるユーザーならおわかりでしょう。

やっと本題に入ってきました。ブートセクター辺りは、PC-98とDOS/V機で構成が全く異なっており、パーティションテーブルの場所がずれています。ということは、それぞれの場所に、それぞれのパーティション情報を書き込めば、どちらでも認識可能なハードディスクができるのではないか、ということをある日突然思いついたのでした。ちなみに、MACとDOS/V機のどちらでも読み込み可能なハイブリッド形式のCDというのも、基本的にはこうした原理を利用しています。

両方のパーティション情報を持たせる場合、ブートプログラムの領域を壊すので、プライマリのマスター以外という条件がつきます。私の場合、OS(機種に依存する)はプライマリ・マスターに置き、データ(例外もあるが、機種に依存しない)はプライマリ・スレーブに置いているのでHDを差し換えて、データの共有をするという意味では、これでも充分なのです。プログラム自体はその気になればいつでも作れる簡単なものですが、その前に本当にこの方法で両方の機種で認識するのか手っ取り早く試してみたくて、プログラム作成の前にテストを行ってみたのでした。

実はその時、偶然面白いことを発見しました。DOS/V機で使用している2ギガ(FATで1ドライブの領域を確保)のHDをPC-98のプライマリ・スレーブに接続してみました。PC-98のパーティション情報はたかが32バイトですから、データは手計算で直接HDに書き込むつもりでした。余談ながら、こういうテストでパーティション情報を書き込むのにOSに付属のツールを使用してはいけません(PC-98はFORMAT.EXE、DOS/V機はFDISK.EXE)。PC-98ではドライブの全て、DOS/V機ではDPB領域が書き換えられてしまいます。

私が考えたのはこうでした。
1.まず、何もせず起動
2.プライマリ・スレーブのHDは全て未使用となるはず
3.そのHDのPC-98用のパーティションテーブルを作成して再起動
4.プライマリ・スレーブはBドライブとして認識されるはず

ところが、何もせずに起動したところ、何と、Bドライブとして認識されてしまったのでした。その後色々試した結果「PC-98のプライマリ・スレーブに接続したDOS/V形式のHDはプライマリ・マスターの起動OSがWindows95以降なら、自動認識する」ということです。Windows9x起動FDを使用した場合にはドライブとして認識しませんから、Windows起動時にHDの内容からドライブを認識するプログラムが走るものと思われます。

何故、そうなのか?私なりに考えてみました。市販のツールを使えば、MOなどもHD互換にフォーマットできますが、もし、PC-98に接続したMOをHD互換にフォーマットしたものがDOS/V機で使えなかったら、MOのリムーバブル媒体としての価値が下がります。そういった不便さを解消するために、PC-98でもDOS/V機の形式を採用し、この形式のディスクが挿入されていればそこに確保された領域はドライブとして認識するようになったのです。実は、この対応が、PC-98にDOS/V形式のHDを取り付けるという保証外の環境での動作を可能にしたのです。対応と言っても、元々DOS/V機用に開発されたOSをPC-98用に移植していたわけですから、元のプログラムをそのまま活かした、というのが実状ではないでしょうか。

まとめ
起動OSとしての領域は、PC-98の形式でないといけないが、そこでWindows95以降のOSが起動すれば、DOS/V形式のHDの領域もドライブとして認識する。



戻る