IDEflags

2003/02/20 更新

ダウンロード

IDEflags について



         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/

戻る

Copyright (C) 2002-2003 K.Takata