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

EXIDEAE Version 4.00

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

【ご注意】バージョン4.00から変更点・追加機能が多数あります
※ PC-9821初代Ap/As/Ae専用
※ ANTI-CFリセット機能
※ 実行開始時にCTRLキー押しで実行キャンセル,GRPH押しでパラメータ設定の機能
※ ▲システムセットアップメニュー中の「ディスク接続ユニット使用」を流用したCFの動作モード設定機能
※ 対象機以外でもDIV0ROM機能が働く
文章量が多くて読む気がしないという方はEXIDE486をEXIDEAEに読み替えのうえ、こちらを読んでください

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

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

 PC-9821Ap/As/Aeでは、オンボードのIDEハードディスクの容量上限が約543MBとなっています。しかし本アプリケーションをCバスボードのROMに入れることで、RAM化されているIDE BIOSの一部を書き換え、この上限を撤廃できます。利用できる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互換パラメータを選択したほうが性能上有利と言えます。

 ただし、Compact Flash(CF)ではATAリセットによりCHSパラメータが初期値(デバイスがもつ本来の値)に戻される事象(CFリセット)が起こりうることから、そのデバイスデフォルト値をCHSとすることも設定可能にしました。このとき4.3GB以下のCFでは従来との互換性の問題が生じますので、使い分けをしてください。

 バージョン4.00からは、Sandisk製などの一部のCFでは「CFリセット」をそもそも起こさないようにする機能も追加されています。

■ 使用法

【ROMに書き入れる】

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

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

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

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

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

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

 玄人志向Mistress 9を使う場合は、DIPスイッチを適切に設定し、書き込み可能、32KB出現可能な状態にする必要があります。全てON側の設定です。書き込んだ後はD000〜D1FFかD600〜D7FFの設定にしておくとよいかと思います。なおMistress 9はハイレゾリューションモードではROMアドレスの設定もできず動作しません。

 本アプリケーションを入れたROMボードの他にSCSIボードを使用する際は、リソースの衝突に注意する必要があります。PCI接続やPC-9801-100ボードであればとくに問題は起こりません。

■ 動作

 起動時に本アプリケーションのタイトルが表示されますが、その直前から次のシフトキー類を押し続けていた場合は動作にオプションが加わります。ただしハイレゾリューションモードでは機能しません。
・[CTRL ] 全ての動作をキャンセルし、画面にメッセージも出ません。(バグ対策)
・[SHIFT] 本アプリケーションが動作し表示を一時停止します。キーを放せば続行。
・[GRPH ] パラメータ選択モード(下記)に入ってから実行を開始します。

 実行開始すると、「IDE HDD上限拡大とCHSパラメータ変更・・・」と表示されます。実行時に機種判定され、それぞれに適した「IDE BIOSへパッチ」となるよう、ジャンプ先・コピー先アドレスなどが書き換えられます。画面右上には本アプリケーションを入れたROMのベースアドレス(セグメント)が表示されます。 。

 GRPHキーを押し続けていた場合、「パラメータモード 」に続き、現在のモードの名称が表示されます。こちらはデフォルト設定値で、Setexideで設定したとおりのものです。続いて現れるメッセージのとおり[F・1]〜[F・7]を押すと、パラメータモードが変更されます。この設定はメモリスイッチの空きエリアに保存されるので、バックアップバッテリが正常であれば電源を切っても保存されています。なおハイレゾリュリューションモードではキーが効かないので、いちどDOSシステムを起動後に付属の EIXDEMSW.EXE で設定してください。

 モード1は[F・1]に、モード2は[F・2]に、以降モード7は[F・7]に対応します。そのあと緑色でモードの番号が表示されます。

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

 IDE HDDのフォーマット時のパラメータがパラメータモードと適合してれば、固定ディスク起動メニューから起動可能です。もし未使用状態のHDDを接続していれば、パラメータモードを適切に設定し、再起動してからフォーマットしてください。

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

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

■ CFのCHSモードの設定

 CF本来のCHSパラメータと一致させると、CFリセット時に読み書き不能になることを回避できます(速度の低下は避けられませんが)。このモードを「CFネイティブモード」と呼ぶことにします。このモードに設定するには、システムセットアップメニュー上で次の2つの方法があります。
() 入出力の設定→ディスク接続ユニットの使用→「使用する」 に設定
(イ) DIPスイッチ2−2→ROM BASICのモード→「ターミナルモード」 に設定

優先的に使用すべきなのは()ですが、機種によっては機能が存在しませんので、その場合は(イ)を使ってください。なおこれらは既存機能の流用となっています。とくに(イ)では ROM BASICの使用に影響しますので、そのときは()を使ってください。()も機能流用ですが、「ディスク接続ユニット」なるものが存在しなくても「使用する」設定でとくに影響はないようなので流用しています。

 「CFネイティブモード」の対は「HD互換モード」と称しています。これはCHS設定がHDのときと同じになるほか、転送速度向上の設定を行いません(既に高速の状態)。なおPC-9821Ap/As/Aeのハイレゾリューションモード時でも、システムセットアップメニューでの設定は有効です。

■ CFネイティブモードでの注意と対策

 このモードでは4351MiB以下のCFはこれまでのヘッド数8セクタ17から変わるため、既存のパーティションにアクセスできなくなります。モードを変える前にバックアップして再フォーマットするか、8GB〜32GBのCFに丸ごとコピーしてそちらを今後使うかする必要が発生します。しかしCFリセットの恐怖から解放されることは大きなメリットです。

 いっぽうHD互換モードであっても、IPLwareアプリケーションとして、リウ様が作成したIDE-BIOS-LBA patchを併用するとCHS問題から解放されます。そのほか、CFリセットを起こさないことが保証されている下記のようなものを使う手もあります。

■ お勧めできるCF

 CFのうち産業用と銘打っているものはCFリセットを引き起こしにくいと考えられます。そのようなCFはリムーバブルでない属性が与えられているのが普通です。そこで非リムーバブル属性であればCFA属性があってもHDD相当として扱うよう変更しました。しかし非リムーバブルでもCFリセットを引きおこす製品があります。バッファローのRCFシリーズ、グリーンハウスのCF製品にあることが知られています。Sandisk製の1〜8GB程度の時代のCFは本アプリケーションでのリセット回避機能により、CFリセットを起こさないことが判明しており、安心して使用できます。

■ 注意・補足事項

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

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

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

 ハイレゾリューションモード時のパラメータ設定はEXIDEMSW.EXEで行ってください。

 本アプリケーションを入れたROMボードを使用する場合、96MB以下の極小容量のハードディスクは接続できなくなります(ハングアップします)。これは旧SASI互換の20,40,80の固定容量への対応ルーチンを削ってしまったためですので、仕様とします。LBAアドレスモードをサポートしないような旧いハードディスクも使用できなくなります。つまりもともと対象機種発売時に内蔵されていた旧いハードディスクは大概使用不可となります。実際に故障で使えなくなっていることがほとんどだと思いますが。

 システムセットアップメニューで固定ディスクのセクタ長を256バイトに設定することもできません。セクタ長256バイトの場合の処理を潰してしまっているためです。ただし256バイトに設定している場合はパッチ自体を回避しますので、ROMボードを抜かなくても構いません。

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

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

■ 技術的説明

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

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

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

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

■ お約束

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

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

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

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

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

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

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

     まりも(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リセット時に諸パラメータが初期値に戻らないようにする機能の追加
2024- 3-31 3.52 CHSパラメータ設定時のキー操作は[GPRH]押しのあとのファンクションキーに変更
2024- 4- 8 4.00 プログラム構造の改良、SOUND BIOS制御の確実化、ディスク接続ユニット使用可否機能の流用

[戻る]