========================================== ★この【起動FDセット】は 3枚1セット となっており、  非常事態を迎えた場合などに 通常使われている"起動FD"よりも 【便利で強力な味方】と  なってくれます。  【ADAPTEC Simple_FD-Boot】ディレクトリ で作成した"起動FD" で起動した後は、  起動FD(↑)を挿入しておく必要はありません。    (必要なファイルは Ramドライブにコピーされます。)    ※FD起動時に 2枚目のディスクとして【Sub_Disk.#1】に挿し替えますが、     この中の【主なツールコマンド】も Ramドライブにコピーされます。      (普通は 3枚目を使う事は まず無いでしょう。)  起動完了後は  【Sub_Disk.#1】を挿入したままで ほとんど用が足ります。  【Sub_Disk.#2】の中には少し特殊なコマンドを入れてあります。 ★挿入しているフロッピーが【起動できないフロッピー】であっても、Format、システム転送  などを実行できます。  (パス設定にAドライブが含まれるので ダミーで何かのFDを挿入しておく必要はあります。) ★フロッピーを挿し替えれば 30種類くらいのコマンドを実行出来ます。   ※"コマンドの使い方" を知っている必要がありますが・・(笑)。    でも、いざという時、役に立たない【"アプリの追加と削除" で作成された起動FD】よりは    ず〜っと頼りになるハズです。 ★3枚のFDを "コピー作成" する時は、どのFDも A:\WIN_DIR\COMMAND というサブディレクトリが  形成されるようにコピーして下さい。  この "ツリー構造" は重要な役割をもっていますので、削除・移動・改名をしないで下さい。  また、FDへのコピー作業は 必ず エクスプローラで行なって下さい。   (Dosモードでコピーすると【重要な "隠しファイル"】がコピーされません。 ) ★1枚目の【ADAPTEC Simple_FD-Boot】は、普通のFDにコピーするだけでは起動できません。  【起動できるフロッピー】にコピーして下さい。(詳細は後述) ========================================== ※以下 【FD】とは フロッピーディスク を意味します。 ※このテキストで説明する【ASPIマネージャ・ASPIドライバ】は Dos用のモジュール  を指します。 ========================================== ★【1st_made】ディレクトリについて。 "アプリの追加と削除" で作成される物と同じものです。 この↑フロッピーのファイルが壊れたかどうか不安な時の「比較チェック」に使って下さい。 【1st_made】のような "起動処理の途中で「FD挿し替え」をさせる Autoexec.bat" の場合は、 起動ファイルを編集するならば、 2枚のFDに存在する Autoexec.bat は 同一物である必要があります。  (違う内容である場合は 起動処理の障害が発生する可能性あり。) ========================================== ★★★【ADAPTEC Simple_FD-Boot】ディレクトリについて。 【1st_made】のFDの "実用性の低さ" を改善し、 重要度の高いファイルだけを集めて 1枚のフロッピーで起動するようにした物です。 ◆ここに置いてある【ASPIマネージャ・ASPIドライバ】は 主としてWin98_SE付属のファイルです。  もっと新しい版のファイルを持っているなら、新しい版の物で上書きして下さい。 ◆Dosで【HDDをフォーマット】する時は、  【ASPIマネージャ・ASPIドライバ】等を なるべく読み込まずに "Dos起動" して下さい。  formatコマンドを実行するには コンベンショナルメモリの "大きな空き領域" が必要です。 ◆【ADAPTEC Simple_FD-Boot】を いきなり【起動できるFD】にコピーしないで、  まず HDDにコピーして下さい。  コピー先の【ADAPTEC Simple_FD-Boot】の中の ドライバと起動ファイルを調節します。  調節が済んだら、【起動できるFD】を空にして このFDにコピーします。   ◇上記の調節の作業内容は、     1.Config.sys と Autoexec.bat の記述内容を調節する。     2."ご自分用のドライバ" を【ADAPTEC Simple_FD-Boot】にコピーする。     3.【別デバイス用の ↑これに該当するドライバ"】を削除する。    です。    その方法を 以下に説明します。  ★★【SCSIカードを接続してない場合】は 調整はすぐに済みます。                     (その場合は読み流して下さい)    このテキストでの "難しい部分" は      1.「このメモリ番地を使うな!」--- という【アドレス指定】の意味と指定方法      2.初めてのカードを装着した時に この↑【アドレス】を FD起動で割り出す操作    の 解説です。 ◆とりあえず、【ADAPTEC Simple_FD-Boot】ディレクトリに 見本の Config.sys・Autoexec.bat が  置いてありますから、この中の "コメント文" を ザ〜っと読んで下さい。 ◆SCSIカードを取付けていない場合は Config.sys の"EMM386.EXE記述" は「初期的な記述」で充分です。  NOEMS 記述を追加した 下に示す記述程度でOKです。 device?=EMM386.EXE NOEMS X=A000-C7FF V                ↑A000-C7FF は【PC/AT標準のビデオカードエリア】  ただし、  多機能なAGPビデオカードが A000-C7FF よりも広い領域を占有する場合は、  X=A000-C7FF の範囲指定を変更して指定した方が良いでしょう。   (これは "SCSIカード装着の有無" に関係無し。)   ("占有領域の範囲" は デバイスマネージャで確認できます。詳細は後述。) この "範囲指定" のやり方を説明するのが 本テキストの中心です。 ◆Dosで【IDEのMO・CD】等にアクセスする場合も 専用のドライバが必要であり、   (SCSI接続のMO・CD の場合よりは簡単ですが)  Autoexec.bat・Config.sys の【"専用ドライバ"を読み込む記述】を編集する必要があります。  これらのドライバは【起動FD】に存在させておく必要があります。  以降の SCSIカードの場合の説明を参考にして、  Autoexec.bat・Config.sys を編集し、必要なドライバを【起動FD】に存在させて下さい。   ※Dosで SCSIカードにアクセスする用が無くても、    SCSIを接続していれば それだけでも Config.sys の"EMM386.EXE記述" は 確認する必要があります。   ※IDE用の Oakcdrom.sys は【Sub_Disk.#2】のルートに格納してあります。 ◆Dosで【SCSIカード接続のデバイス(MO・CD等)】にアクセスするためには、  【SCSIカード専用の"ASPIマネージャ"】と【SCSIカード接続のドライブで使える"ASPIドライバ"】  と、Mscdex.exe が必要です。  これらのドライバは【起動FD】に存在させておく必要があります。  Mscdex.exe はすでに存在しますが、  それ以外の必要なドライバは 自分で【起動FD】に存在させて下さい。    Config.sys には 【"ASPIマネージャ・ASPIドライバ"を読み込む記述】が必要であり、  Autoexec.bat には Mscdex.exe の記述が必要です。   (Config.sys が実行された後で Autoexec.bat が実行されます。)  ・ASPIマネージャは、SCSIカード・SCSIデバイス・ASPIドライバ の【3者間のコントロール】   をします。   従って、Dosで どれか1つのSCSIドライブにアクセスするだけの場合でも   ASPIマネージャは 必ず 読み込ませる必要があります。   複数のSCSIドライブにアクセスする場合でも ASPIマネージャの読み込み は1回です。  ・ASPIマネージャは、特定(あるいは特定のシリーズ)のSCSIカード専用です。  ・ASPIマネージャ・ASPIドライバ の "読み込み順" は ASPIマネージャが先です。  ・ASPIマネージャは、 (ここの説明は Config.sys の説明)    devicehigh記述ではなく device記述で読み込ませる方が安全です。    そして、EMM386.EXE を使う場合は EMM386.EXE記述よりも前に ASPIマネージャを    読み込ませるのが安全です。     ※【devicehigh記述 と device記述 の違い】      devicehigh記述は 「読み込む時に "物理メモリの640KB" よりも上のUMBに読み込む」      という指令です。       (UMBが使えない場合は device記述 と同じ働きとなります。)      device記述は 「読み込む時に "物理メモリの640KB" 以下の領域に読み込む」      という指令です。     ※そして、【UMB】を利用するためには、      devicehigh記述よりも前に EMM386.EXE を読み込んで置く必要があります。     ※EMM386.EXE を読み込む事によって【UMB】が確保されます。                      (UMB=上位メモリブロック)     【"アプリの追加と削除"で作成した起動FD】には EMM386.EXE が入っていません。      この理由は、EMM386.EXE のファイルサイズが大きい事もありますが、      EMM386.EXE が【UMB】を確保する時に、      クセの強いマザーボードでは たまに EMM386.EXEが "空きメモリ検出" を間違える      場合もあるからです。      (Win98以降のEMM386.EXEが間違える事は非常に少なく、問題が生じるような間違え方を       する事は 少ない・・・と思って大丈夫です。)      完璧を期する意味では、      EMM386.EXE を使う前に、      デバイスマネージャで 【拡張カード(例:SCSIカード)】の "Rom領域" を      確認しておく方が良いです。 その方法は後述します。  ・ASPIドライバは、多くの場合 「device=〜」の記述を「devicehigh=〜」記述にしても大丈夫です。  ・ASPIドライバは、    ドライブへの直接のアクセスを制御しますが、    SCSIドライブ付属のドライバを使う場合もあり、    SCSIカード付属のドライバを使える場合もあります(要:メーカー確認)。    【SCSIドライブ付属のASPIドライバ】は 一般に 多機能ですが "メモリ食い" ですから、    【SCSIカード付属のASPIドライバ】を問題なく使えるのであれば それを使う方が良いでしょう。    普通の人は Dosで メディアをフォーマットしたり ユーティリティを使う事はまず無い    ハズですから・・。  ・Mscdex.exe は CDドライブ専用であり、Config.sys の記述と【ペア】となっています。  ・Mscdex.exeを「論理ドライバ」と呼び、   対して "Config.sysの CD用のASPIドライバ" を「物理ドライバ」と呼びます。  ・CDドライブにアクセスする必要が無い場合は、   Mscdex.exe も "Config.sysの CD用のASPIドライバ" も 読み込む必要はありません。    (ドライブが接続されていても。)  ・CDドライブにアクセスする場合の Config.sys記述を   【AHA-2940】や【AHA-2940UW】を例に挙げて説明します。                (行頭に空白を入れては駄目。半角・英数字。以下すべて同様。)   ◇↓"Config.sys の ASPIマネージャ読み込み" の記述。    device?=ASPI8DOS.SYS /D /pause       (↑ASPIマネージャ)      ↑ = の前に ? が記述されている時は         読み込むか・読み込まないか・を確認されますから Yes・Noを選択できます(以下すべて同様)。      ↑ /D /pause の記述部分は モジュール度に異なります(マニュアル参照)。   ご自分のデバイスに適合したASPIマネージャを【ADAPTEC Simple_FD-Boot】にコピーして、   以下の説明に準じて Config.sysのコマンド行を書き換えて下さい。      ※最初に【ADAPTEC Simple_FD-Boot】を HDDにコピーしてあると仮定。   ◇↓"Config.sys の CD用のASPIドライバ読み込み" の記述。    devicehigh?=ASPICD.SYS /D:mscd001 /pause      ↑ /pause の記述部分は モジュール度に異なります(マニュアル参照)。   ご自分のデバイスに適合したドライバを【ADAPTEC Simple_FD-Boot】にコピーして、   以下の説明に準じて Config.sysのコマンド行を書き換えて下さい。      ※最初に【ADAPTEC Simple_FD-Boot】を HDDにコピーしてあると仮定。   ◇↓"Autoexec.bat の CD用の論理ドライバ読み込み" の記述。    MSCDEX.EXE /D:mscd001   ◇【重要】:上記の ASPICD.SYSの記述 と MSCDEX.EXEの記述 とで、     /D:mscd001 の記述が一致している事が大切です。     この2箇所の記述が一致している事によって Config.sys と Autoexec.bat で     それぞれ読み込まれた2つのドライバが 連結します。      (mscd001 の記述は 別の名前でもOK。半角英字8文字。)   ※上記の MSCDEX.EXEの記述 では、    MSCDEX.EXE /D:mscd001 /E という風に /E を付記できますが、    メモリの無駄遣いになりやすいのでお勧めしません。   ※上記の /E は 【先読みバッファ】をEMSメモリに置く--との指令。     /E を指定した場合は 実質上 /M(バッファサイズ)も指定する事になる。   ※ /E については 面倒な説明と関連しているので省略しますが、    【ADAPTEC Simple_FD-Boot】に置いてある起動ファイルについては    ASPICD.SYS のドライバ名を ご自分のドライバ名 に書き換えて     起動時に【Smartdrv.exe読み込み】を選択すれば 【/E 無し】でも    充分に高速に先読みされますし、その方が EMSメモリを確保しなくて済むので    "上位メモリエリアの無駄遣い" になりません。   ※CDドライブが2台以上 接続されていて 2台ともDosでアクセスしたい場合は、    見本の Autoexec.bat・config.sys を参照すれば 分かるように説明してあります。  ここまでが 【CDドライブ】に関する説明です。  ・MOドライブにアクセスする場合の Config.sys記述を   【AHA-2940】や【AHA-2940UW】を例に挙げて説明します。   ご自分のデバイスに適合したドライバを【ADAPTEC Simple_FD-Boot】にコピーして、   以下の説明に準じて Config.sysのコマンド行を書き換えて下さい。      ※最初に【ADAPTEC Simple_FD-Boot】を HDDにコピーしてあると仮定。   ◇"Config.sys の ASPIマネージャ読み込み" の記述が まず必要です(説明済み)。   ◇↓"Config.sys の MO用のASPIドライバ読み込み" の記述。    devicehigh?=ASPIDISK.SYS /D /pause      ↑ /D /pause の記述部分は モジュール度に異なります(マニュアル参照)。   ◇【注意】:ASPIDISK.SYSのような【Dos用のドライバ】でアクセスする可能性     のあるMOメディア は、なるべく540KB以下のメディアを使う事をお勧めします。     ASPIドライバによっては 【2KBセクタのMOメディア】にアクセスする時に     Smartdrv.exe が読み込まれていると正常に読み書き出来ないドライバがあるのです。     つまり、【2KBセクタのMOメディア(640KB超)】にアクセスする時だけは、     MO用ドライバ と Smartdrv.exe とが共存できないのです。     その場合は Smartdrv.exe を読み込まなければ良いだけの事ですが、     Smartdrv.exe無し =【先読みのためのソフトウェアキャッシュ】無し・・ですから     少し不便です。      ※以前の ASPIDISK.SYS でも 上記の制限があったように思いました。       最近の版ではどうなのか確認していません。       (Ultra160 や Ultra320 の場合はどうなのでしょうか?)   ★【2KB/secter MOメディア】と【SMARTDRV.EXE 組み込み】を 両立させる方法もあります。    この方法としては、    SMARTDRVを Autoexec.batで組み込まないで、手動で組み込んで下さい。    【例】: (MOドライブが H: と仮定して)    SMARTDRV /x H-    こうすると    H:ドライブの【読み・書き】両方のキャッシュが無効になり、    問題を回避できます。(建て前では。) ◆MOドライブに用が無い時でも 【MO用のASPIドライバ】を読み込む必要がある場合  もあります。  【1枚のSCSIカードに3台以上のHDDを接続したPC】であれば、  起動Dosで(FD起動に限らず)その3台目以降のHDDを読み書きする場合にも必要です。   ※「3台目以降のHDD」という表現はズサンな表現です。    性格には 「SCSI_IDが "#2以降" のHDD」を読み書きする場合に必要となります。    つまり、(通常は)    「SCSI_IDが "#0と#1" のHDD」は【SCSI_BIOS】で制御できるのですが、     "#2以降"のデバイスは【SCSI_BIOS】で制御不可なので、     起動Dosで"#2以降"のHDDを読み書きするならば 【MO用のASPIドライバ】を     読み込む必要があります。 ◆ASPIマネージャ・ASPIドライバ は出来るだけ新しい版の物を使って下さい。  古い版ですと Win98のEMM386.EXE のバージョンと離れ過ぎているので、  Dos起動時に【setver.exe の読み込み】が必要となります。          (Himem.sys読み込みの直後に device=setver.exe という記述で読み込ませる。)   ※こういう場合、setver.exeは 単に読み込むだけでは駄目で、    事前に 【setver.exeが保有しているバージョンテーブル】を変更してやる必要があります。   ※setver.exe を使う場合の説明です↓。    Windowsフォルダにあるsetver.exe をFDにコピーして、   【ASPIマネージャ・ASPIドライバ】を読み込まないでFD起動します。    A:    cd \    と実行した後で 【setver.exeが保有しているバージョンテーブル】を変更する    のですが、setver.exeのバージョンテーブルの操作方法は ここでは説明しません。     (これを行なう事は まず無いでしょう。)    それに、【ADAPTEC Simple_FD-Boot】の分量は 1.44MBフロッピーの容量の最大限ですから、    どれかを削除しないと setver.exe がFDに入りません。  ※ASPIマネージャ・ASPIドライバ が 改版される時に互換性が確保されているハズですが、   SCSIカード・SCSIドライブが古い型であったら、setverの問題以外に【適合性】の問題もあるでしょう。   一応は メーカーに ご自分のSCSIカードを告げて   【改版されたファイル と SCSIカードの適合】を確認した方が良いでしょう。 ◆古い版のドライバ・モジュールを使う時に なぜ setverの読み込みが必要となるのか?・・・。    (setverの対象となるドライバ・モジュールは Dosで動作するドライバ・モジュールです。) MOドライブを持っていると仮定します。 Aspidisk.sys を読み込ませる記述を 【devicehigh=ASPIDISK.SYS /D /pause】というスタイルで記述しておけば わかりますが、 このドライバが読み込まれた時に「DOS Version: 7.1」と表示されます。 つまり、ドライバ側で Dosのバージョンを検査しているのです。   (ドライバ側で想定しているDosのバージョンであるか否かのチェック) 検査する理由は、「古いDosでは動作しないよ」ということです。 検査を受けたDosの側では 「私のDosバージョンは 7.1です」と答えている訳です。 新しいDosの場合は、互換性を考慮して設計されていますから 古いドライバでも問題なく動作する 場合もあるのですが、それでも検査に引っ掛かって拒否される事があります。 で、【新しいDos〜〜古いドライバ〜〜問題無く動作するハズだが 検査で拒否される】場合には、 なんとかして運用したいのが人情です。 この「なんとかしたい」という目的で setver.exe が用意されているのです。 仮に、手持ちの Aspidisk.sys が古くて 起動時の検査内容が「Dos6.2であるか否か」のチェックであると しましょう。(それよりも新しいAspidisk.sys は存在しない・・と仮定します)。 Win98のDosは 7.1ですから このままでは拒否されます。 でも、setver処理をすれば Dos7.1で 上記の"古いAspidisk.sys"は問題無く動作します。 で、どうすればチェックを逃れることが出来るでしょうか。 Aspidisk.sys からチェックを受けた時に 「私のDosバージョンは 6.2です」と答えさせてやれば良いのです。 setver.exe は 自分自身の中に【バージョンテーブル】と呼ばれる領域を持っています。 【バージョンを検査してくるモジュール名】と【自分(dos)が答える"ウソのDosバージョン"】が 対(つい)になった形で setver.exe の中に格納されています。 この【バージョンテーブル】中に 「Aspidisk.sys "ウソのDosバージョン"=6.2」と登録して、 その後 PC再起動すれば 次からは Aspidisk.sysの検査に対して「私は6.2です」と答えるようになります。  (ただし、Dos起動する時に 該当のドライバよりも先に setver.exe を読み込む必要あり。) 具体的には 次のようにします。  ================  1.Dos起動をする時の Config.sys に 【device=setver.exe】という文を記述しておきます。     HDD起動の場合なら【device=C:\windows\setver.exe】と記述します。     FD起動であれば【device=a:\setver.exe】と記述します。  2.Dos起動します。  3.setver Aspidisk.sys 6.20 と入力して Enterキーを押します。    (警告が表示されますが無視します)  4.これで setver.exeの中に「Aspidisk.sysに対しては "ウソのDosバージョン 6.2" を答える」    という情報が格納されます。    ただし、この情報が格納されるのは "3.で実行した時に呼ばれたsetver.exe" だけです。    3.の実行文では "どこのsetver.exeか" を入力していませんから、    これを実行した時の【現在のディレクトリ】に存在するsetver.exe に対して 情報が格納    されます。    3.を実行した時の【現在のディレクトリ】に setver.exe が存在しない場合は    【パス設定】されたディレクトリに存在するsetver.exe に対して 情報が格納されます。       ※特定の場所に存在するsetver.exe に対して処理を行ないたい場合は        パス\setver Aspidisk.sys 6.20 という形で入力します。        (入力例: C:\windows\setver Aspidisk.sys 6.20)  5.PC再起動します。    Dos起動をする時の Config.sys に 【device=setver.exe】という文が記述してあるので    次からは 古いAspidisk.sys でも拒否されません。  ================ 上記の手順で、HDD起動の場合と FD起動の場合とで 両方の手続きをしなければならないのですが、 実際には どちらかで手続きをした後で、 【処理済みの setver.exe】を 【"未処理の setver.exe" が存在するフォルダ】に上書きコピーして しまっても大丈夫です。  ================ 注意する事が1つあります。 後になって Aspidisk.sys を "Dos7.1対応版"に交換したとしましょう。 この Aspidisk.sys をロードする時には、ロードしたsetver.exe のバージョンテーブルも更新 してある必要があります。 即ち、上記の手順1〜5を 別パターンで もう1度実行するのです。 変更する箇所は 3.の手順で setver Aspidisk.sys 6.20 /d と入力します。 【登録されている "Aspidisk.sysに答えるバージョン情報"】が削除されます。 こんな事を自分で管理するのは 面倒ですから、なるべく新しいドライバを使いましょう。   −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ◆【ダブルバッファリング】    ("データ転送のためのバッファ領域" を1つ余分に経由させる事。) ・【PCIのSCSIカード】だけを使用しているPCの場合は、  このブロックの「ダブルバッファリング」の説明を読む必要はありません。   (−−−−−−−−−−−−で囲まれたブロック)  PCIバスのスロットではなく、ISAバスに装着するタイプの SCSIカードが  【バスマスタ動作】をするカードである場合(例:AHA-154x)に、  EMM386.exe駆動 や Windows動作 で問題が起きます(正常なディスクアクセス不可)。  その場合は 【ダブルバッファドライバ】を組み込む必要があります。   ※Win98の【ダブルバッファドライバ】は Dblbuff.sys です。    "起動時に読み込まれたMsdos.sysファイル" に DoubleBuffer=1 が有効記述されていると    Dblbuff.sys が読み込まれます。(行頭が「半角の ;」↑の場合は無効。)   ※PCIのバスマスタSCSIカードでは ダブルバッファリングは不要です。   ※Win98をセットアップすると(Win98のクセ)、たとえPCIのSCSIカードであっても、    SCSIカードが接続されているだけで C:\Msdos.sysファイルに DoubleBuffer=1 が    設定されます。その場合は Msdos.sysの DoubleBuffer設定を無効にしてもOKです。    ただし、    【田中式処置】を行なう時は(その間は)DoubleBuffer設定を有効にして下さい。    そうしないと Win98が「SCSIカードの設定」を放棄しますので。(笑)。  ◇それほど SCSIカードの【ダブルバッファリング】に神経質な Win98なのに、   なぜ、【"アプリの追加と削除" で作成される起動FD】の中には   【ダブルバッファドライバ】が入っていないのでしょうか?   それは、次の2つの理由で 【ダブルバッファリング】が不要だからでしょう。    1.Win98のGUIを起動できるようなFDではない。    2.EMM386.exe がFDに入っていない(EMM386.exeを駆動しない)。 でも、現実には EMM386.exe がFDに入っていないために "非常事態でのDos処理" を する場合に 【コンベンショナルメモリ】が不足して 困るコトがあるのです。  ◇【ADAPTEC Simple_FD-Boot】の起動FDでは EMM386.exe を駆動できるようにしてあります。   だから、↑このFD起動で【ダブルバッファリング】を有効にするならば、   起動FDの Msdos.sysファイルに DoubleBuffer=1 を設定する必要があります。    【注意】: 古い EZ-SCSIセットのマニュアルには Smartdrv.exe の実行時に /double_buffer          をパラメータ指定するように 指示されていますが、          これは Win95以降では 廃止(禁止)されました。   "フロッピー起動" の時は Msdos.sysファイルに【DoubleBuffer=1】を設定しても   有効になるかどうか 確認していません。   Config.sysで【Dblbuff.sys 読み込み】の指示ができます。(見本の Config.sys を参照。)   【ダブルバッファリング】が必要なSCSIカードを取付けているPCの場合は    このFDで起動する時は EMM386.exe を読み込まないで下さい。   ただ、今どき Win98マシンで【AHA-154x】なんて"時代遅れのSCSIカード"を使っている人は   まず いないでしょう。   −−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−−− ◆【Emm386.exe が メモリ検出を間違える可能性】を排除するために、  【拡張カード(例:SCSIカード)】の "Rom領域" を確認して  【Config.sysでの Emm386.exeコマンド行】で スィッチ指定しましょう。 ただし、【Emm386.exe のスィッチ指定】の記述ルールは 理解するのが少し難しいです。 大抵のPCでは【Emm386.exe のスィッチ指定】をしなくても大丈夫です。 途中まで読んで「難しいナ」と感じましたら、 【Emm386.exe のスィッチ指定】の作業だけは 省略してしまって下さい。   ※この作業↑を省略する場合だけは、    【ADAPTEC Simple_FD-Boot】の起動FDの Config.sys における 「Emm386.exeコマンド行」    だけは、次に示す "簡略な記述" ↓ にして構いません。       device?=EMM386.EXE NOEMS X=A000-C7FF V                (行頭に空白を入れては駄目。半角・英数字。以下すべて同様。) ◇Emm386.exe と【拡張カードのRom領域】とが どう関係するのか?・・・。  物理メモリの0番地から数えて640KB〜1024KBまでの空間を【UMA】と呼びます。    ※【UMA】= Upper Memory Area    ※メモリ番地:A000-FFFF。デバイスマネージャでは A0000-FFFFF と 5桁までの数値で表示される。     00000-FFFFF で示されるエリアは0〜1MBの領域。     拡張カードにとって PC起動時のマザ−ボードによって割り当てられるアドレス(領域)は     物理アドレスであり、0〜1MBの領域です。    ※PC/AT標準の "ビデオカード"の占有領域は【A0000-AFFFF+B0000−BFFFF+C0000-CFFFF】の3つの表示。    ※UMAの最後方は マザーボードの "システムRom" に割り当てられています。  Emm386.exe は、  この【UMA】の中から "空いている領域" を探して 【UMB】と呼ばれる空間を確保します。  この空間は、ドライバをロードしたり、【EMSページFrame領域】のために使われます。  なぜ、こんな事をするのか・・と言いますと、  Dosで formatコマンド を実行する時を 例にあげます。  0番地から数えて640KBまでの空間に【連続した大きな領域】が無いと実行できないのです。   (0〜640KB の空間を "コンベンショナルメモリ" と呼びます)  Dos起動した時に 640KB〜1024KB空間に「空き」があるのに、"空き" として認識されなければ  どうなるでしょうか? 読み込んだドライバは 0〜640KB空間にロードされてしまいます。  これでは 条件が不利です。     (だから、Config.sysで 【dos=HIGH,UMB、EMM386.exe読み込み、devicehigh】を使うのです。)  でも 拡張カードを装着している場合は、少し注意する必要があります。  【"拡張カードのRom"に割り当てられる空間】は 【UMA空間】に包含されているのです。  Emm386.exeは "空き領域" を探す時に、  自動的に 拡張カードのRom領域を避けて【UMB領域】として確保するのです。    ※【UMB】= Upper Memory Block(用語としては UMAと似ていますが 意味は全然違います)  ところが、  EMM386.exeが "検出ミス" をする事が 時たま あるのです。  そこで、「じゃ、拡張カードのRom領域 を自分で把握しておきましょう」---となる訳です。    ※この理由だけではありませんが、Winインストーラは【dos=HIGH,UMB】を設定しません。     【dos=HIGH】しか設定してくれません。     でも、     【"拡張カードのRom領域"の番地】を自分で把握しておき、     「ここは使うなヨ」--と EMM386.exeに教える形で「Config.sysのEMM386.exeコマンド行」を     記述すれば 【空き領域の検出ミス】は起きません。     【Win9xのDos起動】に必要なファイルだけを "フォーマット済みのHDD" にコピーして     Command_Prompt_Onlyの状態で起動(C:\に Autoexe.bat・Config.sys・Msdos.sys有り)し、     この状態で Win9xをセットアップすると、これら↑の起動ファイル設定を インストーラが     きちんと使ってくれます。     「Config.sysのEMM386.exeコマンド行」に 「ここは使うなヨ」--と EMM386.exeに指示して     あれば 問題は起きません。(クセのあるマザーボードの場合は この方法が有利です。)     私のWinセットアップ作業の80%は この方法でした。 ====================== 【拡張カード(例:SCSIカード)】の "Rom領域" を確認するための 一般的な方法としては 次の2つの方法があります。 A.Win98のデバイスマネージャで確認する。 B.FD起動などの"起動Dos"で msd と入力して Enterキーを押す。   msdコマンドは【Sub_Disk.#1】に入っています。  ※msdコマンドの使用目的は 例えば【SCSIカードの占有領域】を確認するためですが、   だからといって msd実行時に【SCSIマネージャ・SCSIドライバ】を読み込む必要はありません。  ※装着した拡張カードが "初使用のカード" で かつ 起動できるWindowsもHDDに存在しない場合は、   FD起動(EMM386.exeを読み込まず)して msdを実行するのが無難でしょう。 ここでは A.の確認方法だけを説明します。     ※B.の方法は 表示画面の説明が大変なので、遊びで体験して下さい(実行方法は 最後に説明)。           (操作は簡単です。) デスクトップの【マイコンピュータ】を右クリックして "プロパティ" と操作します。 デバイスマネージャタブを左クリックします。 確認したい拡張カードの型番を左クリックして選択状態にします。 プロパティボタンを押します。 【リソースタブ】を左クリックします。 そして、中央の "リソースの種類" という見出しが見えるウィンドゥを見ます。 ここのスライドバーを操作しますと、【メモリの範囲】という項目が 複数あります。 この メモリの範囲_項目 の右側(設定)の欄には 「8桁の英数字 ― 8桁の英数字」というスタイルのデータが表示されています。 いくつか表示されている「8桁の英数字 ― 8桁の英数字」データの内、 【右辺も左辺も "上位3桁が 000" となっているデータ】が見えるはずです。 これが 目的のデータであり、 この拡張カードが占有している【物理アドレス】です。(他のアドレスは【Windowsの仮想アドレス】です。) これを Config.sys の Emm386.exe実行文で "範囲指定"(Xスィッチ)してやれば良いのです。 で、"範囲指定" の仕方と、考え方を これから説明します。 この「8桁の英数字 ― 8桁の英数字」を 正確にメモして下さい。     (全て 英数字半角で。"大文字・小文字"は無視。間の"マイナス"も半角。) 使われている英数字は 0〜9 と A〜F です。 この表記方法による数値表現を【16進数】と言います。 【10進数】は 0〜9 の10種類の数字で「桁上がり」しますが、 こちらは16種類の数字で、9 の次は A です。   ※私のPCでは 000cc000-000d17ff となっています。    これは SCSIカードの【Romエリア】です。   ※参考までに、このデータは【システム情報】を起動しても見る事が出来ます。     (表示形態は異なりますが。) さて、 私のPCでの 000cc000-000d17ff を題材にして説明します。 "上位3桁の 000"(即ち8桁の内 左側3桁)を削除して下さい。 すると、cc000-d17ff となります。 この【物理アドレス】を Emm386.exe に教えてやれば良いのです。 「絶対に守れよ!」・・という形で教えてやりますから Emm386.exe は 必ず守ってくれます。   ・ここで 少し "息抜き" しましょう。20年前の16ビットパソコンのお話です。    ある巨大な団地の住戸数が 1,048,576軒 だったと仮定します。    この1軒ごとに 1〜1,048,576 まで "通し番号" を付けて管理する事にします。    管理といっても ここでは 単純に "番号" で確認する程度とします。    番号で確認する道具は【電卓】しか無いと仮定します。    そして この【電卓】は16桁まで表示できますが、その1桁1桁は 0か1しか表示できない    と仮定します。    「足し算・引き算」と、「+ボタン・−ボタン」による増減が出来るとします。    この電卓の1桁1桁は 0か1しか表示(認識)できないのですから、    この1桁は「1ビット」です。(そして16桁認識)    そう、つまり この電卓は【16ビット処理の"原始CPU"】です。    0000000000000000 は 0。    0000000000000001 は 1。    0000000000000010 は 2。    0000000000000011 は 3。    0000000000000100 は 4。    0000000000000101 は 5 です。(それぞれの桁で、1の次は もう「桁上がり」です。)    さて、    この電卓は【住戸ナンバー】として 何軒目まで認識できると思いますか?    答えは 65536軒です。    そう 認識させたいのは 1048576軒ですから 届きません。    どうしたら良いモノか・・・対策は 追々説明します。    ところで、    先の cc000-d17ff という表記方法は 感覚的にいまいち ピンと来ません。    この c とか f の1桁 つまり、1つの【16進数】は【0〜15】までを認識    していますでしょ。    この【0〜15】までの数値なんですが、    先ほどの 0000〜〜0101 という表記方法なら 下から何桁あれば表現できるでしょうか?    さっき 0〜5 まではやりました。     6=110、  7=111、  8=1000、9=1001、10=1010、11=1011、12=1100、    13=1101、14=1110、15=1111 です。    そう、【0〜15】までを表現するには【4桁の2進数】が必要です。    即ち、【16進数の1桁】=【4ビット】です。    さて ここで    先の cc000-d17ff という表記を、    【cc000番 から d17ff番まで】の家に "広告チラシ" を配るための    【配布する範囲】として解釈して下さい。    先ほど、【16ビット処理の"原始CPU"】の表示桁は 0000000000000101(16桁)    という感じでした。(1桁=1ビット)。    では、【cc000番 から d17ff番まで】ではなく、    【00000番 から fffff番まで】の家の 全てに"広告チラシ" を配れ!・・と命令    されたら、これ 一体 何軒なんでしょうか?    【16進数の1桁 = 4桁の2進数】ですから、4×5 で 【20桁の2進数】である    所までは すぐ解ります。    じゃ、手元にある【本物の電卓】でやってみましょう。    2×× と押した後、= を19回押してみましょう(2の20乗。=を1回押すと2乗です。)    15回目(16乗)で 65536 です。    19回目(20乗)で、そう 1048576 です。    つまり、最初の 1048576軒 というのは「2の20乗」なんです。    即ち、    1048576軒の【住戸ナンバー】を認識させるためには【20ビット処理の"原始CPU"】が必要    なのです。    そんな高性能なCPUは存在しません。 4ビット足りないのです。    さあ困った。      ※【本物の電卓】でも "認識可能な最大値" を超える数値を処理させようとすると、       「桁あふれ」を起こして止まります。これ、オーバーフロー と呼びます。    さあ、    2進数の4桁分(10進数の0〜15)を工面しなければなりません。---*[あ]    そこで考え出された方法が【16階建ての高層マンション】に移住させてしまう方法でした。    表札(番号札)は 最下層の1階の家 にだけ付けるのです。    そうしますと、「16戸1組」で管理できる事になりますから、    【全戸数を16で割った数値】まで認識できればOKである事になります。    1048576 ÷ 16 = 65536  となり、ピッタリ間に合います。      ※「1500 ÷ 10」を計算する時、       これ 誰でも【本物の電卓】で計算しませんよネ。1番下の桁を削りますよネ・・。       つまり、       【20ビットの数値】を【16(10進数)】で割る--という事は       【20ビットの数値】を【4ビット(2進数の4桁)】で割る--という事です。                                  (*[あ]を参照)       だから、「1500÷10」の時と同じように        【20ビット】の "下4桁" を削ってしまいましょう・・・という考え方です。      ※で、【20ビットの 下4桁】が "全てゼロ" でなかった場合は どうするか?・・。       この解答については ここでの本題から外れるので 詳しく説明しません。       ここは 読み流して下さい。       コンピュータの内部処理としては ちゃんと計算しています。       あの【電卓】を もうひとつ用意するんです。       表札(番号札)を掲げている家まで到着したら No.2の電卓 を取り出して、       下から何階であるかを調べるのです。       つまり、d17ff の最後の桁の f は 削っても ちゃ〜んと保管しておくのです。       d17f番目の家に到着したら 【No.2の電卓】を使って f階(16階)まで       "広告チラシ" を配るのです。       f階ではなく 9階だったら 残りの6枚は捨ててしまいます。      ・じゃ、「全部で"チラシ"を何枚 印刷するか?・・」という問題もあります。       この事は ここでの本題と関係します。       【チラシを何枚 印刷するか?】=【Dosのメモリ確保】と考えて下さい。       その場合は、あくまでも 【16枚1セットの包みを "何セット" 用意するか】・・       という確保(予約)の仕方をします。       この部分の説明は 厳密に考えると "語弊" があるのですが、       このような「番地指定」の手法を       コンピュータ用語で 【パラグラフ アドレッシング】と呼びます。        ("パラ" は「パラレル」の略。)       この手法での "アドレス指定" は 現在でも使われています。       確か 80486CPU内部のアドレス管理がこのアドレス手法であり、       PentiumCPUはその互換動作をしています(x86系CPU)。       Windowsは これらのCPUの機能を前提として設計されており、       スワップドライブの"ページング処理" が4KB単位で行なわれる仕様は       上記CPUの機能に基づいて設計されています。      ※余談ですが、       1048576 という数値は 1MBとか1Mbitという時の "1M" です。 話を元にもどして、 デバイスマネージャで 【メモリの範囲】として cc000-d17ff というデータを取得しました。 先ほどは、 【cc000番 から d17ff番まで】の家に "広告チラシ" を配るための【配布する範囲】 として解釈して頂く形で説明しました。 これは SCSIカードの【Romエリア】である事も説明しました。 【この "エリア(領域)" を 勝手に使うなヨ!】・・と、Emm386.exe に通告してやる必要があります。   (Emm386.exe が間違えて検出する可能性があるので。) そのための指定の仕方(記述ルール)を 以降で説明します。   ※「SCSIカードのRomエリア」という表現は 厳密にはちょっと乱暴な表現です。    だって、Romには書き込めないのですから・・・。    実際には、【"SCSIカードのRom" のために割り当てられたRam】の領域 と表現すれば    かなり正確になります。    でも、これに拘ると 理解しにくくなるので、【SCSIカードの占有領域】なのだ・・・    と 単純に考えて下さい。 さて、cc000-d17ff は【メモリの範囲】を表しており、cc000 と d17ff は【メモリの番地】です。 【メモリの番地】を【アドレス】と呼びます。 SCSIカードの占有領域 ですから、この場合、【物理的なアドレス】です。 そして、Dosで指定する時は「4桁−4桁」で指定します。 もう判りますよね。 "下1桁" を削って指定するんです。 逆に言えば、 Dosで 2B00-4CFF と指定した時は「物理アドレス2B000-4CFFF」である・・・ という "暗黙の了解" があります。 下1桁 を削るんですが、↓注意すべき事があるのです。 ◇「4桁−4桁」で指定した時に、"−の左の4桁" も "−の右の4桁" も、  4桁の内の "下位2桁" は 必ず 00 か ff と記述して指定して下さい。  そして、"−の左の4桁"は 00 と記述し、"−の右の4桁"は ff と記述して指定して下さい。  cc000-d17ff の場合で説明しますと、  cc00-d17f では駄目なのです。      ↑この 7f の部分が 半端な数値でしょ。 【理由】: cc00-d17f と指定しても その事自体はエラーではないのですが、       半端な数値を"アドレス指定"すると「切り捨てられて処理」されてしまうのです。 【SCSIカードの占有領域】だから使うなヨ!・・と 通告するのですから、 そのエリアを 確実に伝える必要があります。 エリアを広めに通告する形で【番地指定】しても 特に問題は起きませんが、 逆に 狭い範囲を通告する形で【番地指定】すれば 通告した目的が達せられません。 だから、 【ここを使うなヨ!】--と指定する記述では、 "−の左の4桁" は 「半端なアドレス」を指定して切り捨てられても問題無いとして、 "−の右の4桁" は 「半端なアドレス」を指定して切り捨てられるとマズイのです。   具体的には、「cc00-d17f を使うなヨ!」と指定する場合は   cc00-d1ff と記述して指定してやります。   ※"−の左の4桁" を【Baseアドレス】とか【Startアドレス】と呼びます。    "−の右の4桁" を【Endアドレス】と呼びます。   ※Dosで【4桁で アドレスを16進数表記する】時は、    4CFF ← この 下から3桁目(4CFF の C)の1数字が、4KBです。    (「1数字4KB」とは つまり Cを1つ加算して 4CFF〜4DFF が4KBという意味)      余談ですが、注意すべき事として、      上記の【Dosでの4桁表記】は '便宜上'行なわれているモノです。       (16bitCPU時代の名残り)      【Dosで 4CFF と表記したアドレス】は【デバイスマネージャの 4CFFF】と同じ意味です。      【Dosの 4CFF〜4DFF】=【デバイスマネージャの 4CFFF〜4DFFF】です。   ※ちなみに cc80 の 8 の部分は 2KBを表しています。    0〜F(16進数)の範囲の8であり 下位が0ですから「4KBの半分」です。  ★【ここを使うなヨ!の指定】をする時の 「禁止」のための"範囲指定"(Xスィッチ)     ("半端な分"は 広めの指定をする)   【Baseアドレス】・・・ 下位2桁に 半端な分があれば 切り下げる。   【Endアドレス】 ・・・ 下位2桁に 半端な分があれば 切り上げる。 逆に、「頼むから ここを使ってくれヨ!」---という指定もあります。                       (あとで登場しますが、これは"危険"含みです。)  ★【ここを使ってくれ!の指定】をする時の 「禁止」のための"範囲指定"(Iスィッチ)     ("半端な分"は 狭めの指定をする)   【Baseアドレス】・・・ 下位2桁に 半端な分があれば 切り上げる。   【Endアドレス】 ・・・ 下位2桁に 半端な分があれば 切り下げる。 ↑A、B どちらの場合も、【4桁の内の "下位2桁" は 必ず 00 か ff として指定】します。   要するに、   「切り下げ」・「切り上げ」を間違えなければOKです。 さきほど 「4CFF〜4DFF が4KB」と言いましたが、なぜ4KBなのでしょう。 【4CFF〜4DFF】という範囲の大きさは【4D00〜4E00】と同じです。  (右も左も1ずつ加算) 4D00 という表現は【下位1桁を削っている】ので、本当は 4D000 である事は既に説明しました。 「4D000〜4E000=4KB」 という表現は 「01000という数値が4KBを表している」という事でもあります。 ここで 01000という数値はアドレスを表現しており、メモリの番地を指しています。   ※番地1つに "1バイト分のメモリ" があてがわれています。    最下位の数字1つ(0〜1)は "1バイト分のメモリ領域" を示しています。 16進数のFは 10進数の15の代わりですから、 最下位1桁は16通りの数(16進数)を表し、0〜15までです。    (0〜9,10,11,12,13,14,15 ←この10進数を16進数に書き換えると→ 0〜9,A,B,C,D,E,F) つまり 最下位1桁(0〜F)は "16バイト分のメモリ領域" を示しています。 「10進数なら1000は10×10×10」であるように、 「16進数なら01000は F×F×F」と考える事ができます。 つまり、【16進数の01000 は "10進数の16" を3乗したもの】です。   (電卓で「16×16×16」を計算してみましょう。・・・答えは 4096 です。) 数字1つ(0〜1)が "1バイト分のメモリ領域" を示していますから、4096バイト分を表しています。 4096バイト=4KB ですから、 ほら、【メモリサイズ 01000 の領域=4KB】つまり【4D000〜4E000=4KB】となるでしょ。 これを "下位1桁を削った記述" に書き換えれば【4D00〜4E00=4KB】となるのです。 ところで、 数値の考え方としては これで正解ですが、 【メモリ領域】の表現としては 厳密には "誤差" を含んでいます。 つまり、4KBの領域は 厳密には【4D00〜4E00】ではないのです。(4D00〜4DFF が正しい。) どういう事かと言いますと、 【4KBの領域】=【1バイト×4096】ですから、【1つの番地 4096コ分】です。 番地の数としては 【4D00〜4E00】は 4097コ分なのです。 例えば、【お金の10円は1円を10コ集めた物】であって、1〜10までです。 即ち、10進数の 0〜10 は 値の"個数" としては 11コ分です。  (指を折って数えてください。) つまり、10進数の 0〜100 は 値の"個数" としては 101コ分です。 100コ分としては 0〜99 までなのです。 同じように、 4096コ分の"個数" としては 【4D00〜4DFF】が正しいのです。 即ち、4KBの領域をアドレス表現すれば 【4D00-4DFF】とか【4E00-4EFF】という記述になります。 では練習しましょう。 【アドレス 4D00】から始まる'20KB'の領域は どう記述すれば良いのでしょう。 20KB÷4KB=5 ですから 4KBずつ5回加算する事になります。 単純に言えば 下位3桁目の数字(16進数)を 5回加算すれば良いのです。 4D00 ⇒ 4DFFで まず4KB。    (下位2桁の 00 と FF がややこしいですから先に済ませましょう。) 4DFF ⇒ 4EFF、これで8KB。 4EFF ⇒ 4FFF、これで12KB。 さあ、4FFF の次は・・・。下位3桁目のF を1加算します。      ※'16進数のF'の次はありませんので "繰り上げ" をします。       4FFF は 殆ど5000 に近いですから 5000 に FF を加算する・・と考えてもOK。 そう、50FF ですから、 4FFF ⇒ 50FF、これで16KB。 50FF ⇒ 51FF、これで20KB です。答えは 4D00⇒51FF です。 即ち、 【'アドレス 4D00'から始まる'20KB領域' のアドレス表現】は【4D00-51FF】となります。   ※先の加算方法は 面倒ですから    下位3桁目の数字について 指折り数えて加算してもOKです。    4D00 は 殆ど4CFF に近いですから、    4CFF の下位3桁目の C について 5回加算するために    C ⇒ D、E、F、0、1 と "指折り数えて" 5回加算するのです。 という訳で、 【"Baseアドレス4D00番地" から 4KB加算した領域"】 の【Endアドレス】 を 16進数表現のアドレス で特定するための 計算手順ノウハウは 次のようになります。  1.4D00 の下から3桁目を '数値1つ分'加算する。・・・(4E00 となる。)  2.'数値 4E00' から '数値1'だけ減算する ・・・・・・(4DFF となる。)    (10進数で 100−1は 99 です) で、答えは 4D00〜4DFF です。 ここまでで 考え方 は理解できたでしょう。 という訳で、emm386.exeでの指定に限らず、 Dosでは "メモリの領域" を アドレス表現する時は 【4D00〜4DFF】という風に 【Baseアドレス】では 下位2桁は 00 となる形で記述し、 【Endアドレス】 では 下位2桁は ff となる形で記述するのです。 それでは、 【Config.sysでの Emm386.exeコマンド行】で スィッチ指定をする場合の  具体的な記述例 を示します。     (【Baseアドレス-Endアドレス】の領域指定は 単に"見本"として考えて下さい。) ========================== ☆【パターンA】(Xスィッチ) ↓【"cc00-d17f の領域" は 使うなヨ!】--と指定。 device=EMM386.EXE X=cc00-d1ff ↓複数の「Xスィッチ」を指定してもOKです。 device=EMM386.EXE X=A000-C7FF X=cc00-d1ff           ↑          この A000-C7FF は PC/AT標準のビデオカードエリアです(160KB)。          これを指定しないと マズイ場合もあります。          最近の多機能なAGPビデオカードでは これよりも広いエリアを          "占有領域" とする場合もあります。           (Romエリア+ワークエリア)          【ビデオカードの占有領域】も デバイスマネージャで確認できます。   ※ビデオカードエリアの直ぐ後ろのエリアは、    拡張カード(例:SCSIカード)の「Romエリア」が割り当てられます。 ========================== ☆【パターンB】(Iスィッチ) ↓【"CE00-D2FF の領域" は 使ってくれヨ!】--と指定。 device=EMM386.EXE I=CE00-D2FF 【 Iスィッチ】は危険を伴なうでしょうから、実際には指定はせずに、 ここでは 理屈だけ理解して下さい。  ★★★ 【警 告】★★★  ★★★ 【警 告】★★★  ★★★ 【警 告】★★★ 腕に自身があるか、 よっぽど「几帳面な人」以外は、               【 Iスィッチ】は 使わない方が 安全です。 理由は 解りますネ・・            "範囲指定" を 間違えたら 大変です。(笑)。 【 Iスィッチ】は マニアの物です。  ★★★ 【警 告】★★★  ★★★ 【警 告】★★★  ★★★ 【警 告】★★★ "範囲指定" を間違えたら どうなるのかな〜・・。 経験した事が無いので 知りません。 最初に "範囲指定" をした時は間違えていなくても、 その後 何ヶ月か過ぎて、PCに 拡張カードを追加したとしましょう。 そうなると 【"I 指定"しても良い範囲】は 無くなったりします。  (【 X 指定】は 間違っても 特に害はありませんが・・・。)  ★★★ 【警 告】★★★  ★★★ 【警 告】★★★  ★★★ 【警 告】★★★ ・空き空間なのに EMM386.EXE が "空きメモリ検出漏れ" を起こす場合に 「Iスィッチ」を指定してやります。  ※"空きメモリ検出漏れ" を起こすかどうかは、マザーボードの特性に影響する   ようです。   私のサブPCでは Iスィッチを指定してやらないと この検出漏れが起きて   "使われないママ" となり、結果として コンベンショナルメモリが不足します。 ========================== ↓「Xスィッチ」と「Iスィッチ」を混在させて指定してもOKです。 device=EMM386.EXE X=A000-C7FF X=C800-CDFF I=CE00-D2FF ↓HDD起動(Win起動)する Config.sys であれば。(〜 C:\windows\EMM386.EXE 〜) device=C:\windows\EMM386.EXE X=A000-C7FF X=C800-CDFF I=CE00-D2FF ↓EMM386.EXEの読み込み時に "情報" を表示させる方が良いでしょう。(Vスィッチ) device=C:\windows\EMM386.EXE X=A000-C7FF X=C800-CDFF I=CE00-D2FF V ↓一般に、"EMSメモリ"は無駄である事が多いですから NOEMS を指定しましょう。 device=EMM386.EXE NOEMS X=A000-C7FF X=C800-CDFF I=CE00-D2FF  ※初期設定では「emm386.exe RAM」となりますから、   さらに無用なEMSページフレームに64KB が消費されます。 ========================== ☆カードが異なれば "占有エリアサイズ" は異なります。   例えば、    【AHA-2940U2W】では 22KBです。    【AHA-2940UW】 では 18KBです。   デバイスマネージャでも そのように表示されます。  で、Dosでは 4KB単位指定ですから、"Endアドレス" を切り上げて、  【2940U2W】では24KB、【2940UW】 では 20KB・・・ として  Emm386.exeの Xスィッチ で範囲指定をします。   (「ここを使うなヨ!」--と。)  ※ちなみに、   【24−22 の半端の2KBに該当するエリア】は、Xスィッチで範囲指定しなくても   利用されません。(4KB単位です) ☆同じSCSIカードであっても  SCSI_BIOS を有効にするか・無効にするか によって その "占有エリアサイズ" は異なります。  従って、有効・無効のどちらであるかによって  【EMM386.EXE の"Xスィッチ"】によって「勝手に使うな!」と指示する"領域指定" は異なります。 ☆同じ拡張カードを使う場合でも、  複数のカードを装着していたり、装着するスロット位置・装着の順番が異なっていたり、  組み合わせるカードが 異なっている場合は   【同じカードなのに "占有領域" が違う】--という現象が起きます。  マシンごとに何種類もの Config.sys を用意するのは面倒ですから、  「記述を変えた EMM386.EXEコマンド行」を Config.sys に複数記述(device?=EMM386.EXE 〜の形)  しておき、  FD起動する時に「どの EMM386文を実行させるか」を選択するのも一つの方法です。   (下記参照。) device?=EMM386.EXE NOEMS X=A000-C7FF X=C800-CBFF X=CC00-D1FF V rem P3SCD_motherBoard device?=EMM386.EXE NOEMS X=A000-C7FF X=C800-CDFF I=CE00-D2FF V device?=EMM386.EXE NOEMS X=A000-C7FF V   ※ ↑【説 明】↓    Config.sys実行時に「device?=〜〜」の行が表示されて Yes か No かの確認を求められます。    そこに表示されたコマンドラインを実行するためには【Enterキー】を押します。    実行させたくないなら【Ecsキー】を押します。    【Enterキー】を押して 1行目のEMM386文を実行させた後、「rem の行」は無視されます。    その次に "有効なEMM386文" がありますから、また確認を求めてきます。     (1回目の Enter・Ecs入力に無関係)    同じドライバを2回 組み込んでは駄目ですよ・・・。 ========================== ☆SCSIカード等を2枚装着している場合はどうなるか?・・・。  ここでの説明は、初めて使うカードの占有領域を【msd実行】で調べる時の参考にして下さい。 PCIスロットが5本あったとします。IRQ共有の問題はここでは無視します。 多くの場合、#1スロットが優先スロット(AGPカード使用の場合は#2)ですが、 検出は #5から始められます。 で、複数の拡張カードの【占有領域】の割り当ても この順番(#5から)です。 物理アドレス640KB〜1024KBの内、 "より番地の低い空間" から順番に [#5のカード、#4のカード、・・」という風に割り当てられます。  (ビデオカードだけは A000番地から 常に優先的に割り当てられるようです。) 【AHA-2940UW・・18KB】で、【AHA-2940U2W・・22KB】と言いましたが、 2枚をならべて装着しても 18KB の直ぐ後ろに 22KB が確保される事はありません。  (4KB単位です)  じゃ、20KBのすぐ後ろに 24KB が確保されるか--と聞かれれば、ケースbyケースです。  640KB(A000)の所から数えて "16KB単位で刻んだ時の どの番地" から  カードの占有領域が割り当てられるか--に影響されます。  だから、20KBの後ろに「12KBの無駄な空き」が生じる場合もあります。  そして、マザーボードのクセによっても違います。  安定度とは無関係のようですが、20KBのすぐ後ろに 24KB が確保されるマザーもあります。 この辺の状況は、デバイスマネージャで見るよりも msd を実行した方が 視覚的に良くわかります。  ( msd では 【メモリエリアグラフ】の 横1列が16KBですから)  ※拡張カードとは言っても 普通のサウンドカードは "BIOS-ROM" を持っていないので、   EMM386.EXE との関連を考える必要はありません。 ========================== ☆また、「Xスィッチ同士」や「Iスィッチ同士」の 指定エリア  が 同じスィッチで ほぼ隣接している場合は、一括指定してもOKです。  例えば、  X=A000-C7FF X=C800-CDFF の記述は X=A000-CDFF と一括記述してもOKです。  X=C800-CAFF X=CC00-D0FF の記述は X=C800-D0FF と一括記述してもOKです。 ========================== ◇EMM386.EXE の 他のパラメータとして HighScan がありますが、  これは危ない指定です。  マザーボードによっては、Windowsが起動出来なくなります。 ========================== ☆以上で 【Config.sysでの Emm386.exeコマンド行】の記述方法を理解できたでしょう。  HDDの【ADAPTEC Simple_FD-Boot】直下の Config.sys・Autoexec.bat を修整できたら、   (修整の必要が無い場合もあります)  次に進んで下さい。 ========================== ◆ご自分のカード・SCSIドライブに必要な【ASPIマネージャ、ASPIドライバ】が  HDDの【ADAPTEC Simple_FD-Boot】直下に存在するか確認して下さい。    ・ASPI8DOS.SYS の代わりに 別のASPIマネージャを使うのであれば、      ASPI8DOS.SYSファイルを削除しないと 容量的にFDに納まりません。    ・ASPICD.SYS の代わりに 別のASPIドライバを使うのであれば、      ASPICD.SYSファイルを削除しないと 容量的にFDに納まりません。    ・ASPIDISK.SYS の代わりに 別のASPIドライバを使うのであれば、      ASPIDISK.SYSファイルを削除しないと 容量的にFDに納まりません。   ◇これらの "ファイルの置き換え"↑ で FD全体の分量が増えてしまうようであれば、    他の何かのファイルも削除する必要があります。    その場合の "削除候補" を以下に列記します。      優先削除候補 = Drvspace.bin (68KB)      次の削除候補 = Aspi8dos.sys・Aspi8u2.sys・Aspicd.sys・Aspidisk.sys              の内、ご自分が使わない物。      その次の削除候補 = Smartdrv.exe (45KB)      その次の削除候補 = Emm386.exe (134KB)    起動FDの構成ファイルは【Dos実行ファイル】ですから、    「削除しようか?。サイズは?」と考えて【右クリック⇒プロパティ】と操作しますと    自動的に【Pifファイル】が作成される物があります(exe、com、bat の場合)。     "プロパティdialogBox"を閉じて そのフォルダを見ると     【右クリックしたファイルの"拡張子無しファイル"】が自動生成されています。       (Dosプロンプトのアイコンで表示されます。)    この時に自動生成された【Pifファイル】は不要ですから 削除して下さい。      ※FDやCDに存在するファイルを右クリックして Pif生成される場合は       【Pifファイル】は C:\windows\PIFフォルダに作成されます。       この際 これも不要です。 ◆もう完成間近です。  この後の おおまかな手順としては、  【起動できるFD】を作成し、HDDの【ADAPTEC Simple_FD-Boot】を このFDにコピーします。  詳しくは この後を参照して下さい。   (【"起動できるFD"作成】の注意事項あり。下記を参照。) ◇下記の作成手順に従って  【起動できるFD】を作成し、そのFDの中のファイルを全て削除してから  HDDの【ADAPTEC Simple_FD-Boot】ディレクトリ配下 を全部コピーして下さい。    ※【ADAPTEC Simple_FD-Boot】直下の"沢山のファイル" が "FDのルート直下"に     コピーされるように コピーしてく下さい。  これで このFDで起動できます。  ≪起動FD の作成手順≫ :  1.【起動できるFD】の作成は マイコンピュータを開いて 必ず【通常のフォーマット】をします。         (空の状態で きれいサッパリとフォーマットされます)      ※【クィックフォーマット】は避けます。      ※"アプリケーションの追加と削除" での 起動FD作成 はしません。  2.フォーマット後に【完全スキャンディスク(書き込みテスト有り)】をします。      ※【クィックフォーマット】は フォーマット前のファイルシステムを流用しますから、       FDに傷があったり 静電気破壊されていた場合に 後で困ります。  3.もう一度【起動専用】でフォーマットして下さい。    この↑フォーマットが済んだら、FDのファイルを全て削除して    【ADAPTEC Simple_FD-Boot】の中のファイルを全部コピーします。      ※FDのファイルを削除する前に "エクスプローラ設定" で 「全てのファイルを表示する設定」       にしておいて下さい。      ※【起動専用】のFDフォーマットを行なうと判りますが、       直ぐにシステムファイルのコピーが始まります。       つまり フォーマット前のFDのファイルシステムを信用しているのです。 ◆【起動専用】もしくは【アプリケーションの追加と削除】以外のフォーマットをしたFD  ・・即ち 普通のフォーマットをしたFDに 【ADAPTEC Simple_FD-Boot】のファイルを  コピーしても FD起動する事は出来ません。  【起動できるFD】は、  エクスプローラで見えるファイルの他に【起動のためのローダー】と呼ばれる部分(MBR)が  含まれています。  つまり、エクスプローラで  【起動出来るFD】のファイルを【通常フォーマットFD】にコピーしても  上記の "ローダー部分" はコピーされないのです。    ※diskcopyコマンドを使えばコピーされますが、普通の方は使わない方が無難です。 ◆【ADAPTEC Simple_FD-Boot】のファイルを【起動出来るFD】にコピーする時、  Drvspace.bin は 必ずしもコピーする必要はありません。  Drvspace.bin は 【圧縮ドライブ】にアクセスするためのドライバ です。  現在のHDDは 密度が高い事が原因で HDDを【圧縮ドライブ】にすると問題が起きやすいです。  DrvSpace(DblSpace.bin)が正常に機能するか否かは メディアの平滑性に依存するからです。  従って、  HDDを【圧縮ドライブ】にしないのであれば "無用の長物" です。 ========================================== ★【ADAPTEC Simple_FD-Boot】で作成した起動FD のサブディレクトリ ・Cfg-stak.1、Cfg-stak.2、Cfg-stak.3 の "3つのサブディレクトリ" は  必須ではありません。  カスタマイズした config.sys や 変更前のファイルを退避しておくためのディレクトリ  です。 適当にリネームしたりして使って下さい。 ========================================== ★★★【Sub_Disk.#1】ディレクトリについて。 【Sub_Disk.#1】には、"Dosモード用の マウスドライバ" が入っています。 サポートされるマウスは 【PS/2タイプ】と【シリアルタイプ(Comポート接続)】だけです。 それ以外のマウスでは使わないで下さい。 ドライバは Mouse.com というファイルで、 単純な設定ファイルが Sub_Disk.#1\WIN_DIR\COMMAND に置いてあります(Mouse.ini)。 最初は 【PS/2タイプ用の Mouse.ini】を入れてあります。 このマウスドライバは 【msdコマンド実行】の前に mouse と実行して組み込むと便利ですから、 シリアルタイプのマウスを使っている場合は、 Sub_Disk.#1\WIN_DIR\COMMAND\CONFIG\SERIAL に置いてあるMouse.ini を Sub_Disk.#1\WIN_DIR\COMMAND に上書きコピーしておいて下さい。   ※【msdコマンド】は、     拡張カードの Romエリア等を【ADAPTEC Simple_FD-Boot】で起動して確認する     ためのコマンドです。      (【msdコマンド の使い方】は テキストの最後に説明があります。) ===================== 普通にフォーマットしたFDに ツリー構造ごと コピーして使います。 【Sub_Disk.#1ディレクトリ】=【FDのルートディレクトリ】となるように コピーして下さい。 <使い方> ◆【ADAPTEC Simple_FD-Boot】でのFD起動の途中で 【Sub_Disk.#1】に挿し替える  ように指示が表示されます。  挿し替えると 【Sub_Disk.#1】の主なコマンドツールが Ramドライブにコピーされます。   (FD起動の完了後に 他のFDに挿し替えても構いませんし、挿入したままでも構いません。)  "Ramドライブにコピーされないコマンド" としては msd や mouse 等です。  これらも FDを挿入していれば実行できます。 【ADAPTEC Simple_FD-Boot】のFD起動が完了しますと、  a:\WIN_DIR と a:\WIN_DIR\COMMAND の2つのディレクトリには【パス】が 自動的に追加設定されており、  FDを挿入しているだけで コマンド実行ができます。  3枚セットのFDの全てに 同一のディレクトリが存在し、それぞれ 異なるファイルが格納されていますから、   【Sub_Disk.#1】と【Sub_Disk.#2】の2枚を挿し替えて 使い分けて下さい。 ◆【ADAPTEC Simple_FD-Boot】でFD起動した後は、  HDDに対する【fdisk、format、sys 等のコマンド】も Ramドライブにコピーされます。  従って、  【Sub_Disk.#1】と【Sub_Disk.#2】のどちらを挿入していても【Winセットアップ前の処理】は出来ます。 <注 意> 【Sub_Disk.#1】には msd.bat と msd_us.exe が入っています。  この msd.bat は Win98元本の物を 少し改変してありますが、Win98元本の物で上書きしないで下さい。  Win98元本の msd.bat を実行すると、msdの実行後に【簡易英語モード】のままで終了します。  この原因は このコマンドfileが 米国版である事によると思われます。  これを修整する意味で msd.bat を少し改変してあります。 ========================================== ★★★【Sub_Disk.#2】ディレクトリについて。 普通にフォーマットしたFDに ツリー構造ごと コピーして使います。 【Sub_Disk.#2ディレクトリ】=【FDのルートディレクトリ】となるように コピーして下さい。 <使い方> 【Sub_Disk.#1ディレクトリ】と同じ使い方が出来ます。 こちらは【特殊なコマンド使用】を想定しています。Sub_Disk.#2 を使う事は あまり無いと思います。 【Sub_Disk.#1】と【Sub_Disk.#2】の2つがあれば ほとんどの非常事態での【一般的に必要なコマンド処理】ができます。  (GUI起動はできませんが。) ========================================== ★ご参考  1MBのメモリ空間(00000〜FFFFF)を分解すると、  00000〜9FFFF=コンベンショナルメモリ(640KB)  A0000〜FFFFF=UMA(上位メモリエリア),,,,384KB。         UMAの内、【EMSページフレーム領域】に16〜64KB使われる場合がある。         1ページ16KB。ただしWin_Dos標準のFEPでは「64KB連続エリア」の         確保が必須条件。         UMAから、システムエリアとページフレームを除いた残りのエリア=UMB。          (ドライバ等用に確保される)         DOS=HIGH,UMB の「UMB」は、この部分をDosが管理する、の意味です。 ========================================== ★★【msdコマンド の使い方】 ("msdによる解析方法" は この次の項目で。) ★デバイスマネージャでの【拡張カードの占有エリア 確認】の件ですが、  Win98も たまには間違えて報告することもあります。  そのような場合や "初めて使うカード" のエリアを調べるためには  msd を実行する事によって調べます。(msdの実行 +「msd と入力 + Enter押す」) ◇【Sub_Disk.#1】の WIN_DIRディレクトリに msdコマンドが入っています。  msdコマンドを実行する前に 「Mouse と入力 + Enter押す」を実行しておくと便利。   ※ここで実行した Mouseコマンドは "Dosモード専用" です(Mouse.com)。   ※msdコマンドは Win98_GUIのDos窓でも実行できますが、GUI実行すると "正しいメモリ状況" が    表示されません。 ◇Mouse.com を組み込んでから msdを実行してみて下さい。  msdのメニュー画面が表示されたら、【Memory】という項目を選択してみて下さい。  すると、「メモリエリア」がグラフ表示されます。  この時の【メモリエリアグラフ】の 横1列が16KBで、四角いマウスカーソルの1個が1KBです。    ※msdコマンドは windowsのGUIで実行するのはお勧め出来ません。     windowsのGUIで実行すると msdの分析結果はハードウェア構成を正確に反映しません。     PCを起動した時の'Dos環境'で実行して下さい。 ◇「Win98の msdコマンド実行」の内実は  【msd.bat (簡易英語モード) ⇒ msd_us.exe】で、これが標準です。    ※【ADAPTEC Simple_FD-Boot】でFD起動した場合は ↑これをきちんと実行出来ます。 ◇【HDD起動の Safe_Command_Promptモード】の場合は  「Win98の 標準のmsdコマンド」は実行できません。 (↓以下、説明と対策) 簡易英語モードに切り替わるためには【nlsfunc.exeの事前実行】が必要です。  という事は、  【msd.bat ⇒ msd_us.exe】の実行は【HDD起動の Safe_Command_Promptモード】では 実行不可能です。 ・しかし、【HDD起動の Safe_Command_Promptモード】でこそ msd実行が必要な場合があります。  その場合は、「msdと入力する【msd.bat ⇒ msd_us.exe】の実行パターン」を諦めて下さい。  【HDD起動の Safe_Command_Promptモード専用】としては  【Sub_Disk.#2】の WIN_DIRディレクトリの msd.exe を実行するか、   Msd_safe と入力して実行するための【Msd_safe.bat】を実行して下さい。    ※【Msd_safe.bat】は実行するために制限があります(後述。)    ※【Sub_Disk.#2】の WIN_DIR\ msd.exe は Win95用ですが、     Dos起動の状態では 問題なく実行できます。(バージョンが少し古い。) ◇【Msd_safe.bat】の実行    【HDD起動の Safe_Command_Promptモード】専用です。     また、FD起動した場合は 【Msd_safe.bat】を実行する必要はありません。      (普通に msd実行して下さい。)  実行時に 条件が揃っていないと 強制終了されます。  ・条件1--実行前に Windowsフォルダの "パス文字列" を設定しておく。  ・条件2--これを"実行するディレクトリ"に Country.sys が存在している必要があります。       (即ち、A:\WIN_DIR に移動してから実行しないと 強制終了されます。)  Msd_safe と入力実行する前(!)に【 WinDir という環境変数】に手動で  【「あなたのWindowsフォルダ」のパス】文字列を設定しておいて下さい。  これが設定されていない場合も 強制終了されます。    例 : set WinDir=C:\WINDOWS        ↑ この1行を手入力で実行してから Msd_safe.bat を実行して下さい。      (Win98が インストールされている必要があります。)   ※ちなみに、「Safe_Command_Promptモード」では、Autoexec.batが実行されていない    ために nlsfunc.exe が実行されていない。    これが原因で「英語モード ⇒ 日本語モード」の簡易切り替え(chcp)が出来ない。    結果として、msd_us.exe が実行不可能 という現象となる。 ========================================== ★★【msdコマンド実行】による解析の操作方法(要点)  "初めてのカードの占有領域を【Dos起動⇒msd実行】で解析する.txt"  を参照して下さい。   ※emm386.exe で【領域指定(Xスィッチ・Iスィッチ)】をする意味や    その理屈については、本テキストに詳しく説明してあります。 ==========================================