- Fix the GCC macro for structure declaration, so that referencing an offset to the structure doesn't fail anymore (ie. doing "mov dx, offset MyStruct" doesn't assemble to "mov dx, 0x100").
This fixes NTVDM not being able to start any DOS app. Reported by Aleksander Rechitskiy.
CORE-9677 CORE-9679 #resolve
CORE-9678
[NTVDM]
- Fix newline in DPRINT.
svn path=/trunk/; revision=69211
- Add support for DOS VDM reentry, i.e. the fact that a DOS app can start a 32-bit app, which in turn can start another DOS app, ad infinitum...
CORE-9711 CORE-9773 #resolve
- Add a small COMMAND.COM which is, for now, completely included in NTVDM. This COMMAND.COM is needed in order to support reentrancy. The fact that I chose to put it inside NTVDM is that any user can use instead his/her own COMMAND.COM, while retaining the possibility to perform VDM reentrancy (on Windows, if you remove the COMMAND.COM in windows\system32 and replace it with your own, you will break VDM reentrancy on windows' ntvdm).
CORE-5221 #resolve #comment I choose for the moment an internal COMMAND.COM, but you can recompile NTVDM to use it externally instead.
Global remarks:
- Quite a few DPRINTs were added for diagnostic purposes (since DOS reentrancy is a new feature), to be sure everything behaves as expected when being used with a large panel of applications. They will be removed when everything is OK.
- Support for current directories and 16/32-bit environment translation (in ntvdm + basevdm-side) remain to be implemented.
Other changes:
- Improve a bit the VDM shutdown code by gathering it at one place (there's still room for other improvements).
- Add suppport for properly pausing/resuming NTVDM.
- Bufferize some console events before dispatching.
Have fun ;^)
svn path=/trunk/; revision=69204
GetNextVDMCommand function:
- Avoid using deep nested levels of indentation.
- Fix the error check conditions (+ status value) for the CsrClientCallServer call to make it compatible with what windows' basesrv can return to us.
[BASESRV]
- Remove some useless "NTAPI" from functions.
- Factor out some code used for creating and destroying console records, and for the destruction of the pair of event handles.
- Use "IsListEmpty" when needed.
- Fix BaseSrvFillCommandInfo so that it returns the needed lengths (even if the user-given lengths are zero) and set the expected status error in case the buffer lenghts are too small (not STATUS_BUFFER_TOO_SMALL but STATUS_INVALID_PARAMETER because it's what kernel32 error check expects, for windows compat; see above).
- Fix initialization of new DOS records: no need to create a new one if there is one already free (status VDM_READY).
- Fix the loop that searches for a valid DOS record containing command information available as well as the conditions in which case our caller needs to wait in GetNextVDMCommand call.
NOTE: The internal state flags of the DOS records have normally nothing to do with the VDM state flags we report back to the user.
CORE-8247 CORE-9711 CORE-9773
svn path=/trunk/; revision=69201
- Read the current user locale when the CPL is created.
- Modify the user locale and update the examples when the user selects a new language.
- Save the user locale only if the user changed the settings.
CORE-10074
svn path=/trunk/; revision=69199
- Changing one "exit" to "exit /b" was not nice from me in the past.
ARM build now prepares host tools nicely again and you can build em. ARM build itself dies very early due to ..\..\boot\freeldr\freeldr\arch\arm\boot.S(9) : fatal error C1083: Cannot open include file: 'ksarm.h': No such file or directory
svn path=/trunk/; revision=69191
- Additional El Torito support. We now parse the EFI, BOOT directories, and find/open the BCD file, and get a handle to it!
svn path=/trunk/; revision=69189
- Disabling C4214 (nonstandard extension used : bit field types other than int), a somewhat overzealous warning for a "nonstandard" extension we rely on all over.
- Defining inactive DPRINT and friends for MSVC using __noop (no not __nop, __noop. See https://msdn.microsoft.com/en-us/library/s6btaxcs.aspx) to get at a whole bunch of C4127 (conditional expression is constant).
- Remove the last of the exported DriverEntry from dxg and dxgthk. There is no need in anyw way to export them -- dxg exports DxDdStartupDxGraphics to Win32k for initialization purposes and dxgthk is just a forwarder. Linking to a DriverEntry is to begin with is a pretty bad idea. Say goodbye to the last of LNK4216.
svn path=/trunk/; revision=69187
- Hey Arch, your buddies gave you ETFS support for native EFI boot, of course reading sector 0 is all zeroes, you're not on FAT, you idiot! ETFS has data at sector 16 and 17.
- Implement beginning of ETFS support. We correctly mount the reactOS boot cd as ETFS and open the root directory entry!
svn path=/trunk/; revision=69181
- Hackplement Layered Window Support from wine.
- See CORE-1576 for more information. Three days work, ReactOS needs more support for playing with GDI bits.
svn path=/trunk/; revision=69179
- Implement Block I/O read operations & related functions. Code needs cleanup, TBD.
- Unfortunately, I wish I could say it works, but it seems like all we get back are zeroes (from EFI itself). I suspect we are reading from the wrong device -- will have to investigate for a bit.
svn path=/trunk/; revision=69178