Mail Archives: djgpp/2009/01/03/16:00:22
Hi,
On Jan 3, 1:24 pm, Eli Zaretskii <e DOT DOT DOT AT gnu DOT org> wrote:
> > From: blueice <biject DOT b DOT DOT DOT AT gmail DOT com>
> > Date: Sat, 3 Jan 2009 10:45:57 -0800 (PST)
>
> > > > I have used DJGPP for years. The problem is this my executable does
> > > > not run on a VISTA 64 bit machine.
>
The NT series has always had DOS compatibility issues as it's not
based upon DOS like Win9x, etc. Win2k had some kind of memory bugs
which had to be worked around. Then Vista disabled full-screen and (by
default) limited DPMI memory to 32 MB. However, in this case, it's not
(directly) Microsoft's fault. AMD64 long mode doesn't allow 16-bit
programs to run at the same time as 64-bit stuff. Only the emulation
mode allows 16- and 32-bit stuff (but no 64-bit then). The latest
DOSEMU for GNU/Linux emulates the 16-bit stuff under 64-bit mode, but
so far, Microsoft hasn't written / published their own NTVDM64
(sadly).
> Well, it Vista 64 is documented to be unable to run 16-bit (DOS)
> applications, then I guess you are out of luck: DJGPP programs _are_,
> as far as Windows is concerned, 16-bit DOS executables.
The stub is 16-bit, and the C lib does call BIOS and MS-DOS interrupts
a lot, so there's not much you can do (that I'm aware of). RSXNT/DJ
(which is old / abandoned) used to create dual DOS/Win32 .EXEs. I
don't know how to combine a DJGPP + Win32 .EXE, though. Anyways, for
building on Windows I would suggest Cygwin (unless your app must be
closed src, which I think Cygwin forbids by default), esp. since you
can also optionally get the MinGW runtime support so you can compile
for either (and Cygwin uses its own .DLL and doesn't use buggy MSVCRT
but is *allegedly* slower). Cygwin has lots of ports of stuff, so you
can't really go wrong there (right, DJ?). ;-)
Another option is OpenWatcom, which transparently supports both 32-bit
DOS and Windows, but its DOS support lacks much of the niceties of
DJGPP (LFNs, POSIX). You may be able to get around some of that by
trying Japheth's HX (either linking his Win32 libs statically to
your .EXE and tacking on HDPMI32 for a "special" DOS .EXE else just
letting the user run the static Win32 .EXE under HXRT emulation setup
in pure DOS).
Anyways, if none of that sounds appealing, you're stuck to just using
either DOSBox or some virtualization (e.g. VirtualBox or QEMU or
BOCHS) with FreeDOS.
P.S. Why are you running 64-bit Vista anyways? Unless you have / need
> 3 GB of RAM, I think it's overkill.
- Raw text -