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

EXIDE486 Version 2.09

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

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

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

 486アーキテクチャで2台のIDE機器が接続可能なPC-9821Ap3,As3,An,Xe,Xs,Xpおよび PC-9801BX3,BA3では、オンボードのIDEハードディスクの容量上限が4.3GBとなっています。しかし本アプリケーションをCバスボードのROMに入れることで、RAM化されているIDE BIOSの一部を書き換え、この4.3GB容量の上限を撤廃します。利用できるCバスボードとしては、SCSIボードがその代表でしょう。そのほか玄人志向製のMistress9というボードも使えます(ボードの仕様によりA-mateでは使用不可)。

 さらに本アプリケーションは、BIOSのCHSパラメータ(*)設定ルーチンに介入して、従来とは異なるパラメータでも使用できるようになっています。(* CHSパラメータ:シリンダ、ヘッド、セクタ数のパラメータ)

 通常は4.3GB未満では8ヘッド17セクタですが、「パラメータ」の項目で述べる通り、さまざまに変更できます。変更の手段には2種類あり、ひとつはROM書き込み時のデフォルトモードの選択で、もうひとつは起動時のキーボード操作で行います(ノーマル解像度モードのみ)。後者の設定は98本体のメモリスイッチの未使用域に記憶され、電源を切っても保持されます(バックアップバッテリが消耗しきっていない限り)。

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

 対応機種については他にもある可能性があります(候補、PC-9821 Cx,Cb2など)。該当機種を持っていないので対応するかどうかは判っていません。

 バージョン2.08からはPC-9821Anのディスク転送速度向上機能が追加されました。ディスクの読み書きの速度が5割程度速くなります。

■ 使用法

【ROMに書き入れる】

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

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

 SetEXIDEというツールで後述のパラメータモードを好みのものに変更し、ROMデータファイルを作成します。これは恒久的に設定されるもので、ソフトウェアスイッチが初期値に戻っても保たれます。カレントディレクトリにEXIDE486.COMが存在する状態でSetEXIDEを実行すると、
EXIDE486.ROM
EXIDE486.R00
EXIDE486.R01
の3個のファイルがカレントディレクトリに作られます。

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

 いっぽう、多くのCバスボードで使用されている8bit(バイト)幅の28pin ROMを2個使用した物の場合は、それぞれのROMに、EXIDE486.R00EXIDE486.R01を書き込んでください。EXIDE486.R00の入ったROMは偶数アドレス側ソケットに、EXIDE486.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なので、衝突することはありません。

 玄人志向Mistress 9を使う場合は、DIPスイッチを適切に設定し、書き込み可能、32KB出現可能な状態にする必要があります。全てON側の設定です。書き込んだ後はD000〜D1FFかD600〜D7FFの設定にしておくとよいかと思います。

■ 動作

 通常は起動時にIDE関連の情報は画面に現れませんが、本アプリケーションを入れたROMボードを装着している場合、まず画面右上に本アプリケーションを入れたROMのベースアドレス(セグメント)が表示されます。続いて「IDE HDD上限拡大とCHSパラメータ変更 2.00 [機種名] 」と表示されます。実行時に機種2種類が判定され、それぞれに適した「IDE BIOSへパッチ」となるよう、ジャンプ先・コピー先アドレスなどが書き換えられます。

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

 「パラメータモード:」に続き、現在のモードの名称が表示されます。こちらはデフォルト設定値で、Setexideで設定したとおりのものです。しかしこの表示の直前から、[SHIFT]+[F・1]〜[SHIFT]+[F・6]を押している場合は、臨時にパラメータモードが変更されます。モード1は[SHIFT]+[F・1]に、モード2は[SHIFT]+[F・2]に、以降モード6は[SHIFT]+[F・6]に対応します。これらのキーの組み合わせが押されている場合は、短いbeep音とともに緑色でモードの番号が表示されます。なおこの機能はハイレゾモードでは使用できません。ハイレゾモードでは EXIDEMSW.EXE で設定してください。

 * バージョン2.08までのEXIDEMSW.EXEを実行するとBEEPが鳴らなくなる障害が発生する可能性があります。もしそうなった場合は、いったん[SHITF][GRPH]押しで回復できます。

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

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

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

■ パラメータモード

 パラメータモードは以下のように[1]〜[6]の6通り+[7]の1通りありますので、ご自分の使いやすいモードをSetEXIDEで選んで下さい。ROMを組み込んでからのモード設定は、既に述べたように[1]〜[6]に対応した[SHIFT]+[F・1〜6]のキー押しで行います。この設定はメモリスイッチ領域に記憶されます。メモリスイッチは、予め「システムセットアップメニュー」で「保持」の設定にしておいてください。「初期化」の設定だと記憶されません。
   モード名   容量ゾーンと【ヘッド数:セクタ数】       「|」は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:32】< 8GB <【8:128】< 32GB |頭打ち|
[4] SCSI メルコ 拡張 【8:32】< 8GB <【8:128】< 32GB <【15:128】< 61GB <【15:255】 |
[5] SCSI SSD 拡張 【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:32 8:128 × ×
[4] SCSI メルコ拡張モード 8:32 8:128 15:128
61GBまで
15:255
122GBまで
[5] SCSI SSD拡張モード 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標準モードは、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上限のない機種も使用していて、とくに希望するモードがないかよくわからない場合は、このモードをデフォルトとしておくのがよいでしょう。

