I am attempting to run a legacy, 16-bit program, P3, on a Windows XP Mode Virtual Machine, hosted by a Windows 7 x64 box. When performing various activities in the program, I receive "P3 caused a General Protection Fault in module WIN87EM.DLL at 0001:02C6." This occurs on multiple platforms (Core i5, Core 2 Duo).
Based on my research, I have found "The Windows 80x87 emulator library, WIN87EM.DLL, works at the 16-bit-Windows level to virtualize the coprocessor among multiple Windows-based applications that run inside the system VM."
It appears to me that, with the Virtual Machine using a Virtualized Processor (not related to the above reference to "virtualized coprocessor") as opposed to an emulated processor, the Virtual Math Coprocessor Device (VMCPD) and/or WIN87EM.DLL generate an error from the virtualized processor (perhaps they do no recognize it?)
In addition "When the kernel loads an application, it checks to see if floating-point hardware is present. If a coprocessor is not present, the kernel uses the fixup records to replace the actual floating-point instructions with Interrupt 3x calls to emulation code in WIN87EM.DLL."
I have found some information that points to "hiding" the math coprocessor from the Virtual Machine, so it doesn't go to the processor. This apparently can be achieved by using a program called WinFloat which includes a tool called HIDE87, which is suppose to hide the math coprocessor from the kernal.
The issue I'm running into is, to properly achieve this, HIDE87 must be loaded before Windows. I have tried a couple techniques, but I think I'm doing it wrong. I have tried adding the HIDE87 program to the System32 directory and then adding HIDE87 (just before autocheck autochk *) to BootExecute under the HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession Manager key.
For a little more info, when you run HIDE87 from the command prompt it reads "HIDE87: Int 11h hook installed (must reboot to remove)." The documentation says this is what needs to occur before Windows loads. You can find WinFloat here: http://support.microsoft.com/kb/97265.
Any help or insight would be greatly appreciated.