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

From ReactOS Wiki
Jump to: navigation, search
(Created page with "'''NTVDM''' (''NT Virtual Dos Machine'') is a virtual machine which together with WOW16 provide running 16-bit apps in modern Windows versions. ==Starting== ==Current state==...")
 
m (Grammar fixes. Thanks for this precious article!)
 
(6 intermediate revisions by one other user not shown)
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==
 +
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; 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.
 +
 +
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 [http://github.com/reactos/reactos/commit/c32b8d2f39defb7a5577fb1428d5fb9758d2ac91 was merged] to trunk and since then, is developed there.
 +
 
==Additional functions==
 
==Additional functions==
 +
*17.04.2015 - mouse driver was added (<s>{{JIRA|9166}}</s>)
 +
*26.03.2015 - real support for DOS devices was added (<s>{{JIRA|9370}}</s>)
 +
*07.03.2015 - VDM Configuration Files was added (<s>{{JIRA|7832}}</s>)
 +
*06.07.2016 - [http://github.com/reactos/reactos/commit/cb085e5f4ab49b93111446cbce3984bc00fba869 VBE] support was implemented
 +
*28.08.2016 - [http://github.com/reactos/reactos/commit/78bb2563790b8396b4bd6134d88b498199dba66a VESA] support was implemented
 +
 
==PIF==
 
==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.
 
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.