CバスボードのROMに入れて使うアプリケーションで、オンボードIDEハードディスク容量上限を撤廃する

PC-9801BA/BX専用

EXIDEBA Version 3.51

Copyright(C) 2019-2024 まりも (DOSsoft)

※ バージョン 3.51から 一部のCompact Flash(CF)でデバイスリセットが起きないようになりました。

■ プログラムの目的および概要

【ROMアプリケーションです】

 PC-9801BA,BXでは、オンボードのIDEハードディスクの容量上限が543MB(544MB未満)となっています。それを超えるための方法として、4351MBまで使用できるBIOSパッチソフトウェア"REI"があります。ソフトウェア導入時に少しだけ注意が必要で少々不便です。

 そうしたことから、CバスボードのROMに入れることで、RAM化されているIDE BIOSの一部を書き換えるというツールを公開することにしました。さらに本アプリケーションは、BIOSのCHSパラメータ(*)設定ルーチンに介入して、従来とは異なるパラメータでも使用できるようになっています。(* CHSパラメータ:シリンダ、ヘッド、セクタ数のパラメータ)

 通常は4.3GB未満では8ヘッド17セクタですが、使用法の項目で述べる通り、ROMデータ作成時にさまざまに選択できます。またメモリスイッチにモードを記憶させるプログラムを併用して、一時的なモード変更も可能です。

■ 使用法

【ROMに書き入れる】

 ROMへの書き込みには一般にROMライタが必要です。その使用方法はROMライタ固有の事項ですので、ここでは説明できません。ROMライタが無くてもRealtek8139ネットワークカードを応用してROMに書き込む方法も私のサイトで紹介していますので、 参考にしてください。

 アーカイブを解凍すると次のファイルが作られます。
ファイル名 用途・内容
EXIDEBA.TXT この文書
EXIDEBA.COM ROMデータ作成用原データ(実行プログラムではありません)
SetEXIDE.EXE デフォルトモード設定変更、およびバイトROM用データ生成プログラム
SetEXIDE.TXT SetEXIDEの説明書
EXIDEMSW.EXE パラメータモード設定プログラム

 SetEXIDEというプログラムで、こちらの文書で説明されているようにパラメータモードを好みのものに変更し、ROMデータファイルを作成します。これは恒久的に設定されるもので、ソフトウェアスイッチが初期値に戻っても保たれます。どのモードを選んで良いかわからない場合は1か7を選んでください。

 カレントディレクトリにexideba.COMが存在する状態でSetEXIDEを実行すると、
EXIDEBA.ROM
EXIDEBA.R00
EXIDEBA.R01
の3個のファイルがカレントディレクトリに作られます。

 40pinの16bit(ワード)幅のROMには、EXIDEBA.ROM を書き込んでください。8bit(バイト)ROMでもそれが1個から成っているボードの場合は、EXIDEBA.ROM を使用して下さい。

 いっぽう、多くのCバスボードで使用されている8bit(バイト)幅の28pin ROMを2個使用した物の場合は、それぞれのROMに、EXIDEBA.R00EXIDEBA.R01を書き込んでください。EXIDEBA.R00の入ったROMは偶数アドレス側ソケットに、EXIDEBA.R01は奇数アドレス側ソケットに装着します。どちらかが偶数で他方が奇数ですので、1/2の確率でうまく行くでしょう。ROMに貼ってあったシールやソケットのシルク印刷、プリントパターンなどから判断できる場合もあります。

 SCSIボードを流用する場合、SCSI ROMのアドレスはデフォルトでDC000〜となっているかと思いますが、本アプリケーションは4KBしか使いませんので、D0000かD6000に設定するのがよいでしょう。D8000〜以上のアドレスに設定するとIDE BIOSの初期化より後の実行となるため、正常に働きません。

 本ROMアプリケーションはシステム起動後には存在している必要がありません。パッチのあたったIDE BIOSはそれ自体で動作が完結できます。したがって、本アプリケーションのROMアドレスをMS-DOSなどではUMBの領域として強制的に使用してもまったく問題ありません(EMM386のオプション記述で手動設定する)。

■ 動作

 通常は起動時にIDE関連の情報は画面に現れませんが、本アプリケーションを入れたROMボードを装着している場合、まず画面右上に本アプリケーションを入れたROMのベースアドレス(セグメント)が表示されます。続いて「IDE HDD上限拡大とCHSパラメータ変更・・・」と表示されます。

 表示を保持しておきたい場合は、メモリチェック終了後くらいから[GRPH]キーを押し続けていて下さい。放すとシステム起動は続行します。

 [GRPH]に続き[F・1]から[F・7]キーを押していた場合は、パラメータモードの変更メッセージが現れますので、適切なものを選択してください。これはメモリスイッチに記憶されますので、メモリスイッチの2-5を「保持する」の設定にしておく必要があります。

 ROMアプリケーション実行後には、4.3GBの上限を超える容量のHDDを接続した場合でもハングアップしなくなります。IDE HDDのフォーマット時のパラメータがパラメータモードと適合していれば、固定ディスク起動メニューから起動可能です。もし未使用状態のディスクドライブを接続している場合はボードROMアプリケーション実行後にフォーマットしてください。それ以前にフォーマットしても無効です。

■ 注意・補足事項

 モードは本体側が記憶していることから、異なるモード下でフォーマットしてしまった複数のHDDを接続すると起動時にどちらかが不適合となり、起動や認識ができなくなりますので注意して下さい。

 キー操作やEXIDEMSWで一時的にモードを変更する場合は、予め「システムセットアップメニュー」でメモリスイッチを「保持する」の設定にしておいてください。「初期化する」の設定だと記憶されませんので再起動したときにはデフォルトのモードとなります。余計なことはしたくないという人は、SetEXIDEで決定したデフォルトのモードでずっと使い続けるのがよいでしょう。

 CバスのSCSIボードのROM流用についてですが、SCSIボードとしてのリソース割り当ては取り消すことはできませんから、OSによっては不明なデバイスという状態で残ります。9801-55/92時代のSCSIボードでは、I/Oアドレスをデフォルト(CC0h〜)以外にするとBIOSの出現ができなくなるのでご注意ください。ROMボードとして認識しながらもSCSIボードとして認識されないようにするには、ボードをハードウェア的に改造する必要がありますが、ここでは述べません。

 バージョン 3.51からは Sandiskなど一部のCFに対しては、ATAリセット時に諸パラメータが初期値に戻ってしまわないという設定を行うことにしました。これにより、いわゆるCFリセットが起こらなくなります。ただしこの機能を装備するCFはかなり限られるようです。

 バージョン3.24より、システムBIOSの9821シグナチャと機種IDを補う機能を追加しています。これはIDEの動作そのものには全く関係ありません。Windows 95のIDEディスクドライバがこの機種で動作しないという問題に対処するものです。

■ 技術的説明

 本アプリケーションはCバスのROM搭載ボードのBIOS相当のものとして作られており、それが1度だけ実行され、メモリ上に展開しかかっているIDE BIOSを書き換えるという働きをします。起動完了後には何も動作しません。書き換えられたメモリ上のIDE BIOSはそれ自体で完結動作でき、本アプリケーションは必要なくなります。したがって拡張ROM領域に現れている本アプリケーションは潰してしまっても構いません。例えばEMM386でUMB領域にしても問題ありません(通常はROMがあるとして割り当て回避されますが)。

 パラメータモードを一時記憶するメモリスイッチは、SW6のbit2〜0 に割り当てています。0(000b)のとき未設定(初期化されている)で無効とします。1〜6の値が記憶されている場合は、パラメータモードの値として使います。なおこのメモリスイッチの場所は、N88BASICでも予約となっており、その後のアプリケーションやOSで使われていないと考えられるので、流用しています。

 exideba.COMは拡張子からするとDOS実行プログラムですが、実行させる意味は持っていませんので実行しないでください。

■ お約束(商品化の禁止)

 このソフトウェアのうち、実行プログラムSETEXIDE.EXEとexideba.COMはフリーソフトウェアとしますので、ダウンロードして実行することは自由ですが、著作権は作者である私にありますので、作者の意向に反する使い方は禁止とします。パッチコードの基本部分については大熊猫さんに著作権があると考えられますが、NECの著作物へのパッチということになるので、そこに翻案した人の著作権が発生するのかどうかはよくわかりません。

 生成されるEXIDEBA.ROM他については、私的な使用は自由ですが、再配布を認めません。すなわち、このソフトウェアによるパッチをあてたROM、およびROMを載せた状態のボードを譲渡・販売・流通させることは固く禁じます。ROM焼きの役務代行業者などにROMデータを送付することも同様です。個人的使用にとどめてください。これが守られていない場合は著作権の侵害と見なします。

 したがって、このソフトウェア全体を、不特定多数のダウンロードできる場所へ「転載」することも、禁止とします。しかしリンク先の紹介についてはなんら制限はありません。

 ソースファイルはEXIDEAeを参照してください。 https://www7b.biglobe.ne.jp/~marimo9821/exiderom/exideae_source.zip 基本的にEXIDEAeのソースにおいて、CS:セグメントレジスタの使用をES:に置き換えただけで、BA/BXに対応できます(Windows95 IDEドライバ対策のための付加機能部分を除く)。

 ソースファイルを改良して同様の作品を作り公開する場合は、それを明記していただくことを希望します。ソースファイルを翻案して何かを創作すること自体はなんら妨げられることはありませんので自由にやっていただいて構いません。

 プログラムは、ある程度のテストを経て公開していますが、動作が完璧に行なわれるということを、作者は保証するものではありません。ユーザがプログラムを組み込んだことによる起動不能などのトラブルの補償には一切応じません。

 システムが起動しなくなったことや、それに付随した逸失利益、精神的損害について、作者は一切責任は負わないものとします。これらの点を了承できない方には、使用(ソースファイル含む)を認めません。

[同意の上ダウンロードする]

            まりも(DOSsoft)

【改版履歴】

日付     版  内容
2019- 8-15 3.00 初版(3.00から開始)
2021- 4-12 3.10 CF では ネイティブなヘッド数セクタ数となるようにした
2021- 8-20 3.21 Removable属性でないCF(主に産業用)はHDD相当の扱いにした
2021- 8-22 3.22 対応しない機種のときはDIV0ROMが機能し、ハングアップしないようにした
2022- 9- 8 3.23 セクタ長256バイトのときはDIV0ROMが機能し、ハングアップしないようにした
2024- 3-13 3.51 CFリセット時に諸パラメータが初期値に戻らないようにする機能の追加

[戻る]