2003/02/20 更新
IDEflags Ver.0.02 Copyright (C) 2002-2003 K.Takata 1.概要 PC-98 の System BIOS 領域には IDE 機器の接続状態を示すフラグが存在 します。しかし、セカンダリ・スレーブに CD-ROM ドライブをつなげると、 このフラグが間違った値にセットされるせいで NECCDM.SYS が動作しません。 IDEflags は、このフラグを正しい値に修正し、セカンダリ・スレーブにつ なげたドライブが NECCDM.SYS で使えるようにします。 2.動作環境 ・PC-98 用 Win9x の MS-DOS モード。(MS-DOS 6.2 以前では動作未確認) ・Intel 製チップセット、あるいは Wildcat を搭載した PC-98。 4.使用方法 4.0. 動作チェック コマンドラインから、ideflags.exe を実行してください。 > ideflags IDEflags Ver.0.02 Copyright (C) 2002-2003 K.Takata Device0: IC25N040ATCS04-0 Device1: -- Device2: -- Device3: TOSHIBA DVD-ROM SD-R2212 IDEflags: 0x05 -> 0x09 このように接続しているデバイス名が表示されるはずです。デバイス番 号とデバイスの接続方法は次のような対応になっています。 Device0: Primary-Master Device1: Primary-Slave Device2: Secondary-Master Device3: Secondary-Slave IDEflags: で始まる行には、IDE 接続フラグの修正結果が表示されます。 この例では、値が 0x05 から 0x09 に修正されたことを示しています。こ こで再度 ideflags.exe を実行すると、その行は、 IDEflags: 0x09 -> 0x09 というように表示が変わるはずです。もし、2度目の実行のときに、1度 目の実行の結果が反映されていないようならば、その機種では IDEflags は使えません。 4.1. config.sys への組み込み config.sys の neccdm.sys の行よりも先に ideflags.exe を組み込んで ください。なお、ideflags.exe は処理が終わればメモリから消えますので devicehigh を使って UMB に組み込んでも意味はありません。 例) ・config.sys dos=high,umb device=himem.sys /testmem:off device=emm386.exe ram device=ideflags.exe devicehigh=neccdm.sys /D:CD_101 lastdrive=q ・autoexec.bat @echo off mscdex /L:Q /D:CD_101 Win95 OSR2 の neccdm.sys を利用している場合、あるいはデスクトップ マシンで Win98, Win98SE の neccdm.sys を利用している場合は、これでセ カンダリ・スレーブに接続した CD-ROM ドライブが使えるようになるはずで す。 ノートで Win98, Win98SE の neccdm.sys を利用している場合はこれだけ では不十分です。4.2. に進んでください。 4.2. ノートで Win98, Win98SE を利用している場合 Win98, Win98SE の neccdm.sys は、ノートではセカンダリ・スレーブを チェックしないようになっています。そこで、セカンダリ・スレーブもチェ ックするように以下のパッチを当てる必要があります。 neccdm.sys 00003823: 02 → 04 拙作の KTPatch(*1) を使えばパッチ当てが簡単に行えます。ktpatch.exe, neccdm.sys, neccdm98.ktp の3つのファイルを同じディレクトリに置いて、 > ktpatch neccdm98.ktp と実行してください。 FILENAME NECCDM.SYS 00003823: 02 04 と表示されれば成功です。 (*1) http://member.nifty.ne.jp/k-takata/mysoft/ktpatch.html 5.技術的事項 IDE 接続状態フラグは、F8E8:0010 にあり、次のようになっています。 bit0 Primary-Master bit1 Primary-Slave bit2 Secondary-Master bit3 Secondary-Slave デバイスが接続されていると上に記したビットが立ちます。例えば、 Primary-Mater に HDD をつなぎ、Secondary-Master に CD-ROM ドライブを つないでいると、bit0 と bit2 が立つのでフラグの値は 0x05 となります。 Secondary-Slave にデバイスを接続した場合は、本来は bit3 が立つはず ですが、機種によっては代わりに bit2 が立ったり、あるいは bit3 も bit2 も立たないことがあります。例えば Ls150 C2 の場合は bit2 が立ち、 Ra20 の場合は bit3 も bit2 も立ちません。 neccdm.sys は、このフラグの値を参照して接続されているデバイスを見 つけようとしますが、フラグの値と実際の接続状態が違っているためにデバ イスが見つからず、結果的に Secondary-Slave に接続されたデバイスが認 識できないというわけです。 ちなみに、Ls150 C2 のように、Secondary-Slave に CD-ROM ドライブが 接続されたときに bit2 が立つ場合には、ideflags.exe を使わずとも neccdm.sys にパッチを当てるだけでも Secondary-Slave に対応させること ができます。01h 04h 02h 08h というバイト列を neccdm.sys から探し出し て、それを 01h 04h 02h 04h に書き換えれば OK です。Win98, Win98SE の neccdm.sys の場合は2ヶ所見つかりますが最初に見つかった方を書き換え てください。4.2. で示したパッチも同時に当てる必要があります。(この パッチと ideflags.exe は共存できません。また、Ra20 のように bit2 が 立たない場合はこのパッチは使えません。したがって、この方法はあまりお 薦めしません。) Win95 OSR2 の neccdm.sys は、Device0〜3 のすべてに対してデバイスが 接続されているかをチェックしていますが、Win98, Win98SE の neccdm.sys は、ノートマシンで使うときは、Device1〜2 しかチェックしないようにな っています。4.2. で示したパッチを当てることで、Device1〜3 をチェック するようになります。ノートだと Device0 には HDD が接続されることにな るので、Device0 をチェックしないようにしたのは妥当ですが、Device3 の チェックまで省いてしまったのは軽率だったと言わざるを得ないでしょう。 neccdm.sys は、ノートかデスクトップかの判断を F8E8:0005 の bit4 を 見ることで判断しているようです。bit4 が on の場合はデスクトップ、off の場合はノートのようです。ただし F8E8:0005 の bit4 は、F8E8:0005 の bit5 が立っているときのみ有効なようです。(F8E8:0005 の bit5 は、 1/100 タイマーが有効かどうかを示すフラグでもあります。) 6.コンパイル方法 コンパイルには LSI C-86 3.30c 試食版と MASM 3.0 以上が必要です。そ のほかに拙作のStbhdr(*2) を利用しています。コマンドラインから以下の ように入力すればコンパイルできるはずです。 > make -f ideflags.mak (*2) http://member.nifty.ne.jp/k-takata/mysoft/stbhdr.html 7.更新履歴 2002/12/04 Ver.0.00 ・最初の公開バージョン。 2002/12/05 Ver.0.01 ・Wildcat 機に対応したつもり。(動作未確認) 2003/02/12 Ver.0.02 ・Wildcat 機に正式対応。 ・デバイスのチェック時間を少し短縮。 8.参考文献など ・トラ技コンピュータ別冊 MS-DOS 基本プログラミング第7集 MS-DOS非公開機能とユーティリティの作成法 中島信行著 CQ出版社 \2,524 ・SYSTEM BIOS および 拡張ROM領域を RAM化する方法 http://homepage1.nifty.com/marimono/software/pmc9821.html ・Technical Committee T13 AT Attachment http://www.t13.org/ d1321r3.pdf : ATA/ATAPI - 5 revision 3 d1410r3b.pdf : ATA/ATAPI - 6 revision 3b d1532v1r1a.pdf : ATA/ATAPI - 7 revision 1a (Vol.1) d1532v2r1a.pdf : ATA/ATAPI - 7 revision 1a (Vol.2) ・トランジスタ技術 Special No.45 PC98シリーズのハードとソフト CQ出版社 ISBN4-7898-3237-6 \1,553 ・トランジスタ技術 Special No.67 パソコン周辺機器インターフェースII CQ出版社 ISBN4-7898-3259-6 \1,752 ・UNDOCUMENTED 9801/9821 Vol.2 メモリ・I/Oポート編 http://www.webtech.co.jp/undoc/ io_ide.txt : IDEインターフェース io_pci.txt : PCI ・TECH I Vol.10 ATA(IDE)/ATAPIの徹底研究 CQ出版社 \2,095 9.注意事項、その他 ・このプログラムはフリーソフトウェアです。 ・このプログラムの著作権は作者である私 K.Takata(高田 謙)に帰属しま す。 ・もしこのプログラムを使用することで何らかの問題が発生しても作者は一 切の責任を負いません。各自の責任で使用してください。 ・アーカイブを変更しない限り配布/転載は自由です。 ・ソースファイルの使用は個人的利用に限り自由です。このソースファイル を利用してソフトを作り公開する場合は、ソースも公開することを強く要 求します。 作者 : K.Takata(高田 謙) E-mail : kentkt@anet.ne.jp, HZL03275@nifty.ne.jp URL : http://webs.to/ken/