PCIブリッジ下のデバイスのリソース割り当てを修正したりPCIホストブリッジの設定をおこなうプログラム

PCISET Version 1.30

2024.12.19  Copyright(C) 2010,18-24 まりも

1.このプログラムの目的

 PCI-PCIブリッジを搭載したボードや、USB2.0ボードのような「マルチファンクションボード」は、PC-9821に挿しても正常に動作しない場合があります。これは、システムBIOSが誤ったリソース割り当てを行なっていたり、なにも設定をしていないことが原因です。

 本プログラム"PCISET"は、システムBIOSに成り代わって、その不適切なリソース(メモリ空間アドレス,I/Oアドレス,IRQ)の割り当てを、可能な限り修正します。そのほか、PCIホストブリッジに通常おこなわれていないいくつかの設定も行うことができます。

 本プログラムは、システムの起動中、ハードディスクのIPLが読み込まれるときに作用して問題を解決しますので、Windowsに限らずどのOSでも有効です。PCI-PCIブリッジやマルチファンクションデバイスが存在しない環境で本プログラムを組み込んであっても、とくに問題はありません。取り外しが面倒ならとりあえず組み込んでおいてもかまいません。

 動作対象はPCI BIOS 2.1に"機能的に準拠"の機種です。初代Xa,XtなどではIRQの設定はできません(Xa7以降の機種からOKと考えられる)。SV-98/2やPC-9821Xf、St、EPSON機にはまったく対応していません。

2.仕様ならびに使い方

[組み込み]

 バージョン1.10から、IPLwareが必要になりました。まずはIPLwareもダウンロードして、IPLware.exeを用意しておいてください。

 アーカイブファイルを解凍すると次のファイルが作られます。
PCISET.TXT 説明テキストファイル
PCISET.BIN IPLware
SETCBIO.EXE PCISETカスタマイズ用プログラム

 PCISET.BINは、MS-DOS実行プログラム形式ですが、「IPLware」です。PC-9821のハードディスクの起動メニューIPLに組み込まれて動作します。OSが起動する前に作用し、OSの種類には依存しませんが、組み込み時にはMS-DOSか、Windows9xのDOSモードかsafeモードが起動できる環境が必要です。

 MS-DOS(Win9xのMS-DOSモード起動)のコマンドラインから、

IPLWARE PCISET.BIN

とタイプしエンターキーを押します。拡張子は省略できません。 組み込まれるハードディスクは、メモリスイッチで指定されている起動装置です。 そうではないハードディスクに組み込みたい場合は、nで応答して下さい。 組込先のハードディスクの選択メニューが出ます。
[組み込みの解除]

IPLWARE -r PCISET 

というようにオプション -r (/r でもよい)を付けて起動します。 IPLware一般の詳しいキー操作方法や動作原理については、別途IPLwareの 説明書をお読み下さい。ここではこれ以上触れません。

[動作のカスタマイズについて]

 IPLwareでの初回起動時に、下記のように、本プログラムの動作オプションを設定する問が出ます。

  動作オプションを設定します。「する」「しない」を矢印キー(←→)で選択してください。

左矢印キーまたはyで応答すると各項目は「する」ほうに設定され、 右矢印キーまたはnで応答すると、「しない」ほうに設定されます。 二回目以降の起動時には、

  動作オプションの設定状況を表示しています。(SHIFTキー押しで表示保持)

