Difference between revisions of "User:Petr-akhlamov/NTVDM"

From ReactOS Wiki
Jump to: navigation, search
m
m (Grammar fixes. Thanks for this precious article!)
 
Line 1: Line 1:
'''NTVDM''' (''NT Virtual Dos Machine'') is a virtual machine which together with WOW16 provide running 16-bit apps in modern Windows versions.
+
'''NTVDM''' (''NT Virtual Dos Machine'') is a virtual machine which enables running 16-bit apps, together with WoW16 in modern Windows versions.
 
==Starting==
 
==Starting==
A long while this component was missing, till community member Aleksandar Andrejevic [http://www.reactos.org/node/679 offered his help] for implementation. 16.06.2013 for him [http://github.com/reactos/reactos/commit/4f0b8d3db0ecd44a6dcdc9177b4c3e84a60a92a0 was created] separate branch, where he implemented basic NTVDM components.
+
For a long time, this component was missing, until Aleksandar Andrejevic (ReactOS Developer) [http://www.reactos.org/node/679 offered his help] for implementation. A branch [http://github.com/reactos/reactos/commit/4f0b8d3db0ecd44a6dcdc9177b4c3e84a60a92a0 was created] in 16.06.2013, where he implemented basic NTVDM components.
  
 
==Current state==
 
==Current state==
As of [http://reactos.org/node/794 March 13, 2014] in NTVDM was implemented 486-compatible CPU-emulation, very basic video, basic memory management, basic sound, a 32bit BIOS, and 32bit DOS.
+
As of [http://reactos.org/node/794 March 13, 2014] in NTVDM; 486-compatible CPU-emulation, very basic video, basic memory management, basic sound, a 32bit BIOS, and 32bit DOS was implemented.
  
 
Quite a few things are still missing though, including in the previously listed features. For example, video support does not exist for VESA+ or EGA fonts. Sound only works [http://youtu.be/Mv8uQi_LKzE via the internal PC speaker], not through an emulated SoundBlaster. The CPU emulator also does not have a floating point unit.
 
Quite a few things are still missing though, including in the previously listed features. For example, video support does not exist for VESA+ or EGA fonts. Sound only works [http://youtu.be/Mv8uQi_LKzE via the internal PC speaker], not through an emulated SoundBlaster. The CPU emulator also does not have a floating point unit.
  
Previously, for run dos-apps, NTVDM was needed run manually. Now, thanks to work with CSRSS, NTVDM starts automatic, when you open 16-bit app. Later, CSRSS will also be responsible for deciding whether to start a new instance of NTVDM or reuse an existing one. The latter feature is especially important for Terminate and Stay Resident programs, which include a lot of games.
+
Previously, to run DOS apps, you needed to NTVDM manually. Now, thanks to work on CSRSS, NTVDM detects it and starts automatically, when you open 16-bit app. Later, CSRSS will also be responsible for deciding whether to start a new instance of NTVDM or reuse an existing one. The latter feature is especially important for Terminate and Stay Resident programs, including a lot of games.
  
One thing to note about ReactOS NTVDM is that unlike Windows version ReactOS does not set the CPU into a 16bit emulated mode. This mode in theory reduces overhead compared to the emulation done by ReactOS, but CPUs these days are fast enough that performance should not be an issue. An advantage of ReactOS approach though is that our NTVDM is usable on 64bit x86 processors and potentially ARM processors as well.
+
One thing to note about ReactOS NTVDM is unlike Windows version, ReactOS does not set the CPU into a 16-bit emulated mode. This mode, in theory, reduces overhead compared to the emulation done by ReactOS, but in these days CPUs are fast enough, so performance should not be an issue. An advantage of ReactOS approach is usability of our NTVDM on 64bit x86 processors and potentially ARM processors as well.
  
06.05.2014 NTVDM [http://github.com/reactos/reactos/commit/c32b8d2f39defb7a5577fb1428d5fb9758d2ac91 was merged] to trunk and since is being developed there.
+
06.05.2014 NTVDM [http://github.com/reactos/reactos/commit/c32b8d2f39defb7a5577fb1428d5fb9758d2ac91 was merged] to trunk and since then, is developed there.
  
 
==Additional functions==
 
==Additional functions==
Line 24: Line 24:
 
A '''program information file''' (PIF) defines how a given DOS program should be run in a multi-tasking environment, especially in order to avoid giving it unnecessary resources which could remain available to other programs.
 
A '''program information file''' (PIF) defines how a given DOS program should be run in a multi-tasking environment, especially in order to avoid giving it unnecessary resources which could remain available to other programs.
  
PIF is created after creating of LNK-file of DOS app or changing his properties.
+
PIF is created after creating of LNK-file of DOS app or changing its properties.
 
*{{JIRA|13545}} - Add PIF support
 
*{{JIRA|13545}} - Add PIF support
 
*{{JIRA|10291}} - Implement PIF support
 
*{{JIRA|10291}} - Implement PIF support
 
*{{JIRA|11607}} - PIF files are always shown without extension
 
*{{JIRA|11607}} - PIF files are always shown without extension
 
*<s>{{JIRA|10253}}</s> - Add pifmgr.dll
 
*<s>{{JIRA|10253}}</s> - Add pifmgr.dll

Latest revision as of 07:55, 14 February 2018

NTVDM (NT Virtual Dos Machine) is a virtual machine which enables running 16-bit apps, together with WoW16 in modern Windows versions.

Starting

For a long time, this component was missing, until Aleksandar Andrejevic (ReactOS Developer) offered his help for implementation. A branch was created in 16.06.2013, where he implemented basic NTVDM components.

Current state

As of March 13, 2014 in NTVDM; 486-compatible CPU-emulation, very basic video, basic memory management, basic sound, a 32bit BIOS, and 32bit DOS was implemented.

Quite a few things are still missing though, including in the previously listed features. For example, video support does not exist for VESA+ or EGA fonts. Sound only works via the internal PC speaker, not through an emulated SoundBlaster. The CPU emulator also does not have a floating point unit.

Previously, to run DOS apps, you needed to NTVDM manually. Now, thanks to work on CSRSS, NTVDM detects it and starts automatically, when you open 16-bit app. Later, CSRSS will also be responsible for deciding whether to start a new instance of NTVDM or reuse an existing one. The latter feature is especially important for Terminate and Stay Resident programs, including a lot of games.

One thing to note about ReactOS NTVDM is unlike Windows version, ReactOS does not set the CPU into a 16-bit emulated mode. This mode, in theory, reduces overhead compared to the emulation done by ReactOS, but in these days CPUs are fast enough, so performance should not be an issue. An advantage of ReactOS approach is usability of our NTVDM on 64bit x86 processors and potentially ARM processors as well.

06.05.2014 NTVDM was merged to trunk and since then, is developed there.

Additional functions

  • 17.04.2015 - mouse driver was added (CORE-9166)
  • 26.03.2015 - real support for DOS devices was added (CORE-9370)
  • 07.03.2015 - VDM Configuration Files was added (CORE-7832)
  • 06.07.2016 - VBE support was implemented
  • 28.08.2016 - VESA support was implemented

PIF

A program information file (PIF) defines how a given DOS program should be run in a multi-tasking environment, especially in order to avoid giving it unnecessary resources which could remain available to other programs.

PIF is created after creating of LNK-file of DOS app or changing its properties.