3 ms·
> What about the 286 protected mode support. Did that come later? Yeah... Protected mode came to Windows in fits and starts. Windows/386 introduced it via the
by mschaef 6y ago
> What about the 286 protected mode support. Did that come later?
Yeah... Protected mode came to Windows in fits and starts. Windows/386 introduced it via the V86 multitasker. The Windows VMM layer ran in protected mode, but all the client processes ran in real mode. The implication of this is that they were limited to a 20-bit address space, plus whatever auxiliary memory you could map in with a bank switching standard like EMS.
So at this point (up to 1990 and Windows 3.0), all Windows programs ran in real mode and shared a single 1MB heap. The official path forward from this advocated by the IBM/Microsoft partnership was OS/2. OS/2 put everything in 286 protected mode, but had enough API and EXE format differences that you had to have OS/2 specific software to use it.
However... in the late 80's, a Microsoft engineer named David Weise came up with a way to run Windows itself in protected mode that mostly retained compatibility with existing Windows software. (There was a flag that had to be set in EXE's that enabled protected mode operation, but the format and API's were all exactly the same. This is true to the extent that there were utilities that would toggle just the flag and often let you run an otherwise unmodified program.)
https://landley.net/history/mirror/ms/davidweise.html https://landley.net/history/mirror/ms/davidweise.html
It was Weise's work that enabled Windows 3.0, which came with a largely fulfilled process of getting you OS/2's larger address space, but at a much lower cost of entry. Part of the way they achieved that was to let it run in three modes:
* Real mode - This is essentially how Windows 2.x ran. Everything in real mode, and DOS apps preempted everything.
* Standard mode - This was the new addition. This gave you protected mode for compatible Windows apps, but they had to be marked compatible. DOS apps still preempted everything
* "386 Enhanced" mode - This was the Windows/386 equivalent for bigger Windows 3.0. (But it came in the same box as part of the same SKU.) It combined the new protected mode Windows features along with the ability to pre-emptively multitask DOS apps.
Note that everything I've mentioned (aside from the low level VMM multitasker) used 16-bit segment offsets. So even though your address space was 20 bits, you still had to worry about segment arithmetic for blocks of memory beyond 64K. 32-bit segments were fully native to the Windows NT kernel and came into the original windows codebase via Win32s, which was essentially the Windows equivalent of a DOS extender.
(Note that interestingly, this all implies that 386-specific protected mode came to Windows first, with 286-specific protected mode later.)