Mail Archives: djgpp/1997/03/12/09:10:19
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.
- Raw text -