-
LEMM v5.19a - reiria
2023/12/26 (Tue) 23:23:39
・-!Z を -Z と一緒に指定しなくても、-!Z 単体で -Z -!Z 同等にしました。
・認識メモリ量は自力、CPU DX だけシステム共通域にする -Z! を追加しました。
それぞれの違いをまとめると、
認識メモリ量 CPU DX
-Z 自力 ソフトウェアリセット
-Z! 自力 システム共通域 (v5.19a 以降指定可)
-!Z システム共通域 システム共通域 (v5.19a 以降単体指定可)
となります。
※通常の -Z でハイパーメモリが使えない場合は -Z! か -!Z にして下さい。
・エミュ版の UCGW をエミュレータ及びエプソンマシン等の実機に対応しました。
新しいエミュ版の UCGW は通常版と異なり、
・INVLPG 命令と CR0 bit16 WP が無いマシン。
・I/O ポート A1h A3h A5h が出力値を読み出せないマシン。
でも動作するようになっています。
※エミュレータの CPU が 486 以降でも WP を使わない場合があります。
※ WP を使う場合でも挙動が実機と異なる場合があるようです。
・-UZ が下位メモリ 640K 以外 (SWITCH MY[n]) で無効だったのを対応しました。
Re: LEMM v5.19a - 通りすがり
2024/03/05 (Tue) 11:43:47
久しぶりに覗いたら5.19aへのアプデ見つけ、早速ダウンロードさせていただきました。ありがとうございます。
不躾なお願いですが、DOSUMBの再アップをお願いすることは可能でしょうか?
再配布 - reiria
2024/03/05 (Tue) 21:06:09
DOSUMB 等の以前再配布したもの全て、現在は再配布しておりません。ご要望にお応えできず申し訳ありません。
Re: LEMM v5.19a - 通りすがり
2024/03/05 (Tue) 21:45:16
仕方ないですね
ありがとうございます
Re: LEMM v5.19a - drachen6jp
2024/04/23 (Tue) 22:19:22
度々すみません。
IntDCのCL=81,CL=82についてです。
ここにまとまった文章がありますが、出典はundocumented9821のBIOS編だそうです。
https://gist.github.com/lpproj/4ac479989a15214da52c6890a331e047
また引用された人によるFreeDOS(98)のソースには中身が詳しく書かれていましたのでリンクを貼っておきます。
https://github.com/lpproj/fdkernel/blob/nec98test/nec98/kernel/int29dc.c
手元で調べた感じですが
Windows3.1のスタンダードモードがこのファンクションでメモリを確保しているような気配がありました。
お時間ありましたら対応していただけるとうれしいです。
Re: LEMM v5.19a - reiria
2024/04/24 (Wed) 00:09:45
仮想 86 なメモリマネージャでそれらのファンクションはサポートしなくて構わないのかと思い込んでいました。
Windows 3.1 のスタンダードモードが動くかも?ということも知りませんでした。色々確認してみます。
Re: LEMM v5.19a - reiria
2024/04/26 (Fri) 00:15:58
当方にある 98 用 Windows 3.1 は MS 版と EPSON 版で、NEC 版については不明ですが、
今までのところ、Windows 3.1 の実行過程で INT-DCh CL=81h,82h は使われていないように思われます。
ただし、NEC 版 himem.sys (xmsmmgr) を組み込んだ後、
win.com を実行するまでの間に XMS ファンクションを一度も実行していない場合、
最初の XMS ファンクションで NEC 版 himem.sys (xmsmmgr) 自身が INT-DCh CL=81h AX=0000h を 1 回実行し、
その時点の拡張メモリ量を確認して自身を初期化するようです。
このような仕組みの XMS ドライバは、当方で確認したものでは NEC 版だけのようです。
あと気になるのは、NEC 版 Windows 3.1 の場合ですが、
NEC 版なら INT-DCh CL=81h,82h を使っていても不思議ではない予感はします・・・ (^^;
> Windows3.1のスタンダードモードがこのファンクションでメモリを確保しているような気配がありました。
とのことですが、NEC 版でしょうか?
Re: LEMM v5.19a - drachen6jp
2024/04/26 (Fri) 10:38:35
調査ありがとうございます。
こちらの状況を説明したいと思います。
Windows3.1はNECCD版とMS版を持っています。
どちらもスタンダードモードが起動できませんでした。
今触っている機種はAsのハイパーメモリ状態です。メモリ事情がややこしくないPCI機でも同様の気配でした。
MS-DOSは6.20でHIMEM.SYSやXMSMMGRの後付け実行の後ですと
Windows3.1はエンハンスドモードもスタンダードモードも起動してくれます。
LEMMではスタンダードモードで起動できません。LOGOで固まっているように見えます。
しかしLEMMでもSETUPプログラムのGUI部分には進むことができますし、インストール完了できますし
386エンハンスドモードは何事もなく起動できます。(!Zによるメモリ量検索方法の追加、ありがとうございます。)
ところでFreeDOS(98)を使うとエンハンスドモードはDOS内部の違いにより起動できないことになっているのですが
スタンダードモードは起動可能であるとされています。
付属のHIMEMX.EXEというものを使ってスタンダードモードの起動ができました。
ですがこのHIMEMX.EXEをDOS6.2で使用するとWindows3.1のスタンダードモードが起動できなくなります。
その際に
"HIMEM.SYSが組み込まれておりXMSメモリが十分にあるか確認してください。"
のメッセージが出ます。
もちろんエンハンスドモードは何事もなく起動できます。
FreeDOS(98)はOSがIntDCのCL=81、CL=82をやっています。
MS-DOSの場合はHIMEMがIntDCのCL=81とCL=82をやってそうな気配がありました。
HIMEMXはIntDCをフックしていません。
この状況からIntDCが怪しいと睨んでしまいました。
現在HIMEMX.EXEの改造に取り組んでいます。IntDCのフックでMS-DOS6.20でもスタンダードモードで起動できてしまえば
予想が正解なのですが、間違えていそうですね。
追加で気づいたことですが(こちらの方が重要情報)
MS-DOS6.20でもADDDRVで後付けでHIMEMXを動作させるとスタンダードモードが起動できてしまいました。
IntDCは全く関係がないかもしれません。お手数かけます…。
このことからDOS=LOWで起動してみるとDOS6.20+HIMEMXでスタンダードモードがあっさり起動しました。
この付近に何かがあるかもしれません。
(DOS=LOWでもLEMMではだめでした…。)
ついでに以前のお話の続きですが
ハイレゾ機ではInt1F,AH=90hがCPUSHUTDOWNをやっていました。
そしてそれをHIMEM.SYSがハイレゾ機特有動作の最中に使用しています。
とても困りました。そのためHIMEMX.EXEの改造に取り組んでいます。
Re: LEMM v5.19a - drachen6jp URL
2024/04/26 (Fri) 22:13:42
ハイレゾ用メモリマネージャの作成と同時にWindows3.1の起動時にIntDCを呼んでいるかだけをためしてみたところ全く呼び出されていませんでした。
無駄なことを申してすみませんでした。
ただ実動作を見ているとIntDCのCL=82hの返事はFreeDOS(98)のソースのものとは違っているように思えました。
AXが現在使用可能量(128kB単位)
BXがその最低位アドレス(64kB単位)
DXがその最高位アドレス(128kB単位)
のような感じだけは受けました。
スタンダードモードの実行可否が
DOS=LOWとDOS=HIGHで変わるのは確かなのですが、原因が結局つかめませんでした。
お時間とらせてしまって申し訳ないです。
Re: LEMM v5.19a - reiria
2024/04/26 (Fri) 23:26:08
INT-DCh CL=82h については、水を差すようで申し訳ないですが、お気づきの内容とほぼ同様のことが、
> ここにまとまった文章がありますが、出典はundocumented9821のBIOS編だそうです。
この出典により詳しく書かれておりまして、ノーマルとハイレゾの違い等も書かれております。
Windows 3.1 スタンダードモードについては、正確なことはよくわかりませんが、
MS 版の setup.txt にスタンダードモードの場合は EMM386 に /UMB を指定するなと書かれていますので、
要するにこれはたぶん、ページングを使ったメモリ環境をスタンダードモードで継承する気がない(?)のかも。
(EMM386 以外も UMB を作りさえしなければいける、というわけでもない)
ただ、EPSON 版のスタンダードモードは UMB 有でも起動して DOS プロンプトも使えるんですよね。
(大概の仮想 86 メモリマネージャであっさり起動する)
MELEMM や VMM386 のマニュアルとか見ても、スタンダードモードの事情はどうもはっきりしないというか、
VMM386 の古いバージョン(3.16)の頃は EPSON 版だけ対応と明記されてたぽいですが・・・。
> ハイレゾ機ではInt1F,AH=90hがCPUSHUTDOWNをやっていました。
以前、ハイパーメモリの件で、
> INT-1Fh AH=90h もハイパーメモリの対応機種なら 286 タイプじゃないでしょうから大丈夫そうですね。
って書きましたが、この認識は甘かったと・・・ (^^;;;
Re: LEMM v5.19a - リウ(drachen6jp) URL
2024/04/27 (Sat) 00:25:14
お返事ありがとうございます。ゴールデンウィーク直前のややこしいタイミングにお手を煩わせてしまって申し訳なく思います。
undocのBIOS編も再度読み直したいと思います。(私の近場では京都府立図書館に蔵書されています。)
EPSON版の動作の説明もありがとうございます。
LEMM v5.19c - reiria
2024/05/13 (Mon) 07:39:54
v5.19c のエンバグで、LEMM + や LW [GRPH]+[+] のタスク生成時に [Y/N] やハングするバグが見つかりました。
次版で修正します。
Re: LEMM v5.19c - reiria
2024/05/13 (Mon) 08:33:21
この不具合は常に再現するわけではなく、
・LEMM -W を実行した時と LEMM + を実行する時の LEMM.exe のロードアドレスが違う場合。
例
>LEMM -Z
>LEMM -W
>command
>LEMM +
・LEMM -W の実行後、コンベンショナルメモリの空き領域を別の値に書き換えてから LW [GRPH]+[+] した場合。
例
>LEMM -Z
>LW -S
>LEMM -W
>A4 umec 0
>[GRPH]+[+]
という条件で再現します。
LEMM v5.19e - reiria
2024/05/25 (Sat) 12:28:07
・LEMM + や LW や & コマンド のタスク生成が変になる不具合を修正しました。
(v5.19c のエンバグ)
・LAR/LSL/SLDT/STR/VERR/VERW/ARPL を仮想 86 モードで実行出来るようにしました。
(オプション -!P で無効)
VERR/VERW は仮想 86 モードの特権 3 ではなく CPL=0 の実行結果になります。
LEMM v5.19g - reiria
2025/01/07 (Tue) 23:58:43
・Cx486 系で認識メモリ量の自力検出に失敗する場合があったのを改善しました。
LEMM v5.19i - reiria
2025/05/22 (Thu) 22:16:14
・キャッシュフラッシュ回数を取得出来るようにしました。
(取得される回数に LEMM.exe 自身の組み込み処理内の回数は含まれません)
・キャッシュフラッシュ回数、hlt 回数を表示する lc.com を同梱。
・-C -!C を同時に指定すると INVD WBINVD を実行せずにスキップさせるようにしました。
(LEMM.exe 自身の INVD WBINVD も実行されなくなります)
Re: LEMM v5.19i - KAZ.K
2025/05/23 (Fri) 13:15:46
にょ?
これは特権でトラップできた回数の勘定ですにょ? 外から入ってきたFLUSH#は勘定できない...よね??
Re: LEMM v5.19i - reiria
2025/05/23 (Fri) 14:48:12
トラップ出来た回数と、LEMM.exe 自身が DMA とかでやってる回数の合計でして、
要するに LEMM.exe 内のキャッシュフラッシュルーチンが実行された回数というだけですヌ(^^;