CバスボードのROMに入れて使うアプリケーションで、PC-9821Xe10/PC-9801BX4のオンボードIDEハードディスク容量上限を撤廃する
EXIDEBX4 Version 1.60
Copyright(C) 2021,24 まりも (DOSsoft)
PC-9821Xe10およびPC-9801BX4 のオンボードIDEのBIOSでは、4.3GBが容量の上限です。本アプリケーションは、CバスボードのROMに入れることで、RAM化されているIDE BIOSの一部を書き換え、このGB容量上限を撤廃します。利用できるCバスボードとしては、SCSIやSASIのボードがあります。
さらに本アプリケーションは、BIOSのCHSパラメータ(*)設定ルーチンに介入して、従来とは異なるパラメータでも使用できるようになっています。(* CHSパラメータ:シリンダ、ヘッド、セクタ数のパラメータ)
通常は4.3GB未満では8ヘッド17セクタですが、「パラメータ」の項目で述べる通り、さまざまに変更できます。変更の手段には3通りあり、ひとつはROM書き込み時のデフォルトモードの選択で、もうひとつはキーボード操作で行います。後者の設定は98本体のソフトウェアディップスイッチ領域に記憶され、電源を切っても保持されます(バックアップバッテリが消耗しきっていない限り)。このツールEXIDESW3でも変更できます。キーボード操作のほうが利便性はよいと思います。
【ROMに書き入れる】
ROMへの書き込みには一般にROMライタが必要です。その使用方法はROMライタ固有の事項ですので、ここでは説明できません。ROMライタが無くてもRealtek8139ネットワークカードを応用してROMに書き込む方法も私のサイトで紹介していますので、 参考にしてください。
アーカイブを解凍すると次のファイルが作られます。
ファイル名 | 用途・内容 |
EXIDEBX4.TXT | この文書 |
EXIDEBX4.COM | ROMデータ作成用原データ(実行プログラムではありません) |
SetEXIDE.EXE | デフォルトモード設定変更、およびバイトROM用データ生成プログラム | SetEXIDE.TXT | SetEXIDEの説明書 |
★ SetEXIDEというツールで、こちらの文書で説明されているように、パラメータモードを好みのものに変更し、ROMデータファイルを作成します。これは恒久的に設定されるもので、ソフトウェアスイッチが初期値に戻っても保たれます。どのモードを選んで良いかわからない場合は1か7を選んでください。
カレントディレクトリにEXIDEBX4.COMが存在する状態でSetEXIDEを実行すると、
EXIDEBX4.ROM
EXIDEBX4.R00
EXIDEBX4.R01
の3個のファイルが作られます。
40pinの16bit(ワード)幅のROMには、EXIDEBX4.ROM を書き込んでください。8bit(バイト)ROMでも32pinの512kbit以上のROM1個から成なっている場合は、EXIDEBX4.ROM を使用して下さい。
いっぽう、多くのCバスボードで使用されている8bit(バイト)幅の28pin ROMを2個使用した物の場合は、それぞれのROMに、EXIDEBX4.R00とEXIDEBX4.R01を書き込んでください。EXIDEBX4.R00の入ったROMは偶数アドレス側ソケットに、EXIDEBX4.R01は奇数アドレス側ソケットに装着します。どちらかが偶数で他方が奇数ですので、1/2の確率でうまく行くでしょう。ROMに貼ってあったシールやソケットのシルク印刷、プリントパターンなどから判断できる場合もあります。
SCSIボードを流用する場合、SCSI ROMのアドレスはデフォルトでDC000〜となっているかと思いますが、本アプリケーションは4KBしか使いませんので、D0000かD6000に設定するのがよいでしょう。D8000〜以上のアドレスに設定するとIDE BIOSの初期化より後の実行となるため、正常に働きません。
通常は起動時にIDE関連の情報は画面に現れませんが、本アプリケーションを入れたROMボードを装着している場合、まず画面右上に本アプリケーションを入れたROMのベースアドレス(セグメント)が表示されます。続いて「IDE HDD上限拡大とCHSパラメータ変更・・・」と表示されます。
バージョン1.60からは、キーボード操作でパラメータモードを変更できる機能が追加されました。起動時に[GRPH]キーを押していると、[F・1]〜[F・7]のキーを押すことで、対応するモード番号に設定されます。電源を切っても保持されます。EXIDESW3で設定したものと同じとなります。
「パラメータモード:」に続き、現在のモードの名称が表示されます。こちらはソフトウェアスイッチの設定値で、EXIDESW3で設定したとおりに変わりうるものです。 表示を保持しておきたい場合は、メモリチェック終了後くらいからSHIFTキーを押し続けていて下さい。放すとシステム起動は続行します。
ROMアプリケーション実行後には、4.3GBの上限を超える容量のHDDを接続した場合でもハングアップしなくなります。IDE HDDのフォーマット時のパラメータがパラメータモードと適合していれば、固定ディスク起動メニューから起動可能です。もし未使用状態のディスクドライブを接続している場合はボードROMアプリケーション実行後にフォーマットしてください。それ以前にフォーマットしても無効です。
追加機能として、CPUにAMD Am5x86を直に載せたときに、WBキャッシュが有効化となる機能を追加しています。システム起動時からFDやSCSI、X-PCM音源のDMAデータ転送が正しく行えるようになります。IPLwareアプリケーションのCPUL1WBは不要となります。
543MB以下のハードディスクについては、A-mateなどのPCI搭載以前の機種で使用していた場合、シリンダ数が本来の容量よりも少ない値で切られています(HDDのモデルごとの容量差をなくすための措置と思われます)。本アプリケーションが適用された機種にこれを接続すると、使用可能なシリンダ数が増えることになりますが、もとのA-mateなどに戻したときに容量オーバーとなり問題が生ずる可能性があります。最終シリンダまで使い切らないように注意して下さい。
モードは本体側が記憶していることから、異なるモード下でフォーマットしてしまった複数のHDDを接続すると起動時にどちらかが不適合となり、起動や認識ができなくなりますので注意して下さい。
既に述べたように、パラメータモードの記憶が飛ぶことがあります。バックアップバッテリの消耗、スーパーリセットや[GRPH][SHIFT]押し起動で初期化すると、SetEXIDEで設定したデフォルトのモードになります。他のモードにして使用していた場合、設定が初期値に戻る場合があるということは心得ておいてください。余計なことはしたくないという人は、SetEXIDEで決定したデフォルトのモードでずっと使い続けるのがよいでしょう。
バージョン1.50からは、そもそもCFリセットを起こさないようにする設定を行うようにしました。これは一部のCF(主にSandisk製)に対して有効ですが、かなり多くのCFには作用しないようです。
最初に述べたとおり対応機種はPC-9821Xe10と9801BX4のみです。その他の機種で動く可能性はゼロです。その他の機種にはその機種用のEXIDE**を使ってください。
本アプリケーションはCバスのROM搭載ボードのBIOS相当のものとして作られており、それが1度だけ実行され、メモリ上に展開しかかっているIDE BIOSを書き換えるという働きをします。起動完了後には何も動作しません。書き換えられたメモリ上のIDE BIOSはそれ自体で完結動作でき、本アプリケーションは必要なくなります。したがって拡張ROM領域に現れている本アプリケーションは潰してしまっても構いません。例えばEMM386でUMB領域にしても問題ありません(通常はROMがあるとして割り当て回避されますが)。
パラメータモードを記憶するソフトウェアディップスイッチは、I/O アドレス 891Eで設定されるもので、bit2〜0 に割り当てています。0(000b)または7(111b)のときデフォルトのEXIDE(M9)モードです。Undocumented 9821/9801によると、このI/Oアドレスは一時期のノート機種でしか使用されていないようなので流用しています。
EXIDEBX4.COMは拡張子からするとDOS実行プログラムですが、実行させる意味は持っていませんのでむやみに実行しないでください。とはいうものの、実行してエラーがなければパッチはあたるという判定になりますので、事前の適用可能性チェックにある程度使用できます。エミュレータ環境ではこれ単体でも有用かもしれません。ただし、もし実行したあとはすぐにリセットしてください。実行後に、PCIのProgramable attribute mapの状態が不正な状態で終了している可能性があるためです。
ソースプログラムはEXIDECB(バージョン2.01)とほとんど差がありませんのでそちらを参考にしてください。唯一にして最大の違いは、IDE BIOSのRAM化と書き込み可否属性の設定にかんするところです。PCI機とレガシー機ではその機構に大きな差があります。そのほかEXIDECBではいくつかの旧いHDDモデルへの個別対応部分を削ってしまっていますが、EXIDEBX4ではBIOSの未使用部分が利用できたため削っていません。
CバスのSCSIボードのROM流用についてですが、SCSIボードとしてのリソース割り当ては取り消すことはできませんから、OSによっては不明なデバイスという状態で残ります。9801-55/92時代のSCSIボードでは、I/Oアドレスをデフォルト(CC0h〜)以外にするとBIOSの出現ができなくなるものも多いです。つまり本アプリケーション用のSCSIボードと、本当にSCSIとして動作させたいCバスのSCSIボードとは併用が難しいのでご注意ください。55/92ボードは、9801-100ボードのようにアーキテクチャが異なるものであれば併用可能です。 ソースプログラムはここにあります。
このソフトウェアのうち、実行プログラムSETEXIDE.EXEはフリーソフトウェアとしますので、ダウンロードして実行することは自由ですが、著作権は作者である私にありますので、作者の意向に反する使い方は禁止とします。
EXIDEBX4.COMおよび生成されるEXIDEBX4.ROM他については、私的な使用は自由ですが、再配布を認めません。すなわち、このソフトウェアによるパッチをあてたROM、およびROMを載せた状態のボードを譲渡・販売・流通させることは固く禁じます。ROM焼きの役務代行業者などにROMデータを送付することも同様です。個人的使用にとどめてください。これが守られていない場合は著作権の侵害と見なします。
したがって、このソフトウェア全体を、不特定多数のダウンロードできる場所へ「転載」することも、禁止とします。しかしリンク先の紹介についてはなんら制限はありません。
ソースファイルを改良して同様の作品を作り公開する場合は、それを明記していただくことを希望します。ソースファイルを翻案して何かを創作すること自体はなんら妨げられることはありませんので自由にやっていただいて構いません。
プログラムは、ある程度のテストを経て公開していますが、動作が完璧に行なわれるということを、作者は保証するものではありません。ユーザがプログラムを組み込んだことによる起動不能などのトラブルの補償には一切応じません。
システムが起動しなくなったことや、それに付随した逸失利益、精神的損害について、作者は一切責任は負わないものとします。これらの点を了承できない方には、使用(ソースファイル含む)を認めません。
まりも(DOSsoft)
日付 版 内容 2021-10-01 1.00 新規 2024-03-03 1.50 CFリセット時に諸パラメータが初期値に戻らないようにする機能の追加 2024-03-04 1.51 3台以上ドライブを接続している場合に1台認識しなくなる問題を修正 2024-08-04 1.60 キー操作でのモード設定機能の追加 2024-09-08 EXIDESW2がEXIDESW3に更新された点を受けて説明文を変更