>>> When BIOS interfaces weren’t sufficient they hit the hardware directly - and even if they weren’t doing that, they’d end up depending on behavioural quirks of IBM’s BIOS implementation.
This happened with the Apple II as well, and made it impossible for Apple to update their system. Even minor changes, from the Apple II to the IIe and IIc, broke some apps. And if an app broke, it was presumed to be the hardware maker's fault.
There was a book entitled "what's where in the Apple II" that documented all known variable locations and entry points in the Apple ROM and DOS. For instance people would just branch directly into weird places in the ROM, or poke directly into memory.
> The truth is that there’s no way we can technically describe a PC Compatible now - or, honestly, ever. If you sent a modern PC back to 1981 the media would be amazed and also point out that it didn’t run Flight Simulator.
For historical context, a PC compatible is a machine that can run a DOS that is compatible with PC-DOS and that can run applications for the IBM PC running PC DOS. This was vital to the success and failure of many companies and thus we can absolutely say what a PC compatible was. The PC-compatible standard was largely replaced by WinTel compatible in the late 1990s. Modern machines can still run Win32 and applications written for Win32, and thus are WinTel compatible.
Of course, being WinTel compatible matters less than ever before. Much of the software people care about is now either browser-based or open source and compiled for multiple targets. We also now have dynamic recompilers that are quite good, and therefore even being compiled for the target is... well, not as important.
We need some new kind of standard that identifies general purpose, superscalar CPU with large cache and SIMD, a PCIe controller with many lanes, a memory controller for DDR4/5 paired with UEFI and either a modern GPU or a decent NPU (or both). Currently, this describes a few RISC-V machines, many ARM machines, and most AMD64 machines after about 2018. Maybe this is something like 5th Generation Industry Standard Architecture or 5SA? Whatever the industry does or doesn't call it, it's certainly not PC compatible in any sense.
The section about the transition from BIOS to UEFI really sums up why hardware support is such a nightmare to maintain. I remember dealing with those old IRQ conflicts back in the day, and I certainly do not miss it. It is accurate to say that a PC is just whatever we agree it is because the technology has drifted so far from the original design.
Even back in the day, computers which ran the PC versions of Lotus 1-2-3 and Microsoft Flight Simulator without issue were judged "100% PC compatible".
These days, a PC is pretty much defined as a computer that runs Windows.
Fantastic article! You nailed the core irony perfectly: the term "PC Compatible" was almost a misnomer from day one, because even in the heyday of cloning, a "compatible" machine could choke on software that poked the hardware directly or relied on the quirks of IBM's specific BIOS. True compatibility was always a spectrum, not a binary state.
It’s a great example of a technological anachronism—a term that outlives its original meaning. We have plenty of those, for example, we still "dial" a phone number on a keypad, "hang up" a call without a physical receiver to hang, and save a file to a "desktop" that’s often just a digital metaphor.
So really, "PC Compatible" fits right in: a useful, socially-agreed-upon label that’s more about practical expectation than technical purity. Thanks for the insightful read—it definitely brought a smile to my face. Cheers
>So, what’s a PC compatible? No modern PC will run the DOS that the original PC ran.
Now define "modern PC". Oh boy, we've hit a dependency loop.
PC compatible means your software runs without error on MS-DOS. That's the definition I've used for 3 decades, and it should not change due to bloggers' retrospective. Of course, 100% IBM PC compatible is a level above this, when your software works exactly as if it were running inside an IBM PC.
In the 1980's, computer software was sold in catalogs and magazines. Users had either of three platforms: A Macintosh, a PC-Compatible (probably x86), or a Commodore/Amiga. So these are the three categories were there to help you order the correct version of oregon trail. They were really a name for the operating systems, not the specifics of the hardware, at least back then they were.
10 comments
[ 3.7 ms ] story [ 37.9 ms ] threadThis happened with the Apple II as well, and made it impossible for Apple to update their system. Even minor changes, from the Apple II to the IIe and IIc, broke some apps. And if an app broke, it was presumed to be the hardware maker's fault.
There was a book entitled "what's where in the Apple II" that documented all known variable locations and entry points in the Apple ROM and DOS. For instance people would just branch directly into weird places in the ROM, or poke directly into memory.
Looking at his more common blog, https://mjg59.dreamwidth.org/ ... it says he's moved to this one.
Any particular reason he's no longer using Dreamwidth?
For historical context, a PC compatible is a machine that can run a DOS that is compatible with PC-DOS and that can run applications for the IBM PC running PC DOS. This was vital to the success and failure of many companies and thus we can absolutely say what a PC compatible was. The PC-compatible standard was largely replaced by WinTel compatible in the late 1990s. Modern machines can still run Win32 and applications written for Win32, and thus are WinTel compatible.
Of course, being WinTel compatible matters less than ever before. Much of the software people care about is now either browser-based or open source and compiled for multiple targets. We also now have dynamic recompilers that are quite good, and therefore even being compiled for the target is... well, not as important.
We need some new kind of standard that identifies general purpose, superscalar CPU with large cache and SIMD, a PCIe controller with many lanes, a memory controller for DDR4/5 paired with UEFI and either a modern GPU or a decent NPU (or both). Currently, this describes a few RISC-V machines, many ARM machines, and most AMD64 machines after about 2018. Maybe this is something like 5th Generation Industry Standard Architecture or 5SA? Whatever the industry does or doesn't call it, it's certainly not PC compatible in any sense.
These days, a PC is pretty much defined as a computer that runs Windows.
It’s a great example of a technological anachronism—a term that outlives its original meaning. We have plenty of those, for example, we still "dial" a phone number on a keypad, "hang up" a call without a physical receiver to hang, and save a file to a "desktop" that’s often just a digital metaphor.
So really, "PC Compatible" fits right in: a useful, socially-agreed-upon label that’s more about practical expectation than technical purity. Thanks for the insightful read—it definitely brought a smile to my face. Cheers
Now define "modern PC". Oh boy, we've hit a dependency loop.
PC compatible means your software runs without error on MS-DOS. That's the definition I've used for 3 decades, and it should not change due to bloggers' retrospective. Of course, 100% IBM PC compatible is a level above this, when your software works exactly as if it were running inside an IBM PC.
Early 80s very different.