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

PC-980BA/BX(初代)専用

EXIDEBA Version 3.24

Copyright(C) 2022-23 まりも (DOSsoft)

※ Compact Flash(CF)対応となりました(DIP SW2-2で設定)。

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

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

 PC-9801BA,BX(FELLOW)初代では、オンボードのIDEハードディスクの容量上限が543MB(544MB未満)となっています。このため4351MBまで使用できるよう拡張するBIOSパッチソフトウェア"REI"が作られていたり、127GBまで使用できる大熊猫さんによるApのパッチなどが公開されています。しかし前者はソフトウェア導入時に少しだけ注意が必要であるし、後者は本体のROMを書き換えるという作業が必要です。しかもそのROMはNEC D27C4000というかなりレアで扱いにくい物が使われていて、それなりのROMライタとpinアダプタがないとどうにもなりません。さらには書き換え不可能なマスクROMやワンタイムROMが採用されていることもしばしばあります。

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

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

 CHSパラメータをSCSI互換にすると、SCSI変換でSCSIアダプタにしたときに好都合です。最近ではSSDを使用できますが、SCSIの場合のCHSパラメータは2の乗数となっており、SSDではSCSI互換パラメータを選択したほうが性能上有利と言えます。

 なお本体設定によりHDDをセクタ長256バイトで使用した場合には、本ツールは適用を回避します。8ヘッド33セクタのままとなりますが、「DIV0ROM機能」の働きにより、容量過大のドライブを接続した場合でもハングアップしないようになります。

■ 使用法

【ROMに書き入れる】

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

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

 SetEXIDEというツールで後述のパラメータモードを好みのものに変更し、ROMデータファイルを作成します。これは恒久的に設定されるもので、ソフトウェアスイッチが初期値に戻っても保たれます。カレントディレクトリに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に設定するのがよいでしょう。D0000の場合D1000以降はUMBとして使うことができます。また本アプリケーションはシステム起動後には存在している必要がありません。パッチのあたったIDE BIOSはそれ自体で動作が完結できます。したがって、本アプリケーションのROMアドレスをMS-DOSなどではUMBの領域として強制的に使用してもまったく問題ありません(EMM386のオプション記述で手動設定する)。D0000をハードウェアEMSボードによるUMBエリアとして使用したいという場合は、DE000にするとよいでしょう。DC000〜の本来のSCSIボード(PC-9801-100やAHA-1030を除く)のROMは最大8KBなので、衝突することはありません。

■ 動作

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

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

 パラメータモードについては後で述べます。4.3GBが上限だった機種でも、それを超える容量にHDDを接続してもハングアップしなくなります。本アプリケーションでは、128GBの壁を超えるHDDを接続してた場合でもハングアップせず、127GB打ち切りで動作させます(そもそもIDE BIOSでは48bit LBAに対応していないので、127GB以降を使うことができません)。

 IDE HDDのフォーマット時のパラメータがパラメータモードと適合してれば、固定ディスク起動メニューから起動可能です。

 もし未使用状態のHDDを接続していれば、パラメータモードを適切に設定し、再起動してからフォーマットしてください。

  一時的にパラメータモードを変更したいというときは、付属のEXIDEMSW.EXE で設定することができます。メモリスイッチに記憶されますので、メモリスイッチの2-5を「保持する」の設定にしておいてください。それが面倒なときは、このアプリケーションの実行に入った瞬間にSHIFTキーを押していると、キーボード操作でもモードを変更することができます。[F・1]〜[F・7]キーがモード1〜7と対応しますので、どれかを押してください。

  バックアップ電池が消耗になったりソフトウェアディップスイッチが初期化されると、「保持する」が「初期化する」に変更されてしまい、EXIDEMSWやキーボード操作による設定も初期化されてしまいますのでご注意ください。

■ パラメータモード

 パラメータモードは以下のように[1]〜[6]の6通り+[7]の1通りありますので、ご自分の使いやすいモードをSetEXIDEで選んで下さい。
   モード名   容量ゾーンと【ヘッド数:セクタ数】       「|」は127.5GB
[1] ExIDE(M9)モード 【8:17】< 4351MB <【16:63】< 32255MB <【16:255】|
[2] SCSI 混在モード 【8:17】< 4351MB <【8:32】< 8GB <【8:128】< 32GB <【16:255】|
[3] SCSI 標準モード 【8:17】< 544MB <【8:32】< 8GB <【8:128】< 32GB |頭打ち|
[4] SCSI メルコ 拡張 【8:17】< 544MB <【8:32】< 8GB <【8:128】< 32GB <【15:128】< 61GB <【15:255】 |
[5] SCSI SSD 拡張 【8:17】< 544MB <【8:32】< 8GB <【8:128】< 32GB <【16:128】< 64GB |頭打ち|
[6] SCSI 混在/SSD 【8:17】< 4351MB <【8:32】< 8GB <【8:128】< 32GB 【16:128】< 64GB <【16:255】|
[7] シリンダ数拡張 4.3GBリミットのない機種と完全互換だが使用可能容量はそのまま

表形式で再掲 モードと容量ゾーンにおけるヘッド数:セクタ数
 
