Getitf98.exe 使用説明書 V3.10

Copyright(C) 2002-2023 まりも(DOSsoft)

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

■ このプログラムの目的および開発経緯

 このプログラムは PC-9821シリーズのITF/BIOSのROMをファイル化して保存することを目的としたものである.このプログラムは,1998年頃のNiftyのPCフォーラムであるFNECHARD,FNECSOFTでの貴重な情報交換の産物である.作成に当たっては,T.A.Labs.さん原作のプログラムgetromを参考にしているが,多くの機種に対応させるために,プログラムの構造は原型を留めないほどに大幅に改変している.hanaさんの解析情報をもとに,4MBit ROMの下位2Mbitを取り出すことができるようにしてある.バンクの配置は某マイコンクラブ Fさんの情報による.以上のhandle nameの方々に謝意を表する.2023年12月のバージョン3.00からは32bitメモリ空間最上位に現れるROMイメージを読むことで,PCIチップセットの種類に依存しないようになっている.

■ 使い方

 MS-DOSコマンドラインから起動する.仮想86モードでは使用できない.PC-98のITF/ROMには32KByteごとの「バンク」が存在しており,それに対応したBANK*.BIN という32KByteのファイルが 4個,8個または16個作成される.通常の機種では BANK0..7までであるが,一部機種では 8..Fまで作成される.

 ROM内の物理配置について詳しいことを知りたい方は,こちらのコンテンツも参考にされるとよいだろう.PCIバス登場より前の機種についても解説されている. PCI機種についての標準的なレイアウトは以下のとおりである.
バンク 内容
<ROMとしての最上位アドレス>
BANK4 ITF F8000h (Top boot block)
BANK5 BIOS E8000h (N88BASIC)
BANK6 BIOS F0000h (system)
BANK7 BIOS F8000h (system)
BANK0 PCI/PnP BIOS D8000h
BANK1 機種によって色々(電源管理マイコン,APIC制御/Microcode update )
BANK2 デバッグ用コード?(MMDUMP)など
BANK3 IDE/ system setup menu D8000h
==<ROMとしての最下位アドレス(2Mbitの場合)>==
BANKC --- 何もないかまたはCanbeグラフィック起動画面のデータと思われるもの
BANKD ---
BANKE ---
BANKF ---
BANK8 ---
BANK9 ---
BANKA ---
BANKB Microcode update data (P6 machine only)
==<ROMとしての最下位アドレス(4Mbitの場合)>==

 PC-9801DXなどの80286機ではBANK4,5,6,7しか出力されない.しかしCPUアクセラレータを使用してi486相当にしている場合は判別ができない. またPC-98RLのハイレゾリューションモードでも BANK4,5,6,7 相当しかROMは存在しないが,機種判別が難しい.このような機種では コマンドラインオプションとして /4 あるいは -4 をつけることで、4つのBANKのデータを出力できるようにした.なお当該機種では,オプションをつけないと8個の無効な(内容同一の)ファイルが作成されてしまうので注意さrれたい.9801ESやRSやCSでもそのような出力となるようであれば、オプション /4 を試みるとよい.

 画面出力では一部に色のついた文字が表示されるが,標準出力をリダイレクトして得たデータにはエスケープシーケンス文字は含まれないようになっている(バージョン3.10から).

■ 対応機種に関する注意点

・対応機種は基本的に NEC製PC-9801VX以降の機種から最終機PC-9821Ra43までである.

・しかしi486搭載の9821ノートうちREDWOOD,ColdenGateと呼ばれるチップセットを搭載した機種には対応しないしないことが判明している.98アーキテクチャと大きく異なる点があるためである.H98シリーズにも対応できていない.対応できない機種では,ファイルは作成されても全てのBANKのデータが同一となる.

・EPSON製PCではハードウェアの相違点として, 伝統的な98のメモリ管理I/Oポートである 043Dh,043Fhの仕様が同じであれば動作するが, そうでなければ全く動作しない.そのため EPSON IDチェックを行って実行を中止するようにしている(初代PC-286MOを除く).

・80286機はCPUで判別しているため,i486相当のアクセラレータを搭載していると,正しく動作しない.オプション /4 をつけて実行する必要がある.

・PC-9801R,Dシリーズ機ではBANK0,3 は未使用であるという情報がある.また286機〜486機ではBANK2の最後の4KBに SASI DISK BIOSが格納されている.SOUND BIOSはBANK2の先頭または(および)BANK1の後半16KBにある.それぞれの機種でどちらが実際に現れるのかははっきりしていない.

・A-mateのハイレゾモードとノーマルモードでは,読み出される内容が異なっている.BANK6,7が F0000〜のシステム BIOS ROM内容に,BANK3がIDE BIOSになると考えられる.ハイレゾモードでもITFはノーマルモードのBANK4が使われている(初代Ap,As,Aeでは不明).それ以外のバンク内容は,ハイレゾモードでは無意味か空(FFh)のようである.なおBANK0,BANK3,BANK4はハイレゾモードで得た場合とノーマルモードで得た場合の内容が同一である.メインのITFとIDE BIOS, PnP BIOSはシステム稼働中に頻繁に切り替わるものであり,現在どちらのモードにいても同様に実行できるようにするためと思われる.

