intel 8255xのネットワークカードのROMに入れて使うアプリケーションで、オンボードIDEハードディスク容量上限撤廃する
EXIDE55x Version 2.60
Copyright(C) 2017-24 まりも (DOSsoft)
PC-9821にはIDEデバイスを最大4台接続できる機種があります。初代Xa,Xf,Xt,SV-98/2を除くPCIバス搭載機がほぼこれに該当します。しかしそのうちでも1997年中頃までの機種には4.3GB上限という問題があります。本アプリケーションは、intel 8255xのネットワークカードのBoot ROM(PC-9821では使用されていない)に入れることで、RAM化されているIDE BIOSの一部を書き換え、4.3GB容量の上限を撤廃します。
さらに本アプリケーションは、BIOSのCHSパラメータ(*)設定ルーチンに介入して、従来とは異なるパラメータでも使用できるようになっています。(* CHSパラメータ:シリンダ、ヘッド、セクタ数のパラメータ)
通常は4.3GB未満では8ヘッド17セクタですが、「パラメータ」の項目で述べる通り、さまざまに変更できます。変更の手段には3種類あり、ひとつはROM書き込み時のデフォルトモードの選択で、もうひとつはキーボード操作で行います。後者の設定は98本体のソフトウェアディップスイッチ領域に記憶され、電源を切っても保持されます(バックアップバッテリが消耗しきっていない限り)。このツールEXIDESW3でも変更できますが、キーボード操作のほうが利便性はよいと思います。
利用できるネットワークカードのチップはintel 82557,82558,82559,82550です。i82557が載ったボードにはPC-9821XB06という純正型番の製品もあります。ネットワークカードの上に、PLCC 32pin形状のフラッシュROMが載っているか、またはソケットがあるものを入手してください。ソケットのみの場合はPLCC 32pinソケットに適合する512kbit〜2MbitのフラッシュROMも必要です。本アプリケーションに含まれる書き込みプログラムは、そこそこ多くの種類のフラッシュROMに対応しています。
アーカイブを解凍すると次のファイルが作られます。
ファイル名 | 用途・内容 |
EXIDE55X.TXT | この説明文書 |
EXIDE55X.EXE | デフォルトパラメータ設定・ROMデータ生成プログラム |
EXIDEPCI.COM | ROMデータのもととなるデータ、実行プログラムではないので注意 |
PC-98のMS-DOSまたはPC/ATの日本語DOS/V上(日本語表示しかしないため英語モード不可)、または32bit Windowsのコマンドプロンプト上で、 EXIDE55X.EXEを起動します。必ずEXIDEPCI.COMもカレントディレクトリに置いた状態で実行してください(存在しないとエラーとなります)。するとEXIDEPCI.COMのデータが読み込まれまれ、デフォルトのパラメータモードをどうするか尋ねられます。
デフォルトのパラメータモードは以下のように7通りありますので、ご自分の使いやすいモードを選んで下さい。この設定はROMに書かれるため変化しません。
モード名 容量ゾーンと【ヘッド数:セクタ数】 「|」は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を接続した場合にはその全容量が使え、いっぽうで543MB以下の大昔の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ではそれを是正します。しかし使用可能な容量は変わりません。
EXIDE55Xが終了すると、EXIDE55X.ROMというROMイメージファイルがカレントディレクトリに出力されます。
このネットワークカードを入手した時点で、ROMアクセスが無効化されていたり、有効かつPXEブート可となっていることが普通でしょう。しかしROM無効状態ではROMに書き込めませんし、PXEブート可となっていると98に載せた場合起動でハングアップしていまいます。そのような場合、PC/AT互換機上で予めROM有効に状態変更する必要があります(もし98上で書き込むならさらにPXEブートしない状態にも変更する必要があります)。ROMの状態を変更する、「BROW」というツールがintelのサイトにありましたが、現在では「IBAbuild」というツールに統一されているようです。
intelのIBAbuildダウンロードサイト(2017.12.1現在)
https://downloadcenter.intel.com/download/12344/IBABUILD-BIOS-Image-Utility?product=50280
次のような引数で実行するとフラッシュを有効化できます。
IBAUTIL -NIC=1 -FLASHENABLE
PXEブート不可にするのが面倒な場合はPC/AT上で次の書き込みの作業もPC/AT上で行ってください。PXEブート不可状態になっていれば書き込みは98上で構いません。
まず 書き込みツールpciflash5をダウンロード してください。その中に含まれる FL8255X.EXEを用意します。 対応ROM品種はpciflash5のほうに記載してあります。
書き込みツール実行段階ではMS-DOSはEMM386を組み込んでいない、すなわち仮想86モードでないDOSを起動してください(98でもPC/ATでもよい)。DOSのコマンドラインからFL8255Xを実行し、EXIDE55X.ROMを入力として与えます。コマンドラインで
FL8255X EXIDE55X.ROM
と打ちます。フラッシュROMの判別が行われてそのIDが表示されれば書き込みできます。もし選択肢が現れるような場合は対応していないフラッシュROMですから、中止してください。書き込んだあとは電源を切り、ハードディスクの接続をよく確認して電源を入れます。書き込み機と動作機(98)が異なる場合は、ROMを書き込んだネットワークカードを動作機(98)のほうに取り付け、電源を入れます。
まれにi82557チップのボードでうまく書き込みができないことがあります。その場合はpciflash5に含まれるFL82557.EXEを使ってください。
通常は98の起動時にIDE関連の情報は何も画面に表示されませんが、本アプリケーションを入れたROMボードを装着している場合、
「IDE HDD上限拡大とCHSパラメータ変更」・・・・・
と表示されます。DEFAULT MODEの数値はEXIDE55Xによる設定値で、[1]〜[7]まであり、既にパラメータモードの項で述べたいずれかに対応します。これはROMに書いたとおりの固定した値です。
バージョン2.60からは、キーボード操作でパラメータモードを変更できる機能が追加されました。起動時に[GRPH]キーを押していると、[F・1]〜[F・7]のキーを押すことで、対応するモード番号に設定されます。電源を切っても保持されます。EXIDESW3で設定したものと同じとなります。
「パラメータモード:」に続き、現在のモードの名称が表示されます。こちらはソフトウェアスイッチの設定値で、上記キー操作またはEXIDESW3というツールで変更できます。
表示を保持しておきたい場合は、メモリチェック終了後くらいからSHIFTキーを押し続けていて下さい。放すとシステム起動は続行します。
4.3GBが上限だった機種では、「4.3GB上限拡大」と続いて表示され、それを超える容量にHDDを接続してもハングアップしなくなります。もともと4.3GB対応の機種の場合は、「8063MB対応機です」と表示されます。本アプリケーションでは、128GBの壁を超えるHDDを接続してた場合でもハングアップせず、127GB打ち切りで動作させます(そもそもIDE BIOSでは48bit LBAに対応していないので、127GB以降を使うことができません)。 IDE HDDのフォーマット時のパラメータがパラメータモードと適合していれば、固定ディスク起動メニューから起動可能です。
IDE HDDのフォーマット時のパラメータがパラメータモードと適合してれば、固定ディスク起動メニューから起動可能です。
もし未使用状態のHDDを接続しているならば、(必要に応じて)パラメータモードを適切に設定し、再起動してからフォーマットしてください。
PC-98のオンボードIDEはCFの特質を全く考慮した作りになっていません。このため「CFリセット」という事象を引き起こし、BIOSの示すヘッド数セクタ数が、デバイス本来のそれにリセットされます。このため記録されているデータに全くアクセスできなくなります。またそもそも98のオンボードIDEで絶対動作しない仕様のCFやSD-CF変換器も存在します。そこでバージョン 3.10 からは、CFの場合にはデバイス本来のヘッド数セクタ数をBIOSにも設定するようにしました。これによりCFリセットには強くなりますが、いっぽう下記のような制約が発生します。
(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を使うのがよいことは言うまでもありません。
なおこのDIPスイッチ2-2の設定項目は、本来ROM BASICの起動モードを変更するものですから、ROM BASICを使う場合は影響を受けます。それが不都合であるという方は、4.3GB未満のCFを使わないようにしてください。しかしROM BASICを使わなければなんの問題もありません。
<2021-11-8追記>ROM BASICが廃止された最後期の機種ではソフトウェアディップスイッチ2−2がシステムセットアップメニューに現れません。そのため「DSW22」というツールを作成しました。2011-11-8版からはアーカイブに同梱されています。スイッチ2-2を常にオンの状態にしておきたい場合は、DSW22ON.COMというプログラムをDOS上で実行するか、IPLwareアプリケーションとしてインストールしておいてください。詳しくはDSW22.TXTの説明書もお読みください。
<2024-3-3追記> バージョン2.50からは、そもそもCFリセットを起こさないようにする設定を行う ようにしました。これは一部のCF(主にSandisk製)に対して有効ですが、かなり多くのCFには作用しないようです。詳しくはこちらをご覧ください。
4.3GB以上に対応した機種で、15ヘッド63セクタで認識するHDDが存在しますが、本アプリケーションではそれを継承してBIOSヘッド数を決定します。ただしそれが有効なのは4351MB以上30239以下の場合です。
543MB以下のハードディスクについては、4.3GBまでとパラメータは同一ですが、A-mateなどのPCI搭載以前の機種で使用していた場合、シリンダ数が本来の容量よりも少ない値で切られています(HDDのモデルごとの容量差をなくすための措置と思われます)。本アプリケーションが適用された機種にこれを接続すると、使用可能なシリンダ数が増えることになりますが、もとのA-mateなどに戻したときに容量オーバーとなり問題が生ずる可能性があります。最終シリンダまで使い切らないように注意して下さい。
書き込みプログラムはROMの種類には多数対応していますが、未知のROMである場合、ROMタイプの選択肢が出ます。そのときは基本的には書き込みを諦めてください。ただし選択肢中のどのタイプのROMが使われているかをご自分で判断できる方は、選択を強行しても構わないでしょう。しかしタイプが異なるものを適用するとROMを壊す場合があります。
既に述べたように、パラメータモードの記憶は飛ぶことがあります。バックアップバッテリの消耗、スーパーリセットや[GRPH][SHIFT]押し起動で初期化すると、EXIDE55xで設定したデフォルトのモードになります。他のモードにして使用していた場合、設定が初期値に戻る場合があるということは心得ておいてください。余計なことはしたくないという人は、初めに決めたデフォルトのモードでずっと使い続けるのがよいでしょう。異なるモード下でフォーマットしてしまった複数のHDDを接続すると起動時にどちらかが不適合となり、起動や認識ができなくなりますので注意して下さい。
パラメータモードを記憶するソフトウェアディップスイッチは、デスクトップ機では使用されていないはずですが、機種によってはシステムで使用されていている可能性はゼロではありません。その場合、どうしてもキー操作またはEXIDESW3でパラメータ設定が記憶できないという症状が現れるかもしれません。そのような機種があればご報告ください。
このプログラムにはおまけ機能として、バッテリ切れによるカレンダタイマの異常動作が起こっているときに警告する機能が追加されています。警告が出た場合はリターンキーで応答しておいてください。仮の時刻が設定され暴走状態は回避されます。MS-DOSなどOSを起動してから正しい時刻に修正してください。
このアプリケーションはPCIボードBOOT BIOSとして作られており、それが起動プロセス中に実行され、メモリ上に展開しかかっているRAM化IDE BIOSを書き換えるという働きをします。起動完了後には何も動作しません。書き換えられたメモリ上のIDE BIOSはそれ自体で完結動作でき、本アプリケーションは不要となるので1MB空間のシステム上からは見えなくなります。
パラメータモードを記憶するソフトウェアディップスイッチは、I/O アドレス 891Eで設定されるもので、bit2〜0 に割り当てています。0(000b)または7(111b)のときデフォルトのEXIDE(M9)モードです。Undocumented 9821/9801によると、このI/Oアドレスは一時期のノート機種でしか使用されていないようです。MATE-R,MATE-X/W のITFやシステムセットアップメニューを調べた限りでも、このI/Oアドレスへの書き込みはないようでしたので、流用しています。なお旧バージョン(1.xx)では8C1Eを使用していましたが、機種によっては破壊されることがあるため、バージョン2.00では891Eに変更しました。したがって古いバージョンのEXIDESW(1.11)は、バージョン2.00以上の本プログラムには適用できません。
対応機種についてはIDE 4台搭載可能となった機種(PC-9821Xa/C)からということになりますが、判っている範囲では、Xt13/Cについては対応しません。初代Xa,Xt,Xfにも対応していません。なおSt15,St20 にはexidecbと違い対応しています。
PCIバスアーキテクチャのCanbe(Cb3,Cx2,Cx3,Cx13,Cb10など)に対応しているかどうかは、当該機種を持っていないため調べていません。既に使っている人がいないかネット検索などしてください。
EXIDEPCI.COMは拡張子からするとDOS実行プログラムですが、実行させる意味は持っていませんのでむやみに実行しないでください。とはいうものの、実行してエラーがなければパッチはあたるという判定になりますので、事前の適用可能性チェックにある程度使用できます。エミュレータ環境ではこれ単体でも有用かもしれません。ただし、もし実行したあとはすぐにリセットしてください。実行後に、PCIのProgramable attribute mapの状態が不正な状態で終了している可能性があるためです。
原プログラムのEXIDEPCI.COM部分のソースプログラム(バージョン2.60)を公開としました。EXIDECBと共用ですので、EXIDECB のほうを参照してください。ソースをほとんどそのままに商用の製品を作るようなことは禁止としますが、ソースファイルを改良して・翻案して何かを創作すること自体はなんら妨げられることはありませんので自由にやっていただいて構いません。その場合はこのソースを参考にしたことを明記していただくことを希望します。
このソフトウェアのうち、実行プログラムEXIDE55X.EXEはフリーソフトウェアとしますので、ダウンロードして実行することは自由ですが、著作権は作者である私にありますので、作者の意向に反する使い方は禁止とします。
EXIDEPCI.COMおよび生成されるEXIDE55X.ROMについては、私的な使用は自由ですが、再配布を認めません。すなわち、このソフトウェアによるパッチをあてたROM、およびROMを載せた状態のPCIバスボードを譲渡・販売・流通させることは固く禁じます。ROM焼きの役務代行業者などにROMデータを送付することも同様です。個人的使用にとどめてください。これが守られていない場合は著作権の侵害と見なします。
したがって、このソフトウェア全体を、不特定多数のダウンロードできる場所へ「転載」することも、禁止とします。しかしリンク先の紹介についてはなんら制限はありません。
ソースファイルを改良して同様の作品を作り公開する場合は、それを明記していただくことを希望します。ソースファイルを翻案して何かを創作すること自体はなんら妨げられることはありませんので自由にやっていただいて構いません。
プログラムは、ある程度のテストを経て公開していますが、動作が完璧に行なわれるということを、作者は保証するものではありません。ユーザがプログラムを組み込んだことによる起動不能などのトラブルの補償には一切応じません。
システムが起動しなくなったことや、それに付随した逸失利益、精神的損害について、作者は一切責任は負わないものとします。これらの点を了承できない方には、使用(ソースファイル含む)を認めません。
まりも(DOSsoft)
日付 版 内容 2017.12. 1 1.10 新規 2017.12. 5 1.10 intel IBAutilによるROM有効化の記述を追加、付録の書き込みツールFL8255Xは削除とした 2017.12.10 1.11 「4.3GBリミットのない機種と完全互換」のモードで容量設定の誤りがあったのを修正 2018.12. 1 1.15 初期PCI機(*)にも対応(実際にはしない)、アーカイブファイルの構成を変更しEXIDEPCI.COMを別とした 2019. 1.21 1.21 EXIDECB共通ルーチンの改変に合わせて改版(機能的変更なし) 2019. 3.15 1.23 初期PCI機(*)に対応していないことを明記した 2019. 4.20 1.30 IDE 4ポート対応の初期PCI機に概ね対応 2019.10.17 1.31 特定の容量帯で誤ったシリンダ数となる問題を修正 2021- 4-12 1.40 CF では ネイティブなヘッド数セクタ数となるようにした 2021- 8-15 2.00 パラメータ設定プログラムがEXIDESW2に変更となったのに合わせた改訂 2021- 8-20 2.01 Removable属性でないCF(主に産業用)はHDD相当の扱いにした 2021-11- 8 ROM BASIC廃止機種における DIP SW2-2の設定プログラムと説明の追加 2024-03-03 2.50 CFリセット時に諸パラメータが初期値に戻らないようにする機能の追加 2024-03-04 2.51 3台以上ドライブを接続している場合に1台認識しなくなる問題を修正 2024-08-04 2.60 容量が小さめに設定される問題の修正、キー操作でのモード設定機能の追加 2024-09-08 EXIDESW2がEXIDESW3に更新された点を受けて説明文を変更