[ros-dev] (Free)DOS subsystem

Myria myriachan at cox.net
Tue Aug 29 10:14:50 CEST 2006


I've wanted to write an NTVDM for ReactOS, but I'm not sure when I'd ever 
have time.

Windows NT's DOS subsystem, NTVDM, is a user-mode program that runs on top 
of Win32.  It runs DOS programs as Windows processes, using v86 mode to run 
the programs.  DPMI programs are supported by asking the kernel to allocate 
LDT segments and running directly.  (If you write a DOS32 program and know 
the correct addresses, you can call MessageBoxW in user32.dll and it will 
work.)

This differs significantly from DOSBox, which is effectively a machine 
emulator rather than an API translator.  DOSEmu, in comparison, is 
essentially the same design as NTVDM but for Linux.

FreeDOS in DOSBox works very well, because the FreeDOS kernel is its normal 
self and is unaware that it's inside a VM.  However, this doesn't work for 
NTVDM/DOSEmu.  In these, the FreeDOS kernel will need to be heavily 
modified, particularly because the NT kernel handles file I/O.  Programs 
inside the virtual DOS environment use illegal opcodes to talk to NTVDM.

Melissa

----- Original Message ----- 
From: "James Tabor" <jimtabor at adsl-64-217-116-74.dsl.hstntx.swbell.net>
To: "ReactOS Development List" <ros-dev at reactos.org>
Sent: Monday, August 28, 2006 14:19
Subject: Re: [ros-dev] (Free)DOS subsystem


> Imre Leber wrote:
>> Hi,
>>
>> I guess i am new to this list.
>>
>> I have been a maintainer on the FreeDOS project for more then 7 years.
>>
>> I have also noticed that you are still looking into building a DOS 
>> subsystem in reactos.
>>
>> After the release of FreeDOS version 1, I would like to see wether I 
>> could not take up the task to having it running under reactos.
>>
>> My main idea involves using a port of DOSemu.
>>
>> Is there any documentation regarding the running of a DOS subsystem in 
>> windows that I should study beforehand?
>>
>> Imre
>>
>>
> Hi Imre!
> Welcome to ReactOS! 8^D
>
> The idea is still open.
>
> We've tested Qemu under ReactOS running FreeDOS at one time and it does 
> work. Another project that
> was tested, DOSBox, it works like DOSemu, http://dosbox.sourceforge.net/
>
>
> Running a dos-subsystem and docs? Maybe one of the other developers can 
> help here. You can look at
> the OS2 subsystem at http://svn.reactos.ru/svn/reactos/trunk/os2/ , it's 
> incomplete, this would be
> your best starting point. There is allot more to it. You need to dive into 
> the code and start
> reading. I do not recall any docs or books dealing with rolling your own 
> subsystem. The best book
> you can get for understanding Windows or ReactOS is, Windows Internals. 
> Understanding the Csrss
> subsystem would help with the os2 one.
>
> Anyway, some projects that could be good examples on how to do this, Posix 
> subsystem,
> http://sourceforge.net/projects/winntposix ,and running linux bins in 
> windows,
> http://sourceforge.net/projects/keow . One of our developers is currently 
> working with CoLinux,
> http://www.colinux.org/ .
>
> Sorry I couldn't help you more here.
>
> Thanks,
> James
>
> _______________________________________________
> Ros-dev mailing list
> Ros-dev at reactos.org
> http://www.reactos.org/mailman/listinfo/ros-dev 



More information about the Ros-dev mailing list