Date: Wed, 12 Mar 1997 15:58:41 +0200 (IST) From: Eli Zaretskii To: Paul Derbyshire cc: djgpp AT delorie DOT com Subject: Re: make conflicts with turbopascal In-Reply-To: <5g5nc7$npc@freenet-news.carleton.ca> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII On 12 Mar 1997, Paul Derbyshire wrote: > Windows 95 is a DPMI host and runs these, and DOS/4GW programs, without a > hitch. Why is CWSDPMI unable to? The problem is not *running* those programs per se. CWSDPMI is usually not loaded into memory (it is loaded by the DJGPP startup code and unloaded when your program exits), so it doesn't interfere with invoking those programs from the DOS prompt. The problems begin when you run 16-bit DPMI programs or DOS/4GW from within a DJGPP program. In that case, CWSDPMI *is* loaded into memory. If you run a 16-bit DPMI program (like Borland's bcc.exe) from within a DJGPP program, it won't run on Windows 95 also, because 32-bit DPMI clients cannot be mixed with 16-bit DPMI clients. Try invoking bcc.exe from DJGPP's make.exe on Windows 95, and you will see the same problem, although CWSDPMI is not loaded at all. Mixing 16- and 32-bit clients is simply forbidden by the DPMI 0.9 spec. The case of DOS/4GW is just some obscure incompatibility between CWSDPMI and DOS/4GW that didn't get resolved in all cases (some programs that use DOS/4GW *can* be run under CWSDPMI, others cannot). Anybody with enough resources and motivation is welcome to try to fix this and post a patch to CWSDPMI; the sources are open to all, and I'm sure Charles Sandmann will readily help with whatever questions you might have. Personally, I have found out that in most cases either booting into Windows or finding a DJGPP-compiled version of the same program will solve the problem. > Addendum: W95 is a *32-bit* DPMI host. The problem is in mixing 32-bit and 16-bit *clients*, not hosts.