過去の桐井戸端BBS (桐ver.5)
4600 EMSメモリが動作しません 森本 勝彦 2000/02/12-05:18
Windows 98 Second Editionを使用して桐Ver5(DOS)を起動させると"プログラム
が大きくメモリ内に収まりません"と表示します。
桐ショートカットプロパテイのメモリを見ると、EMSメモリに"このコンピュターで
はMS-DOSセッションのEMSメモリが設定されていません"と表示します。
[CONFIG.SYS]
device=c:\windows\himem.sys
device=c:\windows\emm386.exe ram
devicehigh=C:\WINDOWS\biling.sys
devicehigh=C:\WINDOWS\jfont.sys /p=C:\WINDOWS
devicehigh=C:\WINDOWS\jdisp.sys
devicehigh=C:\WINDOWS\jkeyb.sys /106 C:\WINDOWS\jkeybrd.sys
devicehigh=C:\WINDOWS\kkcfunc.sys
devicehigh=C:\WINDOWS\COMMAND\ansi.sys
files=30
DOS=HIGH,UMB
[コンベンショナルメモリ] 553k

Windows 98 Second Edition以前のWindows98・Windows95ではEMSは正常に動作
します。何か特殊な設定があるのでしょうか。
どなたか教えて下さい。

4603 Re:EMSメモリが動作しません hidetake 2000/02/12-08:08
記事番号4600へのコメント
Windows98 SE だからと言って、EMS が確保できなかったことは
ありません。桐も動作させたことがあります。

>Windows 98 Second Edition以前のWindows98・Windows95ではEMSは正常に
>動作します。何か特殊な設定があるのでしょうか。

これは同じマシンでと言うことでしょうか?

桐で使用できる EMS を確保するには UMB 領域に64KB 以上連続した EMS
ページフレームを取れるだけの空きが必要です。
これは PC (マザーボード)とか、搭載している拡張カードとかが影響して
きます。
例えば、私のところでは、SCSI カードと IDE HDD を使う IDE ボードの
両方を搭載した場合、両方の BIOS が UMB を使ってしまい、EMS を確保
する領域が無くなり、EMM386.EXE RAM を指定しても実際には EMS を確保
できなくなりました。こんな場合は、BOOT しないほうの BIOS を使わない
ように設定する必要があります。

ボードを搭載せず、この様な症状が発生する場合は、マザーボードの作り
やグラフィックボード BIOS の位置に関係する場合がありますが、
強制的に UMB を探しだし無理やり使ってみる HIGHSCAN オプションという
ものもあります。

DEVICE=\WINDOWS\EMM386.EXE HIGHSCAN RAM

ただし、これは巧く動作する場合と、間違って必要な領域を割り当ててしまい
起動時ハングアップしてしまう場合があります。

また、UBM の空き領域の位置の関係で EMS の空き領域が確保できない場合
は、FRAME オプションで場所を手動で割り当てなければならない場合も
あります。

DEVICE=\WINDOWS\EMM386.EXE HIGHSCAN RAM FRAME=CC00

ただし、この場合 UMB のメモリマップを把握している必要があります。

最後に、一番有効かなと思うのは、グラフィックで使う UMB 領域のうち
モノクロ領域を強制的に UMB に割り当て、その領域を EMS 以外に使える
ようにし、EMS 領域が確保しやすくするには I=B000-B7FF とします。

DEVICE=\WINDOWS\EMM386.EXE RAM I=B000-B7FF

何れにせよ、そのパソコンのメモリマップを把握している必要があります。

ちなみに、そのパソコンとはどこのメーカーでしょう?
使っているボードとかは?

私の現在の設定は

DEVICE=\WINDOWS\HIMEM.SYS /TESTMEM:OFF
rem DEVICE=\WINDOWS\EMM386.EXE HIGHSCAN RAM FRAME=CC00 I=B000-B7FF I=CA00-F7FF
rem DEVICE=\WINDOWS\EMM386.EXE RAM FRAME=CC00 I=B000-B7FF I=CA00-F4FF
DEVICE=\WINDOWS\EMM386.EXE RAM FRAME=D400 I=B000-B7FF I=D400-E3FF

です。

詳しくは C:\WINDOWS にある CONFIG.TXT や MSDOSDRV.TXT をごらん下さい。


4604 Re:EMSメモリが動作しません hidetake 2000/02/12-08:13
記事番号4603へのコメント
あと、雑ネタになるけれど、Windows98 の跡継ぎの Windows ME は
DOSが本当に動きにくくなるようですね。

CONFIG.SYS や AUTOEXEC.BAT も参照しなくなるみたいで、環境変数
を扱うものも駄目みたい。EMS はどうなるのかわかりませんが、
こんな状況なら、使い無くたくても新しい機種では Windows2000 を
選択しなければならないのか...


