> “Windows 95 came out with pretty much flawless DOS compatibility, whereas OS/2 was still struggling to run more than one DOS app simultaneously”
This doesn’t match my recollection. Yes, 16-bit OS/2 1.x did poorly with DOS because it couldn’t use the 386 virtualization capabilities, but 32-bit OS/2 2.x was a great environment for multitasking DOS apps. It definitely supported DPMI too.
Many people ran complex apps like 3D Studio under OS/2 rather than plain DOS. It even had the ability to preemptively multitask Windows 3.0 apps which Windows itself didn’t.
IBM used to have a marketing slogan for OS/2:
“A better DOS than DOS and a better Windows than Windows.”
Unfortunately that was a fairly niche market after all. People didn’t want a somewhat better environment for running Windows apps in parallel sandboxes when it came with so much installation hassle and such high system requirements. With practically no native apps and losing the ability to run Windows soon (since IBM’s license only covered Windows 3.x), it had no chance.
When it came to games I had written I had relied on promises that Microsoft had made that dos virtualization would be quite seamless. My game used a pseudo retrace interrupt by carefully calibrating the timer every frame to generate an interrupt just before the screen retrace and adjusting the timer to compensate for drift.
This did not work in Windows95. OS/2 did it almost perfectly (it missed the occasional frame but not enough to matter)
I remember also that it was quite flaky. My recollection, probably wrong, was that DOS software that really pushed the system in certain ways wouldn't work right under Win95, especially audio stuff.
I used to work with Impulse Tracker and spend lots of time with the Demoscene and IIR there was a way to kill Win95 and drop back to pure DOS (or boot into DOS instead) and things worked fine there. Windows 95 in that sense still just felt like a very powerful shell over MS-DOS like Windows 3.1 and it wasn't until we got the NT derivatives (XP etc.) that I, and the demoscene, reluctantly gave up on DOS mode software.
It took the scene a very long time to bounce back from that transition, and in some ways it came out of it a very different scene.
tldr: https://devblogs.microsoft.com/oldnewthing/20160411-00/?p=93... Intel screwed up implementing v86 mode by missing one privileged accesses trap - Protected Mode program (CPL 3) executing CLI and expecting POPF to restore interrupt flag. CLI will correctly trap, but POPF is silently ignored AND doesnt trap. No easy workarounds available.
That's in protected mode. In V86 with IOPL < 3, both PUSHF and POPF will trap.
However I think some versions of Windows used to run V86 code with IOPL = 3. At least I remember being able to run "CLI, HLT" instructions in DEBUG inside a DOS box and locking up the entire system.
"Intel screwed up implementing Protected Mode by missing one privileged accesses trap - Protected Mode program (CPL 3, IOPL < 3) executing CLI and expecting POPF to restore interrupt flag. CLI will correctly trap, but POPF is silently ignored AND doesnt trap. No easy workarounds available."
One of the prominent victims is Doom. Works in Windows only due to hacks.
This doesn’t match my recollection. Yes, 16-bit OS/2 1.x did poorly with DOS because it couldn’t use the 386 virtualization capabilities, but 32-bit OS/2 2.x was a great environment for multitasking DOS apps. It definitely supported DPMI too.
Many people ran complex apps like 3D Studio under OS/2 rather than plain DOS. It even had the ability to preemptively multitask Windows 3.0 apps which Windows itself didn’t.
IBM used to have a marketing slogan for OS/2:
“A better DOS than DOS and a better Windows than Windows.”
Unfortunately that was a fairly niche market after all. People didn’t want a somewhat better environment for running Windows apps in parallel sandboxes when it came with so much installation hassle and such high system requirements. With practically no native apps and losing the ability to run Windows soon (since IBM’s license only covered Windows 3.x), it had no chance.