PCI-ATA/SATAコントローラ用のPC-9821向けDISK-BIOSです。不完全な点もあるかもしれませんが、人柱になりたい方や、野次馬な方々、読み物に飢えている方々向けに公開しています。ソースファイルのドキュメントとしての価値を評価してくれればと思います。PIO版の方が作成が簡単で、信頼性が高いのではないかと思います。バスマスタ転送版でなにか問題が出たらPIO版を試してみると解決するかもしれませんが、RvIIで3114を使う場合はバスマスタ版でないと旨く動かなかったりするようです。Windowsでの転送モードはBIOSの転送モードに関係無く設定されます。だからPIOモードでBIOSが動かしていてもUDMAモードで動作したりするわけです。それと、チップが同じならボードの発売元に関わらず基本的には動くと期待しても良いんでしょうが、ボードの設計により相性問題が起きることは大いにありえます。
PC-98のIDE-BIOSの容量上限はCHSが255*255*65536が目一杯でセクタ当たり512byteを拡張でもしない限り2TBです。こればっかりはINT 1Bhの仕様なのでどうしようもないです。というかBX,CX,DXの3本でディスクを扱う仕様は初代PC-9801から変わらず、IDE-BIOSではレジスタの上位bitが素直にそのまま拡張されたということで、初代PC-9801から2TBまでは素直に対応可能だったとも言えるわけで、感慨深いものがあります。AT互換機でも2TB壁問題はなかなか一筋縄ではいかなそうですんで(Over2TB wiki@nothing)、さすがに限界という気がします。なお、開発当初から除算でトラブルが起きると嫌だったので、2TBを超えた場合は2TBクリップする仕様にしてあります。2TB以上のHDDは持っていないのでテストはしていませんが。よって、多分今使っているBIOSは書き換えずそのままでBIOSの起動に関する問題は起きないと思います。ただし、OSとの齟齬などは検証していません。127GB壁や32GB壁のときみたいに何事も無ければ良いんですが。
購入時に入っているPC/AT互換機用の純正のROMイメージは、ご多分に漏れずPC-98では起動阻害を起こします。少なくとも初回はAT互換機で書きかえるなりチップを起動時だけ眠らせるなりしてやり過ごしましょう。DIPソケット実装のボードは無関係のイメージが入った適当なROMに置きかえると起動阻害を回避できます。なお、書きこみソフトは対象とするコントローラ上のHDDからでは実行できないみたいです。ブロック図を見るとFLASHインターフェースがATAチャネル上に寄生しているようでして。
K6化したXv20ではやたら遅かったり動かなかったりするわけですが、なんなんでしょうねえ。N4下駄ではコンフィグレーションレジスタへのアドレスにどかんとウェイトが入っている?
起動時にROMを眠らせるかAT互換機に繋いで書き換えて下さい。当BIOSはAT互換機では何もせずに帰るはずです。書き込みソフトも元BIOSへの書き込みも含めて大丈夫だったはずです。
チップ | SiI680 | SiI3112 | SiI3512 | SiI3114 | SiI3124 |
---|---|---|---|---|---|
複合ボードの有無 | CHANPON2'TURBO-PCI(玄人志向) | SUPERCHANPON2-PCI(玄人志向) SUPERCHANPON2X-PCI(玄人志向) | SATA+GbE-PCI(玄人志向) IFC-PCI7ESAU2(Buffalo) USB5+ESATA-PCI(玄人志向) | ない | ない |
ドライブ接続可能台数 | 4台 | 2台 | 2台 | 4台 | 4台 |
接続インターフェース | ATA133 | SATA | SATA | SATA | SATA II |
WindowsドライバのサポートするATAデバイスの転送モード | PIO/WDMA/UDMA | PIO/UDMA | PIO/UDMA | PIO/UDMA | PIO/UDMA |
WindowsドライバのサポートするATAPIデバイスの転送モード | PIO/WDMA/UDMA | PIO | PIO/UDMA | PIO/UDMA | PIO/UDMA |
単機能ボードの価格 | 普通 | 捨て値のときあり | 普通 | 普通 | 割高 |
RvIIでの動作可否 | 動作?(PIO) | 動作 | 動作 | 怪しい | 動作 |
山猫機での動作可否 | 動作 | N.D. | N.D. | 不可 | 不可 |
最近Windows2000非対応のドライバが出てきています。特にWindows2000のインストール時にF6押しで入れるドライバにこれを使うと最初の再起動後にブルースクリーンで落ちます。いくつかファイルが足りない模様で、1回古いバージョンのドライバでインストールを済ませてから更新されたドライバに置きかえるとトラブルが回避できるようです。特にSiI680でPC/AT互換機の環境ですが、古いバージョンのドライバではPrimary Master:WD300BB、Primary Slave:IBM DPTAの構成ではWindows2000起動時に進捗状況のバーがあるところまで行って止まります。この状態で最新のドライバに更新してあげるとトラブルが解消しました。また、SI????.SYSはSI????.MPDにリネームすることでWindows98で使用可能みたいです。
私は玄人志向というメーカーはかなり好きで色々買ってますが、それ以上の利害関係に無い1個人に過ぎません。従って、ボードのハードウェア仕様に関する苦情を私に言ったり、当BIOSに関する苦情を玄人志向に言ったりするのは筋違いとなります。また、Silicon Imageもしかりです。データシートをうpしてくれる前に下さいとお願いしたことがありますが、すげなく断られました。玄人志向だからというのと、CHANPONだからというのでたまたまこの会社の石になったんです。私が勝手に作っているという事情により、当BIOSの使用により、メーカー様のサポートや保証は受けられなくなることを認識してください。それと、もっと一般的な話として、メーカーにサポートを求めるにしても、最近のボードは殆どPC-98対応をうたっておりません。サポートを求めるなら、PC/AT互換機でも同様の不具合を再現して間接的に問題の解決を求めるべきです。
まあ、PIO転送している限りエラーなんて通常出ないんですが、不良セクタなどに触ったときなどの場合にまずいことがあるかも知れません。そこでそのような場合にどこかへ行ってしまうような事はないように、一応できる限りでのエラー処理を行ったつもりです。ただ、不完全な点もあるかもしれません。そう言った不完全な点が見つかった場合、バージョンアップできる機会に少しずつ改善したいと思っています。
PC-98のPCI-BIOSには不具合があり、PCI-PCIブリッヂを越えたデバイスのリソース割り当てが不正になる現象が見られます。つまりデフォルトでは起動できないことになりうるわけです。そこで、拡張ROMが呼び出された段階では自分のROMが属するATA/SATAコントローラがバス0でないとき、アドレス修正が行われます。また、CHANPON-ZERO使用時にバス番号を問わずに自アドレス割り当てを強制化するオプションも用意しました。この場合先頭アドレスの上位4BITをそのままで、一番高位のアドレスに固めて再配置します。
ただ、この処置はATAコントローラのみに対してのものなので、他デバイスも修正するにはまりもさんのCHACHAがお薦めです。事実、これをしないとSUPERCHANPON2ではWindows2000インストール中に4枚目FD読みこみ終了時に青画面が出ました。具体的処置はHDDを立ち上げてからメニュー終了するまたはHSBでFD起動することになります。ただし、当BIOS使用条件下で仮に何か問題が起きた場合は絶対にまりもさんにご迷惑をおかけしませんように。私の方の問題である可能性が高いし、ハードウェアの相性問題である可能性があるからです。
CHANPON2'TURBO-PCI接続の40倍速のATAPI-CD-R/RWドライブNR9200(NEC)でCD-Rを焼くことで動作を検証しましたが、そのままでは24倍速でさえ転送エラーが16回出ました。これはHiNTチップはきちんとレジスタを設定しないと満足なパフォーマンスが得られないためです。ELOさんが発見されたcache line size書き換え(ブリッヂの0Chを08hに書き換え)をすることで、まともな速度が出せます。まりもさんのCHACHAに設定項目があります。書き換え後はCD-R書きこみではノーエラーで40倍速書き込みができるようになります。本BIOSは起動阻害を避けるためレジスタ書き換えをしていませんが、そのためデフォルトではHiNTチップは性能がほとんど発揮できませんので、ご自身の判断で「高速化」なさることを強くお勧めします。
なお、これを落としたけど動かなかったとかボードがごみになったとかHDDの内容が飛んだとかの一切の損害について責を負いません。また、ソフトの改善の義務も負いません。つまり苦情は一切受け付けませんし、サポートはいたしません。要望は聞くだけ聞きますが、基本的に自己責任でどうぞ。
大きいものでは1MBIT(128KB)のROMが載ってるんですが、BIOS自体は初期化時で現在のところ8KB、ランタイムルーチンは2KBくらいしか使わないんですよね(汗)。今の所、まりもさんからアドバイスを頂き、単品でいくつかのプログラム(自分のIOアドレス修正やPC/AT互換機コード実行阻止)を載せていますが、ITFでないとできないことっていくつかあるはずなので、いろいろ便乗すればいいのになーとか思うわけです。PCI拡張ROM一般的にユーザーのプログラムを複数ロードする呼び出しの規約を誰か事情の詳しい方が定めてくだされば、使い方が広がるように感じるんですが。私はそれほど博識ではありませんので、適当に定めると混乱のもとでしょうね。(^^;