Description of the necessary patches included in this package ------------------------------------------------------------- 8253.patch - The 8253 Timer implementation of NTVDM has a bug in Terminal Count mode (0): On overflow, it doesn't count down from 0xFFFF but from reload reg, leading to hangs on apps that check for it. So handle mode 0 correctly. appcompat.patch - Enable AppCompat support (Compatibility shims) callconv.patch - Patches wrong calling conventions in host-code ccpu.patch - Patches the CCPU to compile on i386 and support Yoda ccpu_regs.patch - Adds functions to access registers from the CCPU externally from other modules requiring them. ccpu_segperm.patch - Patches a potential bug in the CCPU that causes segment access permission to be set to 0 and not restored on going back to realmode. console.patch - Fixes console startup bug that would otherwise not init colors of console properly and would therefore cause black chars on black screen. comments.patch - Adds back the fun to MINNT source where some lamers removed all filthy comments and even the easteregg in YODA cvdump.patch - Not NTVDM-specific, but patches a >20 year old bug in cvdump Visual C tool for dumping CodeView NB02 debug info (Utility complains about invalid exe, even though, exe is correct), also enhances hexdump to display text cvidc.patch - Patches the Video controller CPU to work in i386 cvidcheap.patch - Speed up CVIDC video emulation by eliminating all the unnecessary slow heap operations. debug.patch - Adds some useful debugging settings to enable debugging without needing to have master YODA in place. declaration.patch - In cdecl calling convention, prototypes of functions without parameters are possible, but on Windows with __sdtcall, this would cause linking errors. This patch fixes wrong declarations. dpmf.patch - GetLongPathNameW signature is no good dpmi.patch - Patches to DPMI sourcecode (MINNT and old-src need to use the same old DPMI code from old-src). dpmimem.patch - Patches DPMI default mem size to 16MB under DOS and adds code to get requested DPMI memory size from .PIF file, as well as a registry key to set global size of DPMI mem to get more than default (see readme.txt FAQ) ega_crash.patch - Console graphics is required, as newer Windows display drivers with WDDM driver model do not support fullscreen anymore. Some DOS programs, like i.e. Commander Keen 4, try to paint outside the screen boundaries which causes crashes when not properly checked, so added checks for this. emm.patch - Fixes a little problem in the EMM-Manager eyestrain.patch - Commandline parameters like the hotkey to change video size can't get passed to NTVDM in newer windows versions, therefore, parameter is read from registry cpuenv key framerate.patch - Increase screen refresh rate so that Video graphics output is smoother and not so choppy anymore. fixexe.patch - It seems like the creator of the OpenNT package accidentally compiled the fixexe.c with a 32bit Compiler instead of the DOS compiler which caused int data type to be interpreted as 32bit, therefore fixexe.exe tool trashes the MZ header instead of fixing it. So wow16 makefile was adjusted to first create a valid fixexe.exe tool. This is not original NT sourcecode patch but just a bugfix for broken OpenNT fixexe.exe tool. fpu.patch - The FPU of the CCPU is optimized for MIPS/PPC architecture and not Intel i386. This patch fixes declarations for FPU-Type to compile on x86 systems. gdpvar.patch - The CCPU definitions copied over from CVIDC do not include some necessary state words, this adds them. heartbeat.patch - This prevents a freeze of the idle timer include.patch - Patches some missing includes makefiles.patch - This is a CRUDE HACK(!) for the Makefiles of NTVDM to forcefully compile a CCPU (emulated) Version without MONITOR on i386. We should definitely fix them, i.e. with a special makefile target for CCPU i386 build, but for the time being, we leave it to this hackery. mem.patch - Fixes a hack that was done to the mem-command by Stephanos (not present in original NT4 source) monitor.patch - In a lot of #ifdefs, i386 is assumed to include V86 MONITOR code from Kernel. As we want a CCPU-Only build, change #ifdef i386 to check for MONITOR define in order to be able to build V86 an non-V86 i386 builds. -DMONITOR should be added to some makefiles for the V86 build then as a consequence to be able to do both builds lateron, when crude makefiles.patch gets cleaned up. ntvdmctl.patch - Removes NtVdmControl calls not working on x64 Windows ntmem.patch - Prevent crash on access of DOS application to uncommitted memory pcibug.patch - Some stupid programs try to read PCI BIOS even though installation check fails. So set CF on PCI INT 1Ah calls. sb.patch - Crash fix for the lousy Soundblaster DSP emulation sas4gen.patch - Fix sas4gen CCPU header file sas.patch - Optimize SAS-interface for faster memory access, significantly speeding up i.e. text output on EGA emulation spurint.patch - Fix crash on spurious Interrupts timers.patch - Fix crash on startup caued by uninitialized timer defaults. quicked.patch - Disable Quick edit when entering DOS app or graphics mode to prevent conhost-crashes vdmredir.patch - Some LAN Manager APIs for the VDM redirector have been ripped out in newer Windows Versions (Vista+?). Therefore VDMREDIR.DLL was unable to load on newer Windows versions, as DLL dependencies for functions I_NetNameCanonicalize and NetpNtStatusToApiStatus in NETAPI32.DLL could not be resolved. So stub some VDM Redir functions like on Win7 32bit to make VDMREDIR.DLL loadable. w10.patch - Patches function calls that changed in later versions of Windows so that NTVDM also works on Windows 10 and not only NT4 where source originates from. w10_emm.patch - x64 systems cannot allocate with 4k page granularity as required by NTVDM, therefore use different EMS allocation functions on these Windows versions. (Also see makefile-patches so that correct EMS-manager code is used) wow16.patch - Updates the old WOW16 code that we have to a version that works together with our WOW32 code. Lots of changes missing, but basically works as long as we don't have newer code. wow32.patch - Hack WOW32 to be runnable on x64 Windows Versions without proper scheduler support. yoda.patch - Fixes a few compilation problems of Yoda on i386 with CCPU