SCSI 8GB容量壁超え BIOSを試す
まりも(DOSsoft)
2020年2月27日 作成
PC-98用CバスのSCSIアダプタのほとんどはHDD容量8GBまでしか対応しません。その理由として、
BIOSがCHSとLBAの変換を行うところにまず問題があるわけですが、int1Bhのディスク読み書きなどの基本ファンクションをフックして、自前のLBA/CHS変換ルーチンを実行してしまえば問題は解決しますし、容量取得のint1Bhのファンクション84hでいかようなパラメータを返すこともできますから、容量が8GBを超えているときに8ヘッド128セクタを返すようにすれば8GB以上への対応はできることになります。
Cバスの92/55互換SCSI BIOSのエリアは4KBしかなく、基本がROMですからパッチを当てる場所もありません。しかしレガシーな98(i486時代)ではDC00:0000の4KBはRAM化できることになっており、ROMをRAMにコピー後パッチをあてることはできます。拙作SCSI_RAMではそれを行っており、RAM化することで高速化したり、PC-9821A-E10については容量壁を1GBから8GBに引き上げています。しかし上記のようなint1Bhを乗っ取るようなパッチとなるとかなり大規模なものになり、そもそもパッチできる余白がほとんどありません。また4KBのRAM/ROM領域は同じアドレスの裏にもROMがあってそれが呼ばれることから、一般に全てのSCSI BIOSをRAM化しても正常に動作するわけではありません。
そこをうまく解決したのが、「リウ」さんという方が作成した 「壁ごえSCSI」(SCSI.COM)です。IPLwareですのでIPLが実行されてから有効となります。詳細は作品を見た方が早いと思います。リウさんは98エミュレータの改良も手がけており、Twitterでも活動していらっしゃいます。
リウさんのGoogle driveにある壁ごえSCSI.7z がそれです。
【2024年98の日に追記】リウさんのサイトが新たに発足しましたのでそちらのリンクも記載しておきます。壁ごえSCSIです。
このツールのポイントは、DC00:0000の裏に切り替えられてしまうところにもパッチをあて、DB00:0の隠しRAMに裏ROMをコピーしておき、そこに実行を移すというところにあります。レガシーな98ではセグメントD800〜DB00までの16KBはRAM化できるようになっており、前半部D800,D900にはIDE BIOS本体が、DA00にはIDE BIOS作業域が存在しています。しかしセグメントDB00は未使用だというわけです。
ただしプラグ&プレイおよびノート機のBIOSは16KB全てをバンクを切り替えて使っており、残念ながら未使用ではありません。したがって壁ごえSCSIの適用機種は、デスクトップ機かつ非PnP機に限られます。具体的には初代A-mate,B-fellowから2代目A-mate(Ap2,As2,Af,非PnPのAn)およびB-mate, PC-9801BX2,BS2,BA2までです。Canbeでは Ce2/Cs2までかと思います。
いっぽうPCI機では16KB単位で拡張ROM領域をRAM化できます。壁ごえSCSIではそのようにしてDC00使用時には地続きのセグメントDE00やDF00を使用しているようです。
なお壁ごえSCSIの現在のバージョンでは、SCSI ID=1のディスクドライブのみの対応となっています。MOを使う人はMOドライブのIDを0にしてSCSI HDDの台数に依存しないようにすることが多く、結果的にHDDのIDを1からとするのが普通ですので、あまり問題はないと思います。
まず容量壁については、本当に無くなります。DOSでBIOSアクセスしている限りでは不具合は出ません。試した限りではPC-9801-92互換のパラメータモードをもつCバスSCSIボードは全てうまく動作しており、動作しなかったボードはみつかっていません。
次に動作速度ですが、むしろこちらがすばらしいと言えます。ROMの全部がRAMに置かれることから、実行が高速化されており、BIOS経由アクセスのベンチマークはスコアが大幅にアップします。体感的にも高速化されたのがわかるほどです。とくに細かい単位のアクセス速度が向上し、7倍程度になる場合もあります。バスマスタ方式でもI/O転送でも高速化します。
Windows NT/2000では 8ヘッド32セクタ、8ヘッド128セクタを決め打ちしようとしますので、壁ごえSCSIはこの範囲内で使うのが簡単で良いと思います。しかし拙作conv98ATを適用してAT互換機フォーマット仕様に変換し、さらにブートセクタから先頭1BEh以降の情報を消し去ってしまえば、Windows NT/2000は98のディスクでは無いと判断し、どのようなCHSパラメータであってもアクセスできるようになります。この状態では不具合はBIOS無関係となりますので、BIOSのパッチがどうであっても問題は起こりません。またPC/ATでもそのまま使えますから、むしろ利便性はあがります。唯一の不都合は、そのディスクドライブから98のOSが起動できないというだけです。
2020年9月現在、改良が進行中のようです。SCSI ID 1以外への対応、Compact Flash併用時の問題、RAM BIOSの使用域の変更などがあると思われます。
まりも(DOSsoft)