On Sun Apr 27 15:39:10 2025 +0000, Alexandre Julliard wrote:
Again, for this and the other changes, please always explain what application is fixed by the change. If it doesn't fix any known application, please don't touch the code at all. This is old and mostly bitrotten code that we don't want to have to spend more time on.
It is used by applications in the Andrew Schulman's book Unauthorized Windows 95. VxDCall from 32-bit PE binaries is used to issue 16-bit DOS calls, for example getting the PSP in CHGDIR.
The minimal reproducer for the issue with PSP is: ```c #include <stdio.h> #include <windows.h>
__declspec(dllimport) DWORD WINAPI VxDCall2(DWORD srvc, DWORD eax, DWORD ecx);
#define VWIN32_INT21_CALL 0x2A0010 #define DosCall(eax, ecx) VxDCall2(VWIN32_INT21_CALL, (eax), (ecx))
int main() { WORD psp; // Call DOS INT 21h function 62h (Get PSP) _asm mov bx, 0 DosCall(0x6200, 0); _asm mov psp, bx printf("PSP: %04Xh\n\n", psp); return 0; } ```
Without this change the PSP is zero.
Now I have rebased this merge request and tested also this minimal reproducer against wine and Win95 that it works and returns PSP.
This is old and mostly bitrotten code that we don't want to have to spend more time on.
Does it mean that the 16-bit NE-related code is forbidden to improve and changes for fixing compatibility with Win3.x/Win9x from developers outside of the project would not be accepted? Just want to know as I do not want to spend time on preparing something, which would not be taken.