PC-9821A E10ボードのBIOSが8GBまで対応しているかを調べる

その他のSCSIボードのBIOSにラップアラウンドがないかを調べる

2018.9.18 まりも

はじめに

 PC-9821A-E10 SCSIボードはそのBIOSルーチンの問題で、1GB以上のアドレスに正しく読み書きできない問題があると考えられますが、一部のロット?の物はに8GBまで問題なく使えるという話しも出ています。その真相を調べようと言うことで、このツールを作りました。動作原理ですが、BIOSでCHS(シリンダ・ヘッド・セクタ)を指定したときに、問題のあるBIOSでは8192シリンダ以上のときにケタあふれをおこして間違ったアドレスを読み書きしようとします。しかしLBAアクセスするときにはこのケタあふれ演算は関係ありませんので、指定通りのアドレスのところをアクセスできます。

 もしBIOSに問題があれば、CHSアクセスとLBAアクセスとで本来等価なアドレスの番地を読み出したきに、データの内容が一致しなくなります。いっぽう正しいBIOSであれば両者が一致します。

 同様の潜在的バグは、PC-9821A-E10 以外のSCSIボードにもあるかもしれません。 バージョン3.00からは他のボードにも対応しました。

プログラム e10chk の使い方

 アーカイブファイルはe10chk3.zipです。ダウンロードしたファイルは解凍しておき、e10chk.exeを取り出しておきます。PC-9821A-E10などのSCSIインターフェイスにハードディスクを接続したらMS-DOSを起動し、e10chk.exeを実行してください。

 このプログラムでは、接続されているSCSIハードディスクをスキャンします。検出したIDのハードディスクが適正な容量でない場合は、次のSCSI IDのものに移ります。

実行結果

 PC-9821A-E10やPC-9801-92互換の場合は、シリンダ番地8192付近に問題が発生する可能性を調べるので、その少し手前から調べ始めます。データが一致していれば正常で、8191シリンダまでは「データ一致」と表示され続けます。8192シリンダ以上のところで、「データ不一致」という表示が1回でもでたらそれは8GBに対応していないBIOSです。1セクタでは判別の確実性がないのでしばらくディスクを読みに行きますが、不一致の場合はディスクのヘッドシークが増えます。アクセス音の変化にも耳を傾けてください。8231シリンダまで調査して打ち切ります。

 それ以外の、いわゆる92互換でないボードについても同様の問題があるかを調べますが、開始シリンダはBIOSの返すヘッド数・セクタ数により変わります。シリンダ番地×ヘッド数 の積が65536になるところの手前2シリンダから調査します。

注意点

 ゼロで全セクタを初期化したようなHDDを使ってはいけません。どこを読んでもゼロですから必ず一致してしまい、BIOSの誤りを検出できません。ゼロで埋まっているセクタが検出された瞬間は、シアン色で「データ00」と表示されます。いっぽう普通に98で使用しているHDDであれば、シリンダ0にはIPL・パーティションテーブル・起動メニューなどが書かれますが、これがちょうど8192シリンダ後に同じパターンで書かれているという偶然はないはずです。CHSアドレスが8192シリンダ先のところと同一である確率はほぼゼロとし、CHSアクセスしたデータとLBAアクセスしたデータが「不一致」であれば8GBに対応しないBIOSと判断しています。

 不一致のときは8GB対応していないどころか1GBを超えられないということになります。しかし昔作成した拙作「E10pat」をIPLwareとして用いると、それ以降はリセット再起動しない限り、8GBにきちんと対応したBIOSとなります。

 このプログラムではHDDの読み込みテストしか行いませんので、書き込みによってデータを失うという恐れは全くありません。普段使用するHDDを用いてかまいません。

 使用するMS-DOSは5.00Aにしても6.20にしても日付が1994-11月以降のもの(IO.SYS)を用い、フォーマットもそれに付属のFORMAT.EXEおよびHDFORMAT.EXEを用いてください。DOS5ではFORMAT 5.70、DOS6.2では FORMAT 6.30です。固定ディスク起動メニューでは2.70です。「1GBの壁」はMS-DOSにも存在しており、この問題の所在をややこしくしています。BIOSの問題を明らかにするためには、これら(IO.SYS、起動メニュー、FORMATコマンド)全てを最新バージョンにアップデートしてください。MS-DOSのアップデートデータはNECのサイト121ware内にありますから探してください。

 バージョン2.00からはソースプログラムがsource.lzh というアーカイブに格納されています。ただしソースの一部(画面表示関係)については含まれていません。

 バージョン3.00からはPC-9821A-E10以外のSCSIボードで同様の問題(シリンダ番地とヘッド数の積がケタあふれする)があるかどうかを調べることができますが、それ以外の問題についてはチェックしていません。このツールで問題なしと出ても問題がないとは限りません。

 PCIバス接続のSCSIボードについては問題ないはずなので、本ツールを適用する意味はありません。

その他

 正しく8GBに対応したBIOSのPC-9821A-E10ボードなど存在しなかったとみられます。PC-9821A-E10ボードを使用するならば、E10PATを導入しておくことを強く推奨します。

 本ツールで調べた結果、「8GB対応であるE10ボードを発見した」という人は、SNSや掲示板で発信してください。貴重なものであるからです。逆に「今まで8GB対応であるE10ボードだと信じてきたが、違った」という人もtwitterなどでつぶやくとよいでしょう。しかし2019年7月現在確認されたという報告はありません。

 対象はE10ボードに限りませんので、容量のどこかに何か壁がありそうだと思われるCバスSCSIボードに適用してみるとよいでしょう。

お約束

 このプログラムの著作権は主張しておきますが、基本的にフリーソフトウェアです。各自の責任のもとお使い下さい。何かありましたら、メールにてご連絡ください。メールアドレスはトップページに表示してあります。

改版履歴

2018-9-8 1.00 新規作成(SCSI ID 0 決め打ち版)
2018-9-8 2.00 SCSI ID自動検出、容量が適正かどうかの判定機能を追加
2018-9-8 2.10 SCSI HDDが存在しないときの表示に問題があったのを修正
2018-9-8 2.20 適切な容量のSCSI HDDが存在しないときの表示を修正
2018-9-18 3.00 92互換以外のSCSIボードにも対応した
←元に戻る