[22855]  9821MS-DOS6.2のEMS拡張方法?
投稿者:バナナ さん   2004-11-01 10:43:54
いろいろ調べているのですが、お分かりのかたがいれば…と思い質問させていただきます。9821V13改(96MBメモリー済み)をMS-DOS6.2で使用しています.EMSを使うアプリケーションソフトを自作して使っているのですが、今回大きなデータを処理する必要があって、EMSで32MB以上使う方法を探しております.アイオーデータのVMM386.exeを使って64MBまで確保できたのですが、OS側が32MBまでしかアクセスを許してくれないようです. 何かよいお知恵があればご紹介いただければ幸いです. ヨロシクお願いします。
  1. KAZZEZ さん   2004-11-01 11:01:05
    詳しくは知りませんが、EMS自体が最初から
    最大32MBまでの規格だったように記憶しています。

    VMM386は確保したプロテクトメモリを必要に応じてXMSとEMSに動的に割り振りますから、
    最初は総容量32MB以上のメモリを認識できますが、
    その中でEMSとして使えるのは32MBまでということではないでしょうか?
  2. KAZZEZ さん   2004-11-01 11:04:43
    もし可能なら、XMSを利用したほうが無難かと思います。
    XMSであれば、バージョンの新しいメモリマネージャを用意することで
    64MB以上も認識できたと思いました。
  3. バナナ さん   2004-11-01 13:54:29
    もともとのEMSの規格が32MBまでなのは承知のうえで、無理をできないものかと考えております。現状のMEMコマンドの後半は、96MB実装の9821上で、
    全 EMS メモリ 63,120K (64,634,880バイト)
    空き EMS メモリ                29,568K (30,277,632バイト)
    最大実行可能プログラムサイズ           496K   (507,440バイト)
    最大空きアッパーメモリブロック          16K    (16,080バイト)
    となっており、96MBのうちEMSとして64MBを確保しているようなのですが、32MB分しかページを確保できないようです. 現状MS-Cを使ってOSのint86割り込みを通してEMSをハンドリングしています。なんとかできないものなのでしょうか? よろしくお願いします。
  4. KAZZEZ さん   2004-11-01 16:05:40
    そういうことでしたか。失礼しました。
    確かにWindows付属のEMM386.EXEではDOSモードで32MBしかEMSを認識しないようですが、
    他のメモリマネージャでは仮想EMSを32MB以上認識するものがありました。
    フリーのメモリマネージャVEM486.EXEやLEMM.EXEでも同じ症状でしょうか?
    また、メモリマネージャのオプション設定に何か説明は無かったでしょうか。
  5. バナナ さん   2004-11-02 00:05:20
    フリーの方は試していません。今度試してみます。オプション設定の方はマニュアルを熟読しましたので大丈夫だと思います.(実際にMEMコマンドではEMSとして確保しているようですので、、、)問題はOSでしょうかね。あと、アドバイスでXMSという方法もあるようなので、こちらも試してみたいと思います。引き続き何かよい方法があればよろしくお願いします。
  6. Nr166er さん   2004-11-02 01:23:51
    推測の域ですが、MEMコマンドはDOS純正ですので、EMS32MBが前提かもしれませんよ。
    コマンドラインでVMM386 /Iを実行すると詳細情報が表示されるはずです。
    現在P6機(VMM386.EXE動作不可)しか稼動可能なものがないので実証できなくて申し訳ありません。
  7. KAZZEZ さん   2004-11-02 10:54:33
    DOS6.2は手元にないので分かりませんが、少なくとも95のDOSモードのMEMコマンドであれば、
    device=LEMM.EXE -Z
    で、手元のP6機(MEMSETUPで256MB化)でEMS 253MBを返しました。
    ただ、そこまでEMSを使うソフトが無いので実際に使えるかどうか確認していませんが・・・。
  8. バナナ さん   2004-11-02 21:44:39
    MEMコマンド以外でも、実際にアプリケーション内でEMSにアクセスしようとして空きページを問い合わせる処理をしてみても32MB分というリターンコードを返してきてしまいます.しらばっくれて32MB以上を確保しようとしてもページ不足のエラーになってしまうようです。INT86(0x76)の部分を書き換えないといけないのでしょうか??? それならXMS対応に書き換えたほうがいいのかもしれませんね。
  9. 旧蜂のムサシ さん   2004-11-04 22:26:12
    LEMM.EXEは16ビットレジスタでパラメータをやりとりするEMS規格のままに作られているようですね。(Max 1GB !)

    ダウンロードはここで出来ました。
    ttp://hp.vector.co.jp/authors/VA037191/Pt/index_/lemm.html
  10. 旧蜂のムサシ さん   2004-11-05 00:33:19
    (起動してもエラーにはなりませんが)DPMI.EXEを起動してはいけないようです。
    それさえ注意すれば、Windows3.1 BORLAND C++3.1なども特に問題なく使えますね。
  11. 旧蜂のムサシ さん   2004-11-05 12:21:15
    Vectorでは「るなえむ」で登録されているんですね。LEMMで検索しても出てきません。