I've been trying to get later versions of WinUAE working in Windows 2000 (The last version that officially supports 2000 is 2.0.1.)
- 2.4.2 beta 6 and earlier will always run correctly with an extended kernel
- 2.4.2 beta 7 through 2.5.0 beta 14 will just quit after attempting to allocate memory
- 2.5.0 beta 15 through 2.7.0 beta 9 have the following behavior:
- If the system memory is less than 1536MB, the emulator will run
- If the memory is 1536MB or more, the emulator will not run (If I run with "-log", the last entry is "Total physical RAM 2047M, all RAM 4160M, attempting to reserve 769M)
- 2.7.0 beta 10 and all later versions will stop at the "Attempting to reserve" message even if system memory is <1536MB
The problems seem related to a memory allocation rewrite in 2.4.2 beta 7 (and from searching the source tree for the log messages, it seems like the relevant code is in od-win32/mman.cpp
EDIT: I was looking at some more of the WinUAE changelogs and it looks like the emulator had to implement a workaround at one point for Win2k's VirtualAlloc not supporting the MEM_WRITE_WATCH flag. This workaround was removed in 2.2.0 beta 1.
EDIT: Had the wrong version listed as the last that was officially Win2k compatible.
EDIT: I tried running the emulator with API Monitor and it got stuck in a loop trying to use VirtualAlloc() with the MEM_WRITE_WATCH flag. Windows returns 0x50 (ERROR_NOT_SUPPORTED). If I'm reading the output correctly, it looks like the NtAllocateVirtualMemory API in NTDLL.DLL actually does the work and VirtualAlloc() just calls it. NtAllocateVirtualMemory returns 0xc00000bb (STATUS_NOT_SUPPORTED).
Edited by MacLover, 15 September 2015 - 07:35 PM.