という画面になります。これが表示されている間にSHIFTキーを押し続けていると、現在の設定を確認することができます。このときHELPキーを押してからSHIFTキーを解放すると、動作オプションの設定画面に入ることができます。動作オプション設定画面での各設定の質問の意味は次の通りです。設定内容は PCISETの空きエリアに保存され、次回起動した時にも設定は保持されます。

  本体スロット上(BUS#0)のデバイスのI/Oアドレス再設定をしない

 「する」に設定するとオンボードのPCIデバイスのI/Oアドレスを整理します。極力I/Oアドレス帯をPCI-PCIブリッジのために空ける ような割り当てを行ないます。したがってかなり複雑なPCIバス構成でもリソースの修正がなされるようになります。ただしブートデバイスの場合は I/Oアドレスの変更をすると起動できなくなるため、どちらに設定してあってもI/Oアドレスの変更は行われません。

  本体スロット上(BUS#0)のデバイスのMEMアドレス再設定をしない

 通常は「する」を選択しておいてください。「しない」に設定すると、PCI-PCIブリッジ配下のデバイスしかメモリアドレスの設定は行いませんが、 それとオンボードスロットのデバイスのメモリアドレスとの競合や矛盾が起こる場合があります。

 本体スロット上(BUS#0)のデバイスの Cache Line Size を設定しない

 通常は「する」を選択しておいてください。とくに不都合は発生しません。SATAやSCSIハードディスクの書き込みが高速化できる場合があります。PC-9821St20では「しない」に設定してください。

  RvII26,RsII26におけるMWI動作を禁止しない

 RvIIではチップセットとデバイスとの相性が問題になる場合が多いです。HiNT製PCI-PCIブリッジを使用したUSB2.0を含むボードや、VIA のUSB2.0 ボードの場合に、USB2.0ストレージが正常に動作しないことを確認しています。

 このような場合は、禁止「する」 で応答して様子を見てください。ただし転送速度は遅くなります。RvIIかどうかは実行時に自動判別されますので、RvII以外の機種で実行されている場合は、どちらに設定してあっても、禁止「しない」の状態となります。

 VGAデバイスのコマンドレジスタを応答不可にしない  *新設

 バージョン1.10で新設された設定です。通常は「しない」にしますが、一部のPC/AT用ビデオカードでは「する」に設定することで、グラフィックドイライバが動作するようになると思われます。しかし「する」に設定すると、オンボードのグラフィックデバイスが動作しなくなる可能性が高いので、オンボードとPCIビデオカードの併存はできなくなるかもしれません。

 PCIバスのパリティチェックをしない

 通常は「しない」を選択しておけばよいと思われます。機種によってはバスのパリティチェックを「する」にしても無効となります。とくに問題はないのにパリティエラーが発生する機種もあるので、「する」にすると正常に動作せず、Windowsのブルースクリーンエラーが発生することもあります。

  CバスデバイスのためのIRQ強制確保(IRQの再割り当て)をしない

 通常はIRQの再割り当てを「しない」を選択してください。この場合、システムが割り当てた状態に従ってIRQは設定されます。いっぽう再割り当てを「する」に設定すると、ブートデバイス以外のIRQを極力まとめてIRQの共有化をはかります。CバスPnPボード用に空きのIRQを予め確保しておきたい場合には、「する」の設定にしてください。IRQの共有で不都合が発生する場合(たとえばWindows9xが起動しないなど)には「しない」を選択してください。PCI BIOSのリビジョンが旧い機種、およびPC-9821StではIRQの設定ができないという警告が出ます。この場合は再設定はできませんが動作は可能です。

 PCIデバイス用にIRQ4やIRQ14を強制確保しない

 通常は「しない」を選択して下さい。「する」を選ぶと、IOLOCK機能により1stCCUやプリンタを使用しない場合、IRQ4やIRQ14をPCIで使用できるようにします。しかし既にそれらのデバイスドライバがインストールされている状態でIRQを移動すると、OSが動作しなくなる可能性があります。「する」を選択するのは、CバスのボードでIRQ3,5,6,9,10を使い切ってしまっているような場合です。なおこのオプションで「する」を選択すると、自動的に前のオプションも「する」に設定されます。

 SCSI/SATA BIOS領域のキャッシュや高速化をしない

 通常は「する」で構いません。これによりBIOSディスクアクセスが高速化します。2倍くらい速くなることがあります。BIOSを使わないOSでは意味を持たないので、Windowsでしか使わない場合は「しない」に設定してもよいでしょう。※PC-9821Stでは「しない」の設定にしてください。

 オンボードIDE/UIDE/SATA BIOSを無効にしない

 PCIとはとくに関係ない機能です。SCSIを使っていてIDEやSATAのディスクを増設するとドライブ番号が変化して困るような場合に使います。ただし、ディスクドライブをBIOSで無視するようにしても、存在が取り消されるわけではないので、Windowsでは存在を見つけられてしまいます。(このオプションは将来廃止や変更する可能性があります)

  PCIデバイスリストを表示しない

 「する」を選択すれば全デバイスリストを1秒間程度表示します。デバイスリスト画面は白地に黒字です。リストの表示を保持したい場合には、表示中にSHIFTキーを押し続けていてください。いっぽう、表示「しない」を選択すれば、表示しないぶん起動に要する時間の短縮になります。

3.注意点−より確かな動作のために−

● I/Oアドレスについて

 PCI-PCIブリッジは、配下のデバイスのために1000hバイトものI/Oアドレスを占有します。PC-9821では、2000h,4000h,6000h,C000h,D000h,E000h のゾーンが使用できます。しかしこれは多数のPCI-PCIブリッジが存在する場合には十分な数ではありません。とくに、多段のPCI-PCIブリッジが存在していてI/Oアドレスを要求する場合、連続アドレスを割り当てる必要がありますが、使用可能なのは、C000h〜E000hのひとつしかありません。ですからI/Oアドレスを消費しやすいデバイス構成は可能な限り避けるように、工夫が必要です。

 I/Oアドレスの連続割り当てができない場合は、デバイス構成を変更するか、逆にオンボードスロットのPCIデバイスのI/Oアドレスを動かして、空きを作るしかありません。オンボードのデバイスのI/Oアドレスを移動するオプションを有効にすると、7000h〜に集約します。

 また、このオプション機能を使わなくても、PCIセットアップユーティリティを使えばオンボードスロットのデバイスのI/Oアドレスを動かすことができます。その際は、2000hゾーンや4000hゾーンにするとよいでしょう。これによりC000h〜E000hゾーンにうまく空きができる場合があります。とくにブートデバイスの場合は後からI/Oアドレスを移動できないため、PCIセットアップユーティリティを使う方法しかありません。しかしながら、PCIセットアップユーティリティを使ってリソースを固定すると、システムが起動しなくなるという問題が起こりやすくなります。

 2つ以上のアドレス帯を要求するデバイス構成のときは、本プログラムが空きをスキャンして、可能な限り多段PCI-PCIブリッジにI/Oアドレスの割り当てを行ないます。しかしブートデバイスについては、そのBIOSが既に稼働していると、I/Oアドレスを強制的に移動することはできません。またこのような場合、同じブリッジ上またはその配下のブリッジに存在するI/Oアドレス使用デバイスも、道連れで使用できなくなります。デバイス構成を工夫する以外に対処法はありません。

 なお 2000h,4000h,6000h,C000h,D000h,E000h のゾーンはCバスのボードでも使われますが、それをシステムに知らせる機構がPC-98にはありません。そこで、特定のI/Oアドレスゾーンには本プログラムが割り当てをおこなわないよう、カスタマイズすることができるようにしました。アーカイブにある SETCBIO.EXE を実行すると、いくつかのアドレスゾーンにPCI用のI/Oアドレスを割り当てないように、PCISET.BINがカスタマイズされます。

● PCIバスの段数とブートBIOS

 1段目のPCI-PCIブリッジ直下にある SCSIやATAなどのストレージ系、VGAデバイスは、ブートBIOSのROMをスキャンされます。このため、正しくPC-9821向けに設計されたボードのROMであれば、起動しようとします。そうでないボードの場合はハングアップします。いっぽうPCI-PCIブリッジの2段目以下にある場合はROMは読みに行けない欠陥があります(システムBIOSの作りが不完全なため検索されない)。またリソース割り当ても2段目以下のデバイスについては全くなされないか完全に誤った設定になってしまいます。

 本プログラムでは、PCI-PCIブリッジが2段となっている場合でも適切にリソース割り当てを行うことができます。玄人志向製CHANPON-ZERO上にさらにブリッジ搭載ボードを載せたり、PCI-PCIバスブリッジによるPCI拡張ボックスなどの装置でも動作します。

● PCI BIOSの最大バス番号

 PCI BIOSのファンクションが返す最大バス番号の値は、システムBIOSの不正なコンフィギュレーションの結果、バス番号を正しく通してもそのままとなります。一般に本来の最大バス番号より少ない値を返して来ます。そこで本ソフトでは、PCI BIOSの当該ファンクションが正しい値を返すよう、BIOSの動作にも介入して修正を加えることにしました。これにより、最大バス番号を調べるシステムユーティリティなどは正しく動作するようになります。

● SC-UPCI系SCSIアダプタ

 SC-UPCI系SCSIアダプタでは、オンボードスロットのデバイスのメモリアドレスを再設定可にするとハングアップすることがわかっています。またこのアダプタはメインメモリのサイズが512MBを超えているときも正常に動作しないことが知られています。そのため、本プログラムでは、LSIロジックチップのデバイスをシステム内に見つけたときは、メモリアドレスの再設定を行ないません。

● Windowsにおけるビデオカードの動作

 本プログラムは、PCIバスシステムのリソース割り当てを修正することが目的です。PC-98対応でないビデオカードを動かすことを目的としたプログラムではないのでご注意ください。しかしバージョン1.10からは、一部のVGAビデオカード用に、「VGAデバイスのコマンドレジスタを応答不可にする」設定が追加されていますので、それをお試し下さい。

● カレンダ時計暴走警告

 PC-98では、カレンダ時計が暴走状態にあると、OSやアプリケーションが動作しなくなり、その理由がわからなくて悩むことになります。これはバックアップ充電池切れでよく起こりますので、たまにしか使わない人には困った問題です。そのために付加的機能として、カレンダ時計が暴走状態にある場合は警告をし、仮の日付けを設定するようにしています。この警告が出たら、OSの日付時刻設定機能(MS-DOSならDATE,TIMEコマンド)で正しく現時刻に修正してください。

● FD-IPLwareへの対応とIPLWuniへの非対応

 バージョン1.25より「FD-IPLware」に対応しました。設定情報をFD-IPLwareを起動したフロッピーに保存します。なお従来からIPLWuniには対応できませんので、IPLWuniでバインドしないようにしてください。

● 使用できない環境

 次のような環境ではおそらく使用できません。
機種によっては存在する「拡張割り込みモード」に設定されていると正常に動作しない可能性があります。1024MiBを超えるメモリを搭載(エミュレータでは可能)している場合も動作しません。

4.お約束

 このプログラムは「フリーソフト」ですが、著作権は作者にあります。著作権者の意向を無視したことはしないでください。たとえば不特定多数がダウンロードできる場所への無断転載は禁止とします。転載に当たってはかならず許可を得て下さい。

 本プログラムを使用する場合は、無責任・無保証とします。すなわちこのプログラムを使用したことによるあらゆる損害、被害、などについて、一切当方は責任を負わないものとします。また使用できなかった場合についても同様です。

ここをクリックしてダウンロードする

旧バージョン1.20のダウンロード

5.改版履歴

2010. 4. 1 1.00 版 【新規作成】
2018.11.13 1.01 版 バス#0上にデバイスがないときのハングアップを修正
2018.11.15 1.02 版 バス#0上にデバイスが少ないときのIRQ割り当て失敗の問題を修正
2019. 8.15 1.10 版 IPLware単体に変更、VGAデバイスのコマンド応答不可の設定を追加
2019. 9.15 1.15 版 機種判別の誤りを修正、PCIデバイスリストのデザインを変更
2021. 2.20 1.20 版 PCIパリティエラーのチェック可否の項目が現れない問題を修正
2022. 5.22 1.25 版 FD-IPLwareに対応し、FDに設定情報を書き込めるようにした。
2024.12.19 1.30 版 1024MiBのメモリ搭載時にメモリが減ってしまう問題の修正、深さレベル2以上のバス上のサブファンクションを全てチェックするようにした

←戻る