・ノーマルモードでハイレゾモード用の内容を読み出すという方法は明らかになっていない.ハイレゾモードでは回路全体のすげかえとなるので,ROMのみのバンク切り替え機能がない可能性もある.しかしその場合,フラッシュROM機でもROMアップデート機能は存在しないことになる.実際PC-9821AnのPnPアップデートディスクではハイレゾモード固有部分はアップデートできない.

・PentiumPro,IIマシンでは 4Mbitの場合でも 意味のあるデータはBANKB.BIN しかないようである.CanbeにおけるBANK8..Fは,グラフィック起動時の画面データなどが入っているようである.

・i486機などで4Mbit品が実装されていても実際には2Mbitしか使用されていない機種がある(A18 line無接続).そのような機種ではでは2Mbitぶんの8 BANKしか出力しない.このプログラムで16個のBANKデータが出力されるのは、9821mate-R Rvシリーズ、Cx2以降のCanbeだけである.98CEREBに関しては不明である.

■ チェックサム情報に関する注意点

BANK 0〜3までのサムは00hでなくて構わない機種がある.およそ第2世代mate,multiとそれ以前のi486機は該当している.PC-9821Ap3/As3も同様である.またノート機の多くも該当している.そのため表示されるサム値を合算して00hになっていれば問題はない.それが判明している一部機種については,通しのサム値(00hで正常)を表示するようになっている.

・ハイレゾモードにおいては各BANKのサムが00hでなくても正常である機種が多い.BANK 0〜3および 4〜7で通してサム値が00hであれば問題はないとみられる.

・一般に98エミュレータが必要とするのはITFではなく, システムBIOSの部分, すなわちBANK5,6,7の96KBのデータである. 98エミュレータに付属しているようなROM dumpツールはそれを出力しているが,BANK7の先頭にはそれで得たデータと一致しない部分がありうる.これはブートの過程で,ワークエリア(F8E8:0000〜003Fh)としてRAM化BIOSに書き込まれる情報があるためである.実際かなり重要な情報がありNECCD*.SYSなどのドライバが参照することが知られているので,本プログラムで得たBANK5,6,7を使うよりは, エミュレータ付属のROM dumpツールを使った方がよい.

■ 技術的情報

 バージョン2.30までは,チップセットのメモリコントローラの仕様に合わせてSYSTEM BIOS域のF800:0000 をRAMからROMに切り替え,割り込みを禁止のうえI/O port 043Dhを制御してITF を表に出し,さらにI/O 043Fhでバンクを切り替えるということを行っていた.しかしこの方法では仕様が未知のチップセットに対応できないという弱点があった.そこでバージョン3.00では,4GB空間の最上位FFFF8000hから読み出すこととした.ここには15-16MB空間最上位や1MB空間最上位と同じイメージでROMがマッピングされていることが2023年12月に判ったためである.1MB空間と異なりRAMが出現することがないし,CPUのキャッシュを切ったり,割り込みを止める必要もない.

 NEC製の80286搭載のPC-9801シリーズでは4GB空間が存在しないが,SYSTEM BIOS域にRAMも無いため,直接F800:0に現れるメモリをバンク切り替えで読み出している.また当該機種では I/O 043Fhが無く,ITFには複数バンクはないことが判明しているため,BANK4..7までを出力するようにしている.なおこれはCPUで判定しているため,CPUを486相当に換装しているとBANK0..7までの無効なデータが出力されてしまう.そのような機種では コマンドラインオプション /4 をつける必要がある.

 ソースから実行プログラムを作成する方法は,itfsrc31.zipを解凍して得られるファイルのうち, getitfp.sを MASM 6.00でアセンブルすることである.普通には tinyモデル(getitfp.com)のプログラムが作られる.対応しない機種へ対応するためにソースプログラムを改変する際は,メモリバンク制御部が機種固有であるので,留意していただきたい.go_ITFmode/go_BIOSmode のところをEPSON機に合わせて書き換えればEPSON機にも対応可能となるであろう.いっぽう9821ノートのREDWOODチップセット機では大幅な書き換えが必要と考えられる.

■ 更新履歴


2003-09-21 2.03h A-mateハイレゾモードでも使用できるようにした.
2004-12-05 2.05 (年末に公開)
2005-01-03 2.06 St20,St15に対応(2月末に公開)
2019-02-20 2.07 キーボード入力・画面出力でBIOS・DOS機能を使うように変更
2022-01-10 2.10 "9821"チェック廃止で対応機種が9801機種に拡大
2022-02-11 2.11 80386機でも動作するようにした
2022-04-20 2.20 4Mbitフラッシュ搭載機判別改良,EPSON機判別(実行回避)追加
2023-07-25 2.30 Na7/H3に対応,一部機種のBANK 0-3通しのサム0の表示を追加
2023-12-09 3.00 4GB空間最上位から読み出すことで機種依存度を低減させた
2023-12-20 3.10 286機用オプション /4の追加、画面標準出力対応、EPSON機に関する記述の修正

[戻る]