■ 注意・補足事項

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

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

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

 対応不明な機種については「不明な対応機種」と表示されて続行を試みます。対応明記されていない機種の場合でも、使用できることがありますが、エラーの表示が出ないからといって正常に動作するとは限りません。

 本アプリケーションを入れたROMボードを使用する場合、96MB以下(Anの場合は127MB以下)の極小容量のハードディスクは接続できなくなります(ハングアップします)。これは旧SASI互換の20,40,80の固定容量への対応ルーチンを削ってしまったためですので、仕様とします。またシステムセットアップメニューで固定ディスクのセクタ長を256バイトに設定することもできません。セクタ長256バイトの場合の処理を潰してしまっているためです。ただし256バイトに設定している場合はパッチ自体を回避しますので、ROMボードを抜かなくても構いません。

 544MB未満のハードディスクについては、A-mateなどのPCI搭載以前の機種で使用していた場合、シリンダ数が本来の容量よりも少ない値で切られていることがあります(*)。これはHDDのモデルごとの容量差をなくすための措置と思われます。本アプリケーションが適用された機種にこれを接続すると、使用可能なシリンダ数が増えることになりますが、もとの機種/状態に戻したときに容量オーバーとなり、問題が生ずる可能性があります。最終シリンダまで使い切らないように注意して下さい。
(*) PC-9821Xe/Xs/Xp/Xn,Ap3/As3の場合、240MB近辺(224-256MB)のHDDが該当します。

 このバージョン2.08からAnでは高速化がなされますが、それによって古い小容量のHDDでは問題が起こる可能性がかなりあります。しかしこのROMボードを導入するということは大容量で高速なHDDを使うはずなので、仕様ということにします。AnではIDEのディスクを2台接続できません。高速化で問題が起こる古いHDDと新しい大容量のHDDを同時に接続するということはないので、これはとくに問題とならないでしょう。

 CバスのSCSIボードのROM流用についてですが、SCSIボードとしてのリソース割り当ては取り消すことはできませんから、OSによっては不明なデバイスという状態で残ります。9801-55/92時代のSCSIボードでは、I/Oアドレスをデフォルト(CC0h〜)以外にするとBIOSの出現ができなくなるものも多いです。つまり本アプリケーション用のSCSIボードと、本当にSCSIとして動作させたいCバスのSCSIボードとは併用が難しいのでご注意ください。55/92ボードは、9801-100ボードのようにアーキテクチャが異なるものであれば併用可能です。

■ 技術的説明

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

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

 EXIDE486.COMは拡張子からするとDOS実行プログラムですが、実行させる意味は持っていませんのでむやみに実行しないでください。とはいうものの、実行してエラーがなければパッチはあたるという判定になりますので、事前の適用可能性チェックにある程度使用できます。エミュレータ環境ではこれ単体でも有用かもしれません。ただし、もし実行したあとはすぐにリセットしてください。

 このバージョンからは、原プログラムのEXIDE486.COM部分の機種固有コードについては、ソースプログラムを公開としました(ただしバージョン2.07)。このソースファイルは同梱のEXIDE486.COMそのままの物ではありませんが(機種によって動的にパッチを変更するため)、動作結果は完全に同一となるようになっています。本アプリケーションの中核部分のみであり、CバスのROMのブートに必要な部分は含んでいません。また文字列表示などきわめて一般的・汎用的な部分のソースも含んでいません。そこは各自で開発したものを使用して下さい。

 ソースをほとんどそのままに商用の製品を作って販売することは厳禁としますが、ソースファイルを改良して・翻案して何かフリーソフトウェアを創作すること自体はなんら妨げられることはありませんので自由にやっていただいて構いません。その場合はこのソースを参考にしたことを明記していただくことを希望します。

■ お約束

 このソフトウェアのうち、実行プログラムSETEXIDE.EXEとEXIDE486.COMはフリーソフトウェアとしますので、ダウンロードして実行することは自由ですが、著作権は作者である私にありますので、作者の意向に反する使い方は禁止とします。

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

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

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

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

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

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

     2019-8-18 まりも(DOSsoft)

【改版履歴】

日付     版  内容
2004- 9- 1 1.00 β版、AP3EXIDEとして新規公開
2004- 9- 7 1.01 β版、ハイレゾモード時HSBでハングする問題などを修正
2006- 2-16 1.10 ソースコード修正、動作上の問題はない
2010- 7-24 1.11 使用期限を実質廃止(2042年まで)
2018-12-25 2.00 AP3EXIDEから改名、対応機種追加、パラメータ設定変更機能の改良
2019- 1-20 2.01 Xe,XsのODP使用時とXp,XnでSCSI I/F が併用できなくなる問題を修正
2019- 2 -4 2.04 対象に PC-9821An を追加, ハイレゾモードでのパラメータモード一時設定ツールを追加
2019- 7-20 2.06 特定の容量(LBA数下位16bitが0)のHDDで誤ったシリンダ数になる問題を修正
2019- 7-21 2.07 120MB,240MB帯のHDDを接続しているとハングアップする問題を修正(PC-9821Anを除く)
2019- 7-27 2.08 Anが2.07で対象外になっていたバグを修正、Anでの転送速度向上機能を追加
2019- 8-18 2.09 EXIDEMSWの実行でBEEPが鳴らなくなる問題を修正 *[SHIFT][GRPH]押し起動で回復

[戻る]