ACPI BIOSには さまざまな情報があり、さまざまなテーブルがあります。 本プログラムはそれらを表示したり、情報を抜き出してバイナリファイルで 保存します。
おそらく、ACPIテーブルの改造実験をしたい人に有用なプログラムです。 それ以外には、とくに好奇心で動かす以外の有用性はないかもしれませんが、 入手したマザーボードが、不適切に改造された物であるかを調べるということに 応用できるかもしれません。というのは、ACPI BIOSが不適切な内容の場合、 システム起動(ディスクブート)まではできてもWindowやLinuxがどうやっても 正常に起動しない状態となるかもしれないからです。 いっぽう昔のMS-DOSはACPIなど無関係に起動できますので、MS-DOS上で調べら れるツールの存在は、全く無意味ということはないでしょう。
MS-DOS(Windows9xのコマンドプロンプト起動のDOS)で動作します。 WindowsNT系やWindows9xでも、いわゆるDOS窓(DOSプロンプト)では 動作しないので注意してください。またEMM386の仮想86モードでも 動作しません。必ずリアルモードのDOSで実行してください。なお HIMEM.SYSは組み込んであって構いません。HIMEM.SYSが組み込まれて いても、即時プロテクトモードになるわけではありません。
まずはLHAアーカイブを解凍してACPIVIE.EXEを取り出し、 カレントディレクトリに置いてください。 DOSコマンドから ACPIVIEWと打ってENTERキーを押します。 情報表示だけでなくファイル保存もしたいときは、コマンドライン オプション -S をつけます。すなわち ACPIVIEW -S とタイプします。 大文字か小文字かは問いません。またコマンドスイッチ文字は、 - でも / でも構いません。
もともと本プログラムを必要としている人にはあまり説明の必要は ないかもしれませんが、一応解説しておきます。詳しいことはネット上に 情報がたくさんあります。またMS-DOS以外のOSでは、このプログラムと 同等のことができるソフトウェアは多数あると思われます。
まずACPIテーブルの情報の入り口は、RSDTまたはXSDTというテーブル (RSDT: Root System Description Table, XSDT: XSDT eXtended SDT) にリストとして格納されています。RSDTは32bit、XSDTは64bitのアドレス値が 格納されているだけであり、そのアドレスに行くと、ACPIのさまざまな データ本体が置かれています。ACPIの各データは、4バイトのキーワード から始まる構造データです。そしてその基本的なヘッダ構造(名前、 チェックサム、リビジョン、OEM情報など)は、RSDT,XSDT自身も同じです。
このプログラムでは、まずRSDTの内容を表示/ファイル保存します。 続いてRSDTに書かれたエントリ(ポインタ)が示す先のACPIの 各情報を表示します。またはオプションによりファイルに保存します。 続いて同様にXSDTの内容を表示またはファイル保存します。 以下、H67マザーボードで実行したときの表示例を示します。 なおこのマザーボードは AMI BIOSで、メーカー製PC組み込みのものでは ありません。
nameはACPIのデータの名前(キーワード)です。 addressは各ACPIデータが存在する32bitアドレス(*)、 byteはそのバイト数です。
OEMIDというのはそのとおり、OEMtblIDというのは OEM table IDと呼ばれる マザーボードベンダ固有文字列です。MFTIDは製造者IDで、MSFTはおそらく Microsoftでしょう。多くの場合、BIOSの開発元であるAMIやAWRDといった 文字列が入っています。OEMrevというのはリビジョン番号ですが、多くの場合 何かの日付のような値に見えるものが入っています。CSBはチェックサムバイト の値です。SUMはそれを含んでデータ全体のチェックサムです。通常は0となって いるはずです。
4行目は、RSDTがアドレスDAB95028hに存在することを意味します。 右端に数字8がありますが、これはRSDTにデータの個数が8個あるという ことを意味します。そのデータは、5行目の FACPからの8個に対応します。
14行目は、同様にXSDTの情報です。通常ならデータ数はRSDTと同数のはずです。 FACP以外は、通常RSDTに存在するものと同一です。存在アドレスが等しくなっています。
(*)64bitアドレスとなっていても、2012年段階のパソコンでは32bit(下位4GB) の範囲内にしか存在しないようなので、上位32bitは表示省略しています。 値としては上位32bitにはゼロが入っています。
メーカー製PCの例ではこのようになっています。これはNEC(VersaPro)のPCの例です。SSDTが複数あるほか、SLICというテーブルがあります。
こちらはlenovoのPCの例です。OEMIDが全てlenovoになっています。
オプション -S を付けた場合は、名前のところが実際のファイル名として拡張子 .BINが付いた形で表示されます。ファイルは実行カレントディレクトリに作成 されます。既に述べたように、RSDTとXSDTとでは、FACP以外は 同じアドレスを参照しているので、ファイル名は同一内容です。ただしFACPのみ 32bit用(RSDT)と64bit用(XSDT)とで異なるので、RSDTで参照される32bit用のほうを FACP_32.BINというファイル名に変更して保存します。
作成されるのはメモリ上と同一のバイナリデータですが、ACPIのデータの一部は 簡易言語で書かれているので、テキストのようにも見える場合があります。 出力されたACPIの情報が適切かどうかの判断は各自で行ってください。 このプログラムで判ることはチェックサムのみです。それ以上のことは 私もわかりません。扱えるデータのサイズは最大131040バイトまでです。 それ以上の場合は誤動作する可能性があります。
なお、SSDTは異なる物が複数存在する場合がありますが、Version 1.20からは、 "SSDT"の文字列の次に数字[1..9]を付けることで区別し、ファイル出力します。 (それ以前のバージョンでは出現順序が最後のものしか出力されません)
ファイル保存のときは、DSDTというテーブルも出力されます(バージョン1.30より)。 画面上にもDSDTの諸情報が表示されます。
Core2世代初期のマザーボードでは、RSDTのみが存在し、XSDTが存在しない ものがあります。その場合はRSDTのリストにあるもののみ表示/保存します。
とても旧いマザーボードでは何も存在しません。2行目に、 RSD PTR signature found in 000F0450 のような表示があります。 これはRSDTやXSDTの存在場所を示す表のシグネチャである、 "RSD PTR"という文字列の存在を示すものですが、これがBIOSに入って いない機種では、ACPIテーブルは参照されずに異常終了します。
なおこのキーワード'RSD PTR 'はBIOSの E0000~FFFF0hに存在すると仮定 して検索します。その他の位置に存在するマザーボードには対応していません。
このプログラムを実行させたことにより何かの損害が発生するという ことは、全くないと考えられますが、万一そのようなことを訴えても、 当方は一切責任を負わないものとします。それを条件にこのプログラムの 使用を認めるものとします。またこれ以上のこのプログラムの説明責任も 負わないものとします。
著作権は保持します。著作権および著作人格権侵害のない常識的な範囲で、 上記の免責条件を満たした場合には、コピーと使用が自由にできる 「フリーソフトウェア」とします。しかしこのプログラムを公衆送信できる 状態に置くこと(転載)は認めません。このプログラムの公開が終了した 場合でも公衆送信できる状態での再配布を認めません。 連絡先メールアドレスは、 トップページに記載されています。