モード\容量帯 4351MB
まで
8192MB
まで
32255MB
30240MB
まで
32GB
まで
61/64GB
まで
122/127GB
まで
[1] EXIDE(M9)モード 8:17 16:63または15:63 16:255
[2] SCSI EXIDE混在モード 8:17 8:32 8:128 16:255
[3] SCSI モード 8:17(544MB未満まで) 8:32 8:128 × ×
[4] SCSI メルコ拡張モード 8:17(544MB未満まで) 8:32 8:128 15:128
61GBまで
15:255
122GBまで
[5] SCSI SSD拡張モード 8:17(544MB未満まで) 8:32 8:128 16:128
64GBまで
×
[6] SCSI 混在/SSDモード 8:17
EXIDEと同じ
8:32 8:128 16:128
64GBまで
16:255
EXIDEと同じ
[7] シリンダ数拡張モード 8:17
EXIDEと同じ
16:63または15:63 ×頭打ち

 [1]の EXIDE(M9)モードは最も標準的な使い方で、8063MBまでは98本来の仕様と同じ、30239MBまたは32255MBまでも同じ、それ以上ではMistress9と同じ16ヘッド255セクタとなります。

 [3]の SCSI標準モードは、544MB以上ではSCSI固定ディスクと完全に互換のあるモードで、8192MBを境にパラメータが変わりますが、32768MB未満までで頭打ちとなります。それ以上の容量があっても使えません。

 私は[2]のSCSI混在モードで使用しています。基本的にSCSI互換としていると便利だからですが、たまに32GB以上のHDDを接続した場合にはその全容量が使え、いっぽうで544MB未満の大昔のHDDもそのまま認識できるという利点もあるためです。

 [4]の「SCSIメルコ拡張」というのは、同社のIFC-USPなどで採用された、32GB以上も使えるようにしたモードと互換があります。しかしWindows NT/2000ではこのパラメータでは認識されなくなりますので、使い勝手がよいとも言えません。それであればヘッド数を16にしたほうが切りがよい、ということで[5]の「SCSI SSD拡張」というモードを設けてみましたが、32GB以上64GB未満でこのモードと互換性のあるSCSIボードもSATAボードも知られていませんので、完全独自仕様となります。

 さらに、それを超えたらEXIDEモードと同じでいいのではということで、[6]の混在モードを設けてあります。4.3GB未満もIDE互換です。

 [7]の「シリンダ数拡張」というモードは、4.3GBの上限がない機種に繋いだときと同じセクタ数・ヘッド数のパラメータでシリンダ数のみ拡張したもので、互換性は完全に保たれます。みかけの容量の限界は15ヘッドのとき30239MB、16ヘッドのとき32255MBとなります。4.3GBの上限がない機種ではそれぞれ7559,8063MBと少なく扱われますが、EXIDE拡張BIOSではそれを是正します。しかし使用可能な容量は変わりません。4.3GB上限のない機種も使用していて、とくに希望するモードがないかよくわからない場合は、このモードをデフォルトとしておくのがよいでしょう。

■ CFのCHSパラメータについて

 PC-98のオンボードIDEはCFの特質を全く考慮した作りになっていません。このため「CFリセット」という事象を引き起こし、BIOSの示すヘッド数セクタ数が、デバイス本来のそれにリセットされます。このため記録されているデータに全くアクセスできなくなります。そこでバージョン 3.10 からは、CFの場合にはデバイス本来のヘッド数セクタ数をBIOSにも設定するようにしました。これにより、下記の問題が起こります。

(1)約32GB(概ね32255MB)以上のCFでもその容量までで打ち止めとなる
(2)4.3GB未満のCFはこれまでのヘッド数8セクタ17から変わり、読めなくなる

この点はご承知置きください。しかし(2)ではデータ移行の際に不便ですので、「システムセットアップメニュー」の項目を流用して選択できるようにしました。「システムセットアップメニュー」のディップスイッチ2−2 の「ターミナルモード指定」が「ターミナルモード」のときCF本来のモード、それが「BASICモード」のとき、IDEハードディスク互換の8:17のモードとなるようにしています。したがってデフォルト設定は、「IDEハードディスク互換の8:17のモード」のほうです。新規にCFを導入するときは、4.3GB未満であれば「ターミナルモード」側に必ずしておいてください。もちろん本アプリケーションを使うのであれば、4.3GB以上のCFを使うのがよいことは言うまでもありません。

 CFのうち産業用と銘打っているものはCFリセットを引き起こしにくいと考えられます。そのようなCFはリムーバブルでない属性が与えられているのが普通です。そこでバージョン3.21からは、非リムーバブル属性であればCFA属性があってもHDD相当として扱うよう変更しました。

 なおこのDIP SW2-2の設定項目は本来ROM BASICの起動モードを変更するものですから、ROM BASICを使う場合は影響を受けます。それが不都合であるという方は、4.3GB未満のCFを使わないようにしてください。しかしROM BASICを使わなければなんの問題もありません。

■ 注意・補足事項

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

 EXIDEMSWで一時的にモードを変更する場合は、予め「システムセットアップメニュー」でメモリスイッチを「保持する」の設定にしておいてください。「初期化する」の設定だと記憶されませんので再起動したときにはデフォルトのモードとなります。もちろん一時的なモード変更であればメモリスイッチを保持する必要はありません。

 既に述べたように、パラメータモードの記憶が飛ぶことがあります。バックアップバッテリの消耗、スーパーリセットや[GRPH][SHIFT]押し起動で初期化すると、SetEXIDEで設定したデフォルトのモードになります。他のモードにして使用していた場合、設定が初期値に戻る場合があるということは心得ておいてください。余計なことはしたくないという人は、SetEXIDEで決定したデフォルトのモードでずっと使い続けるのがよいでしょう。

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

 バージョン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実行プログラムですが、実行させる意味は持っていませんので実行しないでください。

 ソースファイルはEXIDEAeを参照してください。基本的にEXIDEAeのソースにおいて、ES:セグメントレジスタの使用をCSに置き換えただけで、BA/BXに対応できます。

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

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

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

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

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

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

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

            まりも(DOSsoft)

【改版履歴】

日付     版  内容
2022- 9 -8 3.23 初版
2023- 1- 7 3.24 システムBIOSの9821シグナチャと機種IDを補う機能を追加

[戻る]