I did ask this on the ReactOS forum, but I thought I'd ask on the mailing
list as well :)
How would I go about implementing a DOS subsystem? I used to use DOS for all
my programming, even when Windows 95 and 98 were around. I used to mess with
software interrupts (had a copy of Ralf Brown's interrupt list) to do things
like read raw data from floppy disks etc.
I understand that Windows NT protects the hardware from direct access from
non-kernel mode applications/drivers. How is this achieved? What prevents an
application from simply executing an OUT or IN opcode? And what happens if
an application attempts to?
I assume x86 CPUs have some form of mode... Protected mode?... that allows
this kind of protection.
I also assume you can use normal DOS interrupts from a cmd.exe session in
Windows. How does Windows use software interrupts? As when an IRQ is
triggered, it causes the CPU to execute a software interrupt, what's there
to stop usermode applications from stealing the system timer interrupt
handler and thus break the kernel scheduling?
But basically, what I'd like to know is where I'd start for creating a DOS
subsystem? Where do I start?
-Andrew