4634 Re:EMSメモリが動作しません Ogo 2000/02/14-02:36
記事番号4604へのコメント
以前、宮城さんのページで、ご本人が四苦八苦した状況が書いてありました
けど、最新の機種の中には「 EMS と SCSI ボードが両立できない」タイプ
が出現しているようです(メーカーサポートの正式解答結果による)。

EMS という規格自体が「メモリ 16M の壁」を前提にしてありますからね。
Linux などでも、この付近のメモリをどう扱うか( BIOS の設定やマザー
ボードの種類)で連続したメモリを認識できずに、「メモリ 64M 積んでも
OS が 15M しか認識しない」という悩みを時々聞きます。
4638 Re:EMSメモリが動作しません hidetake 2000/02/14-07:39
記事番号4634へのコメント
>けど、最新の機種の中には「 EMS と SCSI ボードが両立できない」タイプ
>が出現しているようです(メーカーサポートの正式解答結果による)。

すみませんが、この辺については知りませんので
メーカー名とか機種名とか教えてください。 _o_
4646 Re:EMSメモリが動作しません hidetake 2000/02/14-08:55
記事番号4638へのコメント
>>けど、最新の機種の中には「 EMS と SCSI ボードが両立できない」タイプ
>>が出現しているようです(メーカーサポートの正式解答結果による)。

ついでに書くなら、このような制限がある M/B ボードなら、
EMS に限らず、使えないボードがあるとか、他のメモリ
マップ上の制限も出てきそうなハードですね...
4647 Re:EMSメモリが動作しません 宮城 2000/02/14-10:35
記事番号4638へのコメント
たとえばコンパックだと・・・。

http://www.compaq.co.jp/service/faq/faq0406.html

これはあくまでも例で他社でもあるようです。
4648 Re:EMSメモリが動作しません hidetake 2000/02/14-11:05
記事番号4647へのコメント
宮城さん、ありがとうございます。

Compaq ですと独自マザーですか...
現在となってはメーカーもこの程度の対応の方が
楽なのでしょうね。
4649 Re:EMSメモリが動作しません hidetake 2000/02/14-11:22
記事番号4648へのコメント
>現在となってはメーカーもこの程度の対応の方が
>楽なのでしょうね。

何故なら、上記 FAQ は EMS を使うようにするには
どうしたら良いかでは無く、単に SCSI を入れたら
途中で止まることに対する対応だから...

しかし Compaq とか使ったことは無いけど、どんな
メモリマップをしているのかな?
機会があったら見てみたいな... (^_^ゞ

それに、上に書いたけど、これキシのことで UMB に
空きが無くなるなら、増設できるボードも制限がキツ
そうですね。
4652 Re:EMSメモリが動作しません hidetake 2000/02/14-17:33
記事番号4649へのコメント
>http://www.compaq.co.jp/service/faq/faq0406.html

あと、上記例を推測するに

SCSI を追加した場合に EMS を確保する領域が持てなくなる
のは、機種によってはグラフィックボードの BIOS が C7FF
を越えて専有しているものがあり、その為に SCSI BIOS も
通常の C800-CBFF の 16KB が後ろへ押しやられている場合
があります。Adaptec の場合もう少し喰って 24KB かな?

ひょっとして Compaq だから純正では Adaptec を使うだろ
うから、更に空き領域を食潰すのかな?

そんな場合に、EMM386 自体が使うメモリが、通常 EMS に
割り当てられる D000-DFFF にかかってしまい EMS 領域が
確保でき無かったと考えられます。
EMS のページフレームは 400h ごとにしか取れないないの
で、少しずれただけで自由度は無くなります。

こんな場合、NOMOVEXBDA オプションで UMB をなるべく使わ
ないように指定するとか、FRAME オプションで積極的に EMS
の使うべき領域を指定します。

それと、SCSI BIOS で使われた分ぐらい、I=B000-B7FF で
通常使われない領域を UMB として強制的に割り当ててみたら
いかがでしょう? SCSI BIOS の 16KB とか 24KB やそこら
これで充分補えると思いますが...



あと、Ogo さんがどこかで書かれていた、最悪 DOS を立ち
上げればよいという幅田さんのコメントに、今回と同じよう
文面を書かれておられましたが、どうしてもと言うのであれ
ば、PC/AT 互換機には QEMM と言う、それは凄い EMS ドラ
イバがあります。ステルス機能で ROM 領域も RAM に割り
当てられるので、その気になればたいした問題では無いで
しょう。

それに、QEMM はステルス機能は無理ですが、Windows でも
使え、EMM386 よりは賢く UMB も効率良く使えます。
さすがに今ではそこまでする人もメリットも無いと思われ
ますが... 昔やってました (^_^;

戻る