[ros-dev] (Free)DOS subsystem
myriachan at cox.net
Thu Aug 31 06:18:27 CEST 2006
> Hmm, I'm not sure if it is really even necessary to directly support DOS
> programs. One thing I thought of that I should mention here is that
> Microsoft doesn't even support DOS programs at all with their latest
> versions (Windows XP and Server 2003 x64 Editions). However, that isn't
> really a problem since there are alternatives to Windows' DOS support
> wasn't really even that great in some ways in Windows 2000 or XP to begin
> with anyway).
The 2 main reasons to bother with them are to support old games and install
programs. DOS application programs like WordPerfect 5.1 have long since
been replaced. Games, however, never really become obsolete.
I think a large part of why Windows didn't run DOS programs too well was
that they didn't implement what games needed. Games need Sound Blaster,
VESA, and joysticks. These can be done, but they didn't bother. I'm not
blaming Microsoft - I doubt that spending time on it would've helped their
> I don't know why, but for some reason I'm thinking it would just kind of
> a waste of time to implement NTVDM for ReactOS if the developers working
> it would be able to work on other parts of ReactOS. Hmm, it might be at
> least somewhat worthwhile to work on a NTVDM alternate that could run on
> both ReactOS and Windows (possibly even x64 editions), though.
NTVDM is basically a "marketing" project. If eventually ReactOS runs old
DOS games better than NT, then that becomes a "selling" point. Of course,
that's a long way off...
NTVDM for Win64 is basically impossible for exactly one reason: Win64 x86-64
does not implement the LDT. It does "xor eax, eax \ lldt eax" during
startup and that's the end of it. NtSetLdtEntries is a stub, the trap frame
doesn't have an LDT field, and the context-switching code does not have code
to switch LDT values.
If you tried to implement it by patching the kernel, you'd run into
PatchGuard. If you break PatchGuard, your code would only work until the
next second Tuesday.
Finally, even if you got around PatchGuard, Vista64 requires drivers to be
signed, and such a system is antithetical to open-source. People wouldn't
be able to compile and run the code themselves (unless they used test
signing, which would disable playback of HD-DVDs).
The issue that V86 mode doesn't work in Long Mode isn't a big deal. Modern
machines can run the programs that ran in real mode in an emulator faster
than they ran on their original hardware. DOS32 games require more
performance, but you can run those directly.
> Well, just my opinions on the matter.
More information about the Ros-dev