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


裏技編では、DOS/V機用の形式のHDをPC-98に接続してそのまま利用可能という話をしましたが、これは機能の副作用を利用したものでした。 今回は、HDの内部にまで踏み込んで、強引に両方の機種で読み込み可能なHDを作って見ましょう。

まず、4ギガのHDを接続した場合のセンス情報(諸元)を示します(機種によって多少の差異はあるかもしれません)。
機種シリンダ数ヘッド数セクタ数
PC-98620518(0〜7)17(0〜16)
DOS/V機524254(0〜254)63(1〜63)

この違いが、いろいろ厄介な問題の根源となっています。

いざ、両機種のパーティションテーブルを作ろうとした場合に、もうひとつ厄介な問題を発見しました。 DOS/V機の場合は、パーティションの開始・終了の位置はセクター単位ですが、PC-98の場合はシリンダ単位です。 ということは、先にDOS/V機で領域を確保してしまうと、その領域の境界がPC-98のシリンダの境界と一致しないため、PC-98では使えません。 つまり、領域を確保するのは、PC-98でなければならない、ということになります。

上記の4ギガのHDをPC-98に接続し、FAT16の最大である2ギガ×2個の領域を作ってみます。 PC-98のパーティションテーブルは以下のようになります。

シリンダ0、ヘッド0、セクター1
0000: 20 A1 00 00 00 00 01 00 00 00 01 00 00 00 6A 78  。............jx
0010: 44 41 54 41 31 20 20 20 20 20 20 20 20 20 20 20 DATA1           
0020: 20 A1 00 00 00 00 6B 78 00 00 6B 78 00 00 D4 F0  。....kx..kx..ヤ.
0030: 44 41 54 41 32 20 20 20 20 20 20 20 20 20 20 20 DATA2           
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
            (後略)

HDの起動OS選択画面に表示されるだけの文字なので、中身は何でもいいのですが、領域にはDATA1,DATA2という名前を付けて置きます。 また、ドライブとして認識した場合に判りやすいように、各ドライブには同名のラベルをつけて置きます。

PC-98上でのシリンダ数
0001h〜786Ah ( 1〜30826)
786Bh〜F0D4h (30827〜61652)
セクターで表すと
136〜4192471
4192472〜8384807

この情報を、DOS/V機に換算する必要があります。計算は面倒ではありますが、決して難解なものではないでしょう。 途中の式は省略しますが、結果は以下のようになります。
シリンダ 0、ヘッド 2、セクター11〜シリンダ260、ヘッド247、セクター11
シリンダ260、ヘッド247、セクター12〜シリンダ521、ヘッド237、セクター12

これをDOS/V機のパーティション形式で16進表示すると、
  00 02 0B 00 06 F7 4B 04 88 00 00 00 50 F8 3F 00  
  00 F7 4C 04 06 ED 8C 09 D8 F8 3F 00 50 F8 3F 00  
となります。DOS/V機に接続して、これらの情報を書き込むと、以下のようになります。

シリンダ0、ヘッド0、セクター1
0000: EB 0A 90 90 49 50 4C 31 00 00 00 1E A0 84 05 B4 ....IPL1......エ
0010: 8E CD 1B A8 20 74 22 32 DB B4 14 CD 1B 72 1A 80 .ヘ.ィ t"2ロエ.ヘ.r..
0020: FB 84 75 15 E8 96 00 73 03 EB 6B 90 B4 24 BB 00 ..u....s..k.エ$サ.
0030: 04 B9 30 12 BA 40 01 CD 1B BB 00 01 B4 84 CD 1B .ケ0.コ@.ヘ.サ..エ.ヘ.
0040: B4 06 33 C9 33 D2 50 8C C8 2D C0 03 8E C0 58 33 エ.3ノ3メP.ネ-タ..タX3
0050: ED CD 1B 72 41 B4 06 BA 01 00 81 C5 00 08 CD 1B .ヘ.rAエ.コ...ナ..ヘ.
0060: 72 34 BA 04 00 F7 C3 00 AA 74 03 BA 02 00 B4 06 r4コ...テ.ェt.コ..エ.
0070: BB 00 1C 81 C5 00 08 CD 1B 72 1B 50 8B C5 B1 04 サ...ナ..ヘ.r.P.ナア.
0080: D3 E8 8C C1 03 C1 8B F0 58 E8 15 00 2E 89 36 0A モ..チ.チ..X.....6.
0090: 00 2E FF 1E 08 00 E8 08 00 B4 0E CD 1B B9 01 00 .........エ.ヘ.ケ..
00A0: CB 56 A0 84 05 32 DB B4 14 CD 1B 72 0E 80 FB 84 ヒV..2ロエ.ヘ.r....
00B0: 75 09 2E C6 06 D4 00 00 E8 02 00 5E C3 B4 B0 BE u..ニ.ヤ.....^テエーセ
00C0: D0 00 BA 06 00 1E 0E 1F CD 1B B4 B0 CD 1B 1F C3 ミ.コ.....ヘ.エーヘ..テ
00D0: 1E 00 00 00 01 00 00 00 00 00 00 00 81 12 45 19 ..............E.
00E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00F0: 00 00 00 00 00 00 00 00 00 00 00 00 0D 00 55 AA ..............Uェ
0100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
            (中略)
01A0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01B0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 ................
01C0: 0B 00 06 F7 4B 04 88 00 00 00 50 F8 3F 00 00 F7 ....K.....P.?...
01D0: 4C 04 06 ED 8C 09 D8 F8 3F 00 50 F8 3F 00 00 00 L.....リ.?.P.?...
01E0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
01F0: 00 00 00 00 00 00 00 00 00 00 00 00 0D 00 55 AA ..............Uェ
シリンダ0、ヘッド0、セクター2
0000: 20 A1 00 00 00 00 01 00 00 00 01 00 00 00 6A 78  。............jx
0010: 44 41 54 41 31 20 20 20 20 20 20 20 20 20 20 20 DATA1           
0020: 20 A1 00 00 00 00 6B 78 00 00 6B 78 00 00 D4 F0  。....kx..kx..ヤ.
0030: 44 41 54 41 32 20 20 20 20 20 20 20 20 20 20 20 DATA2           
0040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
            (後略)

PC-98のIPLにDOS/V機のパーティションテーブルがあり、次のセクターにはPC-98のパーティションテーブルがある、 という摩訶不思議なHDですが、赤い文字以外はゴミです。ここからはブートしないという前提ですから。

実はこれで「PC-98とDOS/V機の両方で読めるハードディスク」の完成です。どちらの機種でもPC起動時に領域として認識され、DOSでもドライブとして認識されました。 PC-98に接続してWindows95以降のOSで起動した場合に、PC起動時にドライブと認識した部分を更に別のドライブとして認識するなどといった弊害が発生しないだろうか? という心配もありましたが、試した限りでは問題はありませんでした。

このような方法で使用可能とは言え、姑息な手段を使ってますので、いくつか注意点があります。
(1)DOS/V機に接続したHDのPC-98のパーティションテーブルは、本来の仕様では未使用の場所に当たります。 標準のブートプログラムを拡張するものは、ここを利用しているものがほとんどですので、 間違ってこのディスクにブート情報などを書き込んだりしたら、PC-98でドライブとして認識しなくなります。
(2)パーティショニングツールなど、パーティション情報を元に動作するプログラムは、ほとんど正常に動作しないと思った方がいいでしょう。 ちなみにパーティション・マジック7ではこのディスクは不良と判定されます。

実用性は度外視して、こういった手法が使えるということは、HDの利用価値のポテンシャルが拡大したと思います。



戻る