From: Eric A. <e....@jp...> - 2024-08-21 20:33:17
|
Hi Ralf and Steve, Our EMM386 has been supporting VCPI for quite a while ;-) In ancient times, free EMM386 versions without VCPI existed. Those were not even compatible with DOS extenders or DPMI hosts (CWSDPMI, DPMIONE etc.) which was quite a limitation. GEMMIS is a different story. It tells Windows that internal state of EMM386 is structured exactly as Windows expects, so it can import the state and replace the entire EMM386 in RAM by something built into Windows itself, on the fly, which it has to do in 386enh mode. WfW is no fun without 386enh mode, Win3 was acceptable, Win9x is not even possible without it. The easiest and most obvious solution to that problem is to use the EMM386 for DOS which comes with Windows itself :-) But only Windows cares about GEMMIS, no other apps do. So while it would be nice to have something more modern than MS EMM386 to use with MS Windows, you can still use all Windows features by sticking to MS or other closed source EMM386, or by just not loading any EMM386 at all. https://en.wikipedia.org/wiki/EMM386#Overview Regarding licenses, the mentioned Wikipedia article tells us that DOSBOX and 386MAX both support GEMMIS, so we have GPL2 and GPL3 licensed implementations of GEMMIS, which is a lot better than having to rely on ancient MS DOS releases. https://github.com/sudleyplace/386MAX/tree/main/386MAX Look for the OEM_WIN3 case. It affects 45 source files :-/ In particular, "EMM Paging Import" stuff in 9 files matters, but there also is Windows 3 UMB Instance data and more. I believe 386MAX makes itself Win3 compatible on demand: See im particular QMAX_IM2.ASM and QMAX_OVR.ASM which also talks of the Win3 "unusual way in which V86MMGR..." :-p It supports GPIS 1.11 with and GPIS 1.0 without UMB stuff. The problem is that most drivers which are not MS EMM386 and do not want to limit themselves to the very same data structures for state as MS EMM386 used have to calculate structures looking like the MS ones to satisfy Windows. Implementing EMM386 already is very challenging. Adding GEMMIS support will make your code more ugly and complex. Regards, Eric PS: How about just using 386MAX if you prefer open source instead of old MS EMM386 bundled with Windows? Yet another method which avoids having to do huge updates in JEMM386. 386MAX also supports I/O trapping, nice for virtual SB16 style drivers, as MS EMM386 compatible int 2f.4a15 API :-) Be aware that 386MAX has > 200 000 lines of ASM and INC :-o |