
Other well known anecdotes and pieces:
https://jacobfilipp.com/msj-index/
https://web.archive.org/web/20240318233231/https://bytepoint...
Andrew Schulman (in Unauthorized Windows 95) and Matt Pietrek (in Windows Internals) both describe the Windows 3.1 EXE loader as shipping with special case code for detecting PE executables. Win32s was an add on to Windows 3.1, but Windows 3.1 shipped out of the box with the necessary hook.
Whether or not that qualifies as Windows 3.1 _adding_ Win32s is a matter of packaging. (But it is why I used the wording I did.)
> IBM a really hard time supporting Win32S in WinOS2 on top of 32-bit OS/2.
Interesting, I never imagined Win32s working on OS/2 at all. I didn't use it much, but I always envisioned the Windows on OS/2 2.x as being closer to Standard mode (286) windows, since the Windows VMM probably didn't run on OS/2. But like I said... I didn't use it much.
Related to this: do you happen to remember Microsoft's earlier solution for 32-bit code on Windows? Predating Win32s, I remember there being a library that allowed allocation of 32-bit memory and jumping to 32-bit code. This code wasn't like Win32s code that had API access (it didn't), but it was a rudimentary way to access 32-bit offsets.