IDE容量超過によるハングアップを回避するROMアプリケーション
IDEnoLim (バージョン0.91)
(CバスROMボード用のROMイメージ)
Copyright (C) 2025 まりも
NEC PC-9800シリーズのIDEディスクインターフェイスとそのBIOSには、多くの機種で4351MiBの壁が存在しています。この壁はBIOSファームウェアに起因するものなので、外部的なソフトウェア単独では破ることができません。容量過大のディスクドライブを接続するとハングアップしてしまいます。
しかしアドインROMを使うことで、起動停止する問題を解消させたり、メモリ上に展開しているIDE BIOSを変更することができます。既に公開している「DIV0ROM」というプログラムはその1つです。容量オーバーで発生する割り算のエラーを拾って、システムに返す容量(シリンダ数)を16ビットの範囲内にします。
いっぽうディスクドライブの容量のほうを縮小することで4351MB以内にしてしまう方法もよくとられてきました。これにはさまざまなソフトウェアツールが既にあります。
別の既存のROMアプリケーションEXIDE5を使えばこの問題は解決し、面倒な手順なしで容量上限も大幅に拡張できますが、もう一つの解決策を提案するという意味で、新しいROMアプリケーションを開発することにしました。それが本ツール IDEnoLim です。名前の通りリミットを無くします。EXIDE5と比べた利点としては、対象機種の範囲が広いという点、パッチを当てる量が極めて少ないという点があります。これはバグやそれに伴改版が少なくて済むということでもあります。
非常に対象機種の範囲が広く、A-mateのハイレゾモードでも(ROMボードが対応すれば)動作します。そのため逆に、動作未確認機、動作不可能機を列挙しておきます。
ワード幅のデータは、1個だけのROMが載っているボード用です。バイト幅のデータは、2個のROMが載っているROMボード用です。いずれかのデータをROMに焼いて「しかるべきROMボード」に載せて使います。SCSIボードの流用については過去のEXIDE**の説明書を参照して下さい。ただしそのSCSIボードに適合したROM物理アドレス出現域に書き込まないと、98側にROMイメージが現れてきません。物理0番地から書き込んでも現れないSCSIボードは非常に多いです。16KB単位で場所を変えればどこかに現れるはずです。
動作モードの選択のようなものはありません。4351MB以上のディスクドライブを繋いでもハングアップしなくなるだけです。面倒なことが嫌いな人は、このまま4351MBとして使うのがよいでしょう。その点では従来互換性は100%保たれます。セクタ長256バイトの設定でも動作します。起動時画面の例は次の通りです。細かい機種名が出る場合もありますが、大枠の機種群となる場合もあります。
起動時ハングアップを回避しているだけなので、もともとあった下記の問題は残っています。
1番目と2番目の問題を回避するには、IPLwareとして「FIXIDECF」の導入が必要です。
すべての問題を一気に解消したい場合は、起動したあとに、リウ様作の「IDE-BIOS-LBA-patch」(LBA_IDE)を使用してください。CFや本来動作しないSSDで容量を制限せずに使いたいならば、このソフトウェア(およびパッチを当てた各Windowsドライバ)は必要です。
ROMアプリケーションである EXIDE5を使う場合は、これら全ての問題解消に加えて、CFリセットを本質的に起こさないようにしたり(一部のCF mediaに限る)、マルチプルセクタに対応したSSD,CFでは転送が高速化するなどの性能的向上もあります。関連IPLwareも一切不要にできます。
上限を超えたまま使用している場合、WindowsNTやWindows2000のディスク管理では本当の容量までの間に未使用領域が現れます。しかし絶対にそこを確保してはいけません。パーティションテーブルが破壊されます。なので、CHSモードの容量が変更できなくてもいいからLBA容量を変更して4351MBにしておいたほうが無難です。しかし容量変更一切不可のものもありますから必須ではありません。
本プログラムの使用に直接関係ありませんが、プライマリとセカンダリにSATA-IDE変換器(または内部で変換しているIDEデバイス)で、2台のデバイス(ATAPIも含む)を接続すると、一部の98では正常に動作しないというハードウェア上の問題が最近わかってきています。第2世代B2-FELLOWやB-MATEはこれに該当します。2台接続したらおかしくなったという場合はこのことを思い起こして下さい。この問題は本プログラムを使わなくても発生し得ます。
既存のROMアプリケーション、DIV0ROM(他の作者様などによるSCSI BIOS組み込み版も含む)と併用は可能ですが、IDE BIOSではこれが作動することはなくなるため、併用する意味は薄いです。SCSI BIOSでのハングアップを目的とする場合は有効ですし、存在していても無害です。いっぽうEXIDE***とは競合しますので併用不可です。というより併用する意味が全くありません。
ソースプログラム(一部)はこちらにあります。
PC-98のIDE BIOSでは、デバイス検索のプロセスで、
本アプリケーションでは、ここにパッチをあて、総セクタ数をLBA総セクタ数で得た後、0880000h以上の場合に 087FFFFhにしてから元の流れに戻るということをしています。これにより、4351MBを超えた場合、BIOSシリンダ数は常に65535の最大値を返すようになります。
つまりBIOSシリンダ数を求める除算のエラーは起こらなくなります。除算エラーをキャッチして動作するDIV0ROMとは真逆の手法をとっていると言えます。どちらが良いという絶対的評価はなく一長一短あります。個人的には、IDE BIOSに一切変更を加えない DIV0ROM のほうがいいと思っていますが・・・
PCIチップセット機でない場合に画面表示右端に、「BIOSフラグ」というのが右端に現れます、。これは内蔵周辺装置のBIOSの有無(有=塗りつぶしマル●、無=中抜きマル○)を示す物で、左からサウンドBIOS、SASI BIOS、SCSI BIOS、IDE BIOSの順です。右端のIDE BIOSは常に装備のはずです。SCSIはA-mateのE10,FA02相当品を装着してある場合に限って現れるはずです。SASIが現れることは無いはずですが、幻の「固定ディスクユニット」なる物を物理的に装着すると現れるかもしれません。サウンドBIOSは内蔵のものに限られます(A-mate、Multi,Canbe)。Cバス付けのPC-9801 14,26,73,86,118ボードのBIOSは関係ありません。
もしここの装備状況表示と 実際のSCSI/SOUND BIOSの出現状況が一致していないようであれば、本アプリケーションの周辺機器判定のバグの可能性がありますので、ご連絡ください。
このソフトウェアは、フリーソフトウェアです。使用するためには下記のことに十分留意して下さい。
不特定多数がダウンロードできる場所への転載は禁止とします。それに相当する、このプログラムを入れたROMおよびROMボードの頒布、販売も禁止とします。廃棄する際も同様ですが、使えない形で廃棄してください。
プログラムは、ある程度のテストを経て公開していますが、動作が完璧に行なわれるということを、作者は保証するものではありません。
本バージョンは試作版につき、予告なく削除することがあります。通常はDIV0ROMで目的が達成できるはずです。
2025-4-8 まりも (DOSsoft) 連絡先メールアドレスはホームページ上で
■ 対象機種
動作未確認機
・PC-9801US,UF,UR(※IDE BIOS第0世代機)
・PC-9821Ce
動作不可能機
・PC-9821Bf,Cf(※IDE BIOS第2世代機ですがPCIチップセット機)
・PC-9821XfおよびRsII,RvII
・H98,SV-98,FC-98シリーズ
・ノート機全般(Cバスがないためですが、N08やドッキングステーションを使っても望みは薄め)
・EPSON PC-9801互換機全て
本アプリケーションが不要の機種(動作回避します)
・4351MB壁がもともとない機種
■ 使い方
ファイル内容は次の通りです。
参考
SSDを漫然と使ってはいけない(文書)
NICを流用したROM焼きツールとその方法 rt8139xx
ROMエミュレータPC34D0
CHSパラメータが変わる場合のOSの入れかた(文書)
■ 動作
■注意
■ 技術的情報 (読み飛ばし可)
(1) IDEデバイスからidentifyコマンドで得た512バイトの情報を得る、
(2) そこに記述されたCHS シリンダ数、ヘッド数、セクタ数の情報から、それらを乗算して総セクタ数を得る、
(3) BIOSでは8ヘッド、17セクタとしているので、BIOSシリンダ数を 総セクタ数÷(8×17)で求める、
ということを行っている箇所があります。このルーチンはアセンブリコードで10行程度のもので、機種共通性があります。およそ2つのタイプしか存在していません。
■ お約束
[ダウンロードする]
■ 更新履歴
日付 版 内容
2025-04-08 0.91 試作版新規掲載
[戻る]