The RegisterConsoleVDM API (undocumented) allows NTVDM to get a VGA-like text framebuffer hold by the console server. This text framebuffer is unique, per-console (so that changing the active text screen buffer doesn't change the text framebuffer) and exists even if you use a graphics screen buffer.
NTVDM can write in this framebuffer, and when a call to InvalidateConsoleDIBits is done, it is painted on the screen.
Since RegisterConsoleVDM is unimplemented on ReactOS, I start an implementation of this API *inside* NTVDM (that will then be moved to kernel32/winsrv when it will work correctly).
I adapt the code of the VGA emulation to support RegisterConsoleVDM.
svn path=/branches/ntvdm/; revision=62371
Implement a function that creates a pair of event handles - BaseSrvCreatePairWaitHandles.
As already explained in the comments of BaseCheckForVDM (in kernel32), the hParent parameter
is actually an event handle (or more precisely, the client event handle), not a process handle.
svn path=/branches/ntvdm/; revision=62367
- NetUserSetInfo: Implement the info level 22.
- Update the users DACL according to the user flags for the info levels 1, 2, 3, 4, 22 and 1008.
svn path=/trunk/; revision=62364
Make MSVC warning C4020 "Too many actual parameters" an error
CORE-7960 #resolve #comment Committed in revision 62361.
svn path=/trunk/; revision=62361
Get rid of ConsoleInput handles in the BIOS; setting input console modes should be done in the emulator.c module itself (when setting user interface modes), and if a mouse is present, handle it in the ps2.c module.
Next step will be to get rid of ConsoleOutput handle in the BIOS.
svn path=/branches/ntvdm/; revision=62359
* Mark as hotpatchable.
* Uncomment out the hot patching attribute for ShowCursor() now that the feature is supported.
* More will come.
CORE-7959
svn path=/trunk/; revision=62355
* Add support for marking an image as hotpatchable.
[INCLUDES]
* Introduce a way to allow us to mark pretty much any function in our codebase as DECLSPEC_HOTPATCH (not just in Wine modules).
* Fix DECLSPEC_HOTPATCH define and enable this hot patching feature support.
CORE-7959
svn path=/trunk/; revision=62354
All of the FPU opcodes fetch another byte which is the function number.
This is done by the CPU and it occurs even if there is no FPU attached.
svn path=/branches/ntvdm/; revision=62344
Be able to load an external DOS BIOS file (at 70:0000) and, in case it is the DOS BIOS file of the NT VDM, load the DOS kernel file ntdos.sys when the ntio.sys calls BOP DOS function 0x11 (and put the kernel at DI:0000).
Work in progress...
svn path=/branches/ntvdm/; revision=62343
- Add BOP 0x12 "BiosGetMemorySize" (same number as the corresponding INTerrupt). Needed by ntio.sys when initializing (see next commit).
- Use ASCII names for bios image and dos kernel files names.
- Use the file helper functions committed before for implementing ROM image file loading.
svn path=/branches/ntvdm/; revision=62342
- Patch by Huw Davies: If the listbox loses focus while holding capture, release it by essentially simulating a button up event.
svn path=/trunk/; revision=62339
- BIOS32: As a demonstration, load a BIOS expansion ROM (the one I've tested is the "OS in PCI expansion ROM" from: https://sites.google.com/site/pinczakko/building-a-kernel-in-pci-expansion-rom ; we don't support PCI thingies at all, but the bootstrap code works correctly).
- Initialize the BIOS32 stack for the callbacks.
- In the common BIOS functions, if we try to load the Windows NTVDM (SoftPC) BIOS (file: bios4.rom), we immediately hit a BOP 0x00 followed by INT 0x19 (bootstrap to run an OS). The BOP 0x00 is the function used by the BIOS to ask NTVDM to initialize the hardware, the IVT with data and so on. Also we finish to load the low part of the NTVDM BIOS in it (file: bios1.rom).
It's work-in-progress, nothing is done, there are lots of debugging code...
Have fun!
(to load a custom bios you need to put its filename as the first parameter of the BiosInitialize call, in the main() function in ntvdm.c).
svn path=/branches/ntvdm/; revision=62333
- Add utility functions for loading ROM images from files, and running them.
- Add a missing PVOID in the MEM_ALIGN_DOWN macro.
svn path=/branches/ntvdm/; revision=62332
- Reduce the size of the trampoline needed to perform 32 ---> 16 bit callbacks.
- Fix some comments, improve DPRINTs.
svn path=/branches/ntvdm/; revision=62331
- MapWindowPoints return incorrect result for windows with WS_EX_LAYOUTRTL style.
- Patch by Maxim Andreyanov. see CORE-7947.
svn path=/trunk/; revision=62327
- Fixed the driver start up for Ext2 partitions and drives. Now the driver loads.
- At one time this driver worked on the same hardware I have today, same drives nothing has changed. Now since all the changes else where, guessing it broke something.
- Don't assign and bug reports to me, if so, I will remove them!
svn path=/trunk/; revision=62326
- Move an "enable interrupts" command to where it belongs (i.e. in the BIOS32 initialization code; we do it at the very end). Otherwise some problems appears when trying to load 16-bit bios images.
- Use the new macro REAL_TO_PHYS to convert "real-mode" pointers (valid inside the VM only) into "physical" ones (valid in ROS/Windows/whatever).
- Add BIG HACKs (thanks Aleksander ;) ) in EmulatorRead/WriteMemory for wrapping up high memory addresses to low ones, so that we can load bios images (when you start running code at F000:FFF0).
To test 16-bit bios images: in ntvdm.c, put a valid bios file name in the BiosInitialize(...) call, and disable all DOS calls that happen before EmulatorSimulate().
svn path=/branches/ntvdm/; revision=62314
- Fix return values of Fast486OpcodeSahf and Fast486OpcodeLahf handlers.
- [TheFlash], can you please see what we should return after calling Fast486ExceptionWithErrorCode in Fast486OpcodePopFlags ?
svn path=/branches/ntvdm/; revision=62313
- BIOS location must be aligned on 32bit boundaries (or 16, I have to check). This fixes BIOS images loading when they miss a (null) byte to make them (e.g.) 8192 bytes long (example: the BIOS image of windows ntvdm).
- Add useful alignment (and others) macros.
svn path=/branches/ntvdm/; revision=62312
* Use the appropriate CMake command to get the absolute path. I forgot to commit this change in the transition phase.
CORE-7918 #resolve #comment Should be fixed in r62298. Thank you for testing the VS build.
svn path=/trunk/; revision=62298