Software spotlight: What defines an IBM PC compatible?:

When IBM first released the IBM PC, it was just yet another proprietary computer platform.

Starting with MS-DOS 1.25 (the equivalent of IBM PC-DOS 1.10), Microsoft made DOS available to OEMs to adapt to their own proprietary x86 based hardware.

This enabled some "well behaved" business and development DOS programs to run on non-IBM hardware.

Performance, however, was at a premium. Many DOS programs accelerated themselves by being "badly behaved". That is, they talked directly to the hardware, bypassing DOS and BIOS APIs. Such programs, therefore, would only run on a genuine IBM PC.

A few hardware vendors took a risk and began creating IBM PC "clones". Hardware clones somewhat copied the hardware design of the IBM PC, and sometimes tried to justify their existence by adding extra features that IBM did not offer. Such clones kept the same IBM hardware I/O layout and BIOS APIs, enabling them to run almost any "badly behaved" IBM PC software.

These vendors were promptly sued by IBM for infringement. Many thought IBM PC clones would would get stomped out much in the same way Apple stomped out most Apple II clones.

Compaq, however, in creating their Compaq Portable, used a carefully documented "clean room" approach. Courts eventually decided this approach was completely legal, thereby opening the floodgates of clone manufacturers.

Now, the question arises - what exactly defines "IBM PC compatible"? As it turned out, some clones were less compatible than others.

I've never seen a detailed compatibility test program. Many magazine testers just threw a few popular and demanding applications at clones, such as Microsoft Flight Simulator II and Lotus 1-2-3.

But this never really covered everything. The following are specific compatibility issues one would look at when evaluating a clone:

8088 or compatible CPU.
Includes 8086, 80186, NEC V20 and NEC V30. These are needed just to run any software at all.
Full compatibility includes the ability to operate at 4.77mhz in order to accommodate speed sensitive applications. "Turbo" 8MHZ 8088 computers managed this by allowing users to manually switch to a lower speed. Better written applications could handle faster CPUs.

Other system IC chips:
As it just so happened, all of the important IC components used in the IBM PC were common off-the-shelf components available from part vendors.
Computers that used custom chips (much more common in later computer designs) could not be copied as easily.
This made the IBM PC hardware very easy to clone.
During the very early days of clones, it was actually possible to buy bare Taiwanese motherboards and populate them with parts yourself.

Motherboard resources:
The IBM PC motherboard includes a number of hardware resources such as a DMA controller and programmable interrupt timer. Many programs accesses these directly, so full compatibility meant they had to be mapped to identical I/O addresses.
For example, to do anything beyond a simple "beep" on the PC speaker, applications would talk to the programmable interrupt timer directly.
Although making an exact 1:1 copy of the IBM PC motherboard wiring layout was not permitted by copyright, components could be wired up in a software-compatible manor using an original layout.

Cassette Interface:
One of the parts that was NOT required for IBM PC compatibility was the cassette port present on IBM PC 5150 computers and the IBM PC Jr. Speculation has it that cassette ports were only included so IBM could list a "functional" base drive-less unit at a much lower price. Almost nothing used the cassette port, so clones omitted it.

Compatible BIOS:
The function of bootstrapping IBM-PC DOS, and many I/O functions, are built in to IBM's BIOS. Functions can be called either through software interrupts or by jumping directly to machine code addresses.
IBM published the BIOS code, but retained copyright over it and did not license it to anyone else. Anyone caught copying any part of the code would get in to trouble.
Clean-roomed clone BIOSes instead documented calls used by popular software programs and implemented original code to provide compatible functionality.

ROM BASIC
IBM implemented an adaptation of Microsoft BASIC in the IBM PC ROM.
Only a handful of IBM titles required IBM's ROM BASIC. I think we have a few of those on Winworld.
Most regular BASIC software would run using Microsoft's DOS disk-based BASIC, that Microsoft licensed to OEMs.
No known legal PC clones licensed ROM basic.
I have seen bootleg copies of IBM's BIOS and ROM BASIC stuffed in to a number of early clone boards that have shown up on eBay.
Some early clone BIOS ROMS were buggy or incomplete, so installing a bootleg copy of IBM's ROMS vastly increased the machines compatibility.

Video hardware I/O
Displaying text or graphics through DOS calls and BIOS was very slow and clunky. Many DOS programs chose to write directly to video memory and access the video controller registers directly.
IBM had two common video cards: The IBM Monochrome Display Adapter, and the IBM Color Graphics Adapter.
To be compatible with IBM PCs, clones had to map monochrome display memory to A000:0000 or Color Graphics Adapter displays to B800:0000. IBM used a standard Motorola 6845 video controller, therefore clone makers could easily make functionally identical cards. The text and graphics memory layout also had to be duplicated. ROM character fonts had to be similar, but not exact.
A later revision of IBM CGA used a slightly different color pallet to accomodate gray scales on the IBM Portable.
Clone makers often added in extended graphics modes - most famously the Hercules Monographics Adapter.
Placing video cards at these standard addresses meant that clones could not have more than 640k of base memory.
A few games took advantage of CGA composite video artifacting to produce a fake 16-color mode, but most clone makers ignored this undocumented ability.

Floppy disk I/O:
Some DOS disk utilities and copy protection schemes bypassed both DOS and BIOS to communicate directly with the floppy disk controller. Clones therefore needed a compatible controller chip mapped to the same address.
Interestingly the original IBM PC floppy controller only supported MFM (double density) encoding. Some clones allow support for FM (single density) encoding although no standard IBM PC formats use FM.

Hard disk BIOS interrupts:
Although some hard disk controllers may have tried to be IBM I/O port compatible, IBM PC DOS and vanilla MS-DOS exclusively used BIOS calls in BIOS extension ROMs to talk to hard drives.
This was not common on other computer platforms, but it was a surprisingly flexible way of doing things. All a third party hard disk controller had to do was implement compatible INT 13 BIOS calls, and it would automatically work in DOS with no additional driver software. Even if the hardware was completely different.
When 386-protected mode operating systems that did not use BIOS calls became popular, this advantage started to go away.

Parallel printer port and serial ports:
Parallel printer and serial I/O are naturally slow. Over the years vendors came up with creative ways to use faster devices connected to these ports, and this almost always meant software would "bang" at the parallel interface and serial UARTs directly. The parallel interface was just a simple 8-bit gate, and serial used standard 8250 UARTs, so these were easy to copy.

Keyboard interface:

Like all other hardware in the IBM PC, many programs, especially games, sped things up by accessing the keyboard I/O directly.
Clone makers also cloned the physical/electrical interface so their clone keyboards could be used on genuine IBM PCs or vice-versa.
The motherboard hardware "controller" changed in the XT.
Confusingly, IBM changed the hardware interface protocol when they released the IBM AT.

Floppy drive:
The IBM PC and XT used 48TPI single sided or double sided 5.25" floppy drives. To be fully "IBM PC" compatible, it was expected any floppy disk written on an IBM PC must be readable by a clone, and any floppy disk written on a clone must be readable on an IBM PC.
Clone machines that used 8", 3.5" or 5.25" 96TPI (Quad density) drives were typically considered NOT IBM PC compatible. Disks written on 96TPI 5.25" drives can not be reliable read in 5.25" 48 TPI drives.
Everyone's head exploded when IBM released the IBM AT with a 1.2mb 5.25" 96TPI floppy drive.
The IBM convertible used 3.5" drives, but they were not considered standard until the IBM PS/2.

ISA expansion:
Clones that only accepted proprietary expansion cards were usually considered non IBM-PC hardware compatible. It was generally expected that any ISA expansion card designed for the IBM PC should work in a clone (sometimes including physical card size constraints).
Some clones were designed with no expand-ability and therefore those clones did not have to worry about ISA expansion.
Motherboards with CPUs such as the 8086 used a 16-bit bus. These had to include special hardware to adapt 16-bit I/O operations to the 8-bit ISA bus. Some of these 16-bit bus machines did not do this adequately, creating compatibility issues.

Case compatibility:
Although not a matter of compatibility from a software perspective, a full hardware "form" compatible system used a physical case that could be interchanged with an IBM XT or AT motherboard, power supply, cards, and standard 5.25" drives.
The 5150 used a different form than the XT with fewer expansion slots - there were few clones of the 5150 case.
This helped insure that any hardware peripheral or device upgrade built for an IBM XT or IBM AT, and therefore any software that made use of that device, would operate on a clone.

Software tests:
So what did the classic tests of "Microsoft Flight Simulator II" and "Lotus 1-2-3" actually test?

Microsoft Flight Simulator II was... um... a very demanding program for its time.
First of all, it operated as a "booter". A PC could boot the game disk directly rather than having to load DOS first. This tested a clone's ability to boot disks other than the vendor's bundled DOS.
Flight Simulator II was also copy protected. This tested the machines ability to read non-standard disk geometry.
It directly manipulated the CGA video controller. Due to some of the odd things it does, it actually fails to display properly on most later VGA video cards.
It was one of the few programs that made use of composite color artifacting. Genuine IBM CGA graphics modes only provide a maximum of 4 colors at a time, but composite artifacting give the appearance of 16 color.
Flight simulator also used the PC speaker for sound effects, testing motherboard resources.
I think it may have also poked at the keyboard controller directly, exposing any compatibility issue there.
As a game, it was also a test of keyboard responsiveness and key layout.
Flight simulator II could run in an automated "demo" mode that one could easily compare across multiple machines. Demo modes can be useful for detecting hardware stability issues, and stress tests I/O devices in conjunction with the CPU.
The program itself was not very "well behaved". For example, rather than prevent them, it relies on the ability of the CPU to catch divide by zero operations. The 80286 CPU does this a bit differently, making Flight Simulator II incompatible with AT 286 computers.

Lotus 1-2-3 was simply one of the most popular applications. Many people and businesses bought IBM PCs and clones specifically to run Lotus 1-2-3.
While not as demanding as a game, Lotus 1-2-3 also accelerated itself by communicating directly with the video.
Early Lotus 1-2-3 was also copy protected, requiring a floppy disk system that could do the same protection tricks.
Unlike games, business applications pushed interoperability with other systems. This is where the ability to reliably read and write floppy disks between different systems became critical.
Lotus 1-2-3 could also gauge the compatibly of components not used by games, such as printers and networks.
Spreadsheets are memory hungry, so any hardware tricks that stole RAM from DOS programs, or bloaded resident software, could cause problems.
Ironically, machines that sacrificed video compatibility to make room for system RAM beyond 640k would actually benefit spreadsheet programs.
Clone makers often included extra features not present on IBM PCs that business applications could use. For example, higher resolution text or graphics displays, larger hard disk systems, or Expanded Memory Specification (EMS) paged memory cards. It was important to gauge compatibly of such features.


Just a few compatibility examples:

DEC Rainbow
Totally proprietary hardware. It had absolutely nothing at all in common with the IBM PC, except for the presence of an 8088 CPU. Totally different motherboard resources, a Z-80 co-processor, and a very odd floppy drive, just to name a few differences. It was designed to run DEC's CP/M-8680. When they did adapt MS-DOS to run on it, they had to use some odd hacks to get DOS programs to run at all.

DOS on this machine could only run "well behaved" applications, such as command line tools, that limited themselves to DOS I/O. All other DOS applications had to be specially adapted to the specific hardware. For example, there is a DEC Rainbow specific version of Lotus 1-2-3.

Seattle Computers Products:
Notable because this was the system DOS was developed on.
Again, almost nothing at all in common with the IBM PC except an 8086 CPU.
It used 8" floppy drives, an S-100 bus, and designed to run from a terminal.

Zenith Z-100: (Z-110/120)
Once again, almost nothing at all in common with the IBM PC except an 8086.
Like the Seattle Computer Products, it used an S-100 bus, but with different hardware. It had a built in proprietary video graphics system, and 5.25" drives, but could optionally use 8" drives.
Not to be confused with the "Z-100 PC" series that was IBM PC hardware compatible.
Like the DEC Rainbow, there was a Z-100 specific Lotus 1-2-3 adaptation. Winworld does not currently have this version.

Columbia Data Product 1600
In contrast to the machines above, this machine was basically 100% IBM PC hardware compatible, and was considered the first IBM PC hardware clone. Some very early units had a proprietary hard drive, but most units with hard disks were fitted with standard ISA hard disk controllers.
ISA, CGA graphics, keyboard, floppy, BIOS were all IBM PC compatible.
Extensions beyond the IBM PC: The CDP 1600 featured additional ISA slots prior to IBM releasing the XT 5160. It featured built-in IBM compatible serial and parallel ports and floppy disk controller. It could run "headless" (no video card) using a setting in the BIOS.
The only notable non-compatible thing about it was that early units had an odd-sized parallel port plug.
The BIOS supports common IBM BIOS calls, it can run most IBM PC software and can run IBM PC-DOS.
BIOS ROM does not include ROM BASIC.
Columbia Data Products did get in to trouble for copying some IBM BIOS code.

Eagle 1600:
This machine is notable for using the more powerful 8086 CPU and the first PC or clone to bundle a hard drive. It is sometimes considered the second hardware compatible clone after the Columbia Data Products.
The Eagle 1600 motherboard made an attempt at IBM PC compatibility. It failed.
The motherboard implements an IBM PC compatible programmable interrupt timer, ISA slots, 16-bit addressable RAM, and uses an 8086 CPU.
The ISA bus appears to not support 16-bit I/O operations - they will fail. Software must use 8-bit I/O CPU operations instead. The 8088 CPU handled conversion internally as it used a native 8-bit data bus, but the 8086 requires external circuitry to do this.
The BIOS does not support ISA BIOS extensions. (I think - such ISA cards will not work anyway)
The serial interface card uses a strange, incompatible UART chip.
Likewise it uses an incompatible parallel port card.
The video card is software and hardware compatible with IBM MDA (monochrome, no graphics). It includes support for a proprietary monochrome graphics mode, but nothing I know of supports this mode. That mode is not Hercules compatible.
The Eagle 1600 model 1630 includes a SASI hard drive bridge (early SCSI) with an interface card that is only supported by the motherboard BIOS ROM. Notably, Eagle had used the same SASI bridge in their Z-80 CP/M machines. Also notably, it ran under Eagle's OEM adapted MS-DOS 1.25, which did not normally support hard drives. (BTW, if anyone has a copy of this, please let us know!)
The keyboard is a weird proprietary layout with many extra keys.
The 1600 uses a quad density (96TPI) floppy drive, that could not reliably write IBM PC floppy disks.
The floppy drive system COULD, however, boot IBM-PC DOS or vanilla MS-DOS from 360k disks and run some programs that did direct screen access - as long as they used 8-bit memory access.
So, it was somewhat IBM PC compatible, but did a very poor job of it.

Eagle PC:
The Eagle PC was a later machine from Eagle Computer that offered near 100% IBM PC compatibly.
It used standard 360k floppy drives, featured built in serial and parallel, the same FDC card as the 1600, and a CGA card that was such a close copy of IBM CGA, it even gets undocumented composite video artifacting the same.
Like CDP, Eagle got in to some trouble for copying bits of IBM BIOS code in both the Eagle 1600 and Eagle PC.

Compaq Portable
The Compaq Portable Computer was the more popular of the early PC clones.
It featured a portable/luggable form factor before IBM produced their own portable/luggable.
It has a compatible ISA bus, floppy card, CGA video, and BIOS.
The Compaq Portable can boot IBM PC-DOS and run most programs that directly access video and other hardware.
The BIOS does not include ROM basic.
Extensions: Its CGA video includes a higher resolution text mode that provided increased readability when using the built-in CRT.
Most notably, its BIOS was much more compatible with both software and hardware devices than other clone makers.
Like other early clone vendors, IBM accused them of "copying" BIOS code, however they had carefully used a clean-room reverse engineering approach so IBM had no case.

The IBM PC Jr.
Yea, even IBM's own "home" version of the IBM PC had compatibility issues.
To reduce costs, it omitted the motherboard DMA controller, and used part of the main system RAM as video memory.
It used the same 8088 CPU as the IBM PC, but due to the shared memory, it effectively operated slower.
It excluded an ISA bus, instead using "sidecar" modules as expansion.
The internal memory was not expandable beyond 128k. A sidecar module had to be used for more.
It featured a 16-color RGB graphics mode, a 3-voice square wave sound chip (same as used in the TI-99/4a), a ROM cartridge module port and an infrared connected keyboard.
Like the IBM PC, it had a cassette tape interface port, but nothing used it.
BIOS did include IBM's ROM BASIC.
Due to the limited memory, Lotus produced a ROM cartridge version of Lotus 1-2-3.

Tandy 2000:
Just to list another total hardware incompatible like the DEC Rainbow, the Tandy 2000 has almost nothing in common with the IBM PC.
It uses a faster 8mhz 80186 CPU, a proprietary hardware bus, proprietary high resolution video, supports up to 768k RAM, and quad density (96TPI) floppy drives.
I'm not certain, but it seems likley this was really intended as a Xenix machine.
It does have an adaptation of MS-DOS 2.x but can not run IBM PC DOS or vanilla MS-DOS.
As I understand it, it doesn't even have a BIOS ROM as such, so all of that functionality is loaded in to RAM with DOS.

Tandy 1000:
This was technically a clone of the IBM PCjr.
Notably, the original Tandy 1000 lacks the motherboard DMA controller, which the PCjr also lacks.
It features similar shared memory video with 16-color graphics and the same 3-voice square wave sound generator.
As such, it could run many games developed specially for the IBM PCjr.
Unlike the PCjr, the shared video memory does does not have the same performance hit.
It can boot and run IBM PC-DOS, and most programs that access hardware directly.
It included ISA expansions slots.
The Tandy 1000 was generally considered IBM PC compatible, even more so than the PCjr.

PCs Limited
So this dweeb named Michael Dell started assembling generic IBM PC clones in his dorm room using generic Taiwanese XT clone parts....

So to put it simply, getting any piece of early IBM PC software or peripheral hardware running on a clone could have been a bit of a crap shoot. Often times software vendors specifically listed the machine brands and models that their software officially supported. Fall outside of that, and it was anyone's guess what would happen.

As time passed, what defined an IBM PC compatible became better defined, and users had fewer problems.

Comments

  • You still ran into compatibility issues even on IBM's own PS/2 series back in that era. We still have the PS/2 30-286 that my brother and I learned everything about PCs on. And we would sometimes run software that worked fine on everyone else's computer, but wouldn't run well on ours.

    Why? Because of some of the same thing that was found in clones--proprietary video, proprietary storage controller, etc. It was generally a decently fast computer and had great compatibility, but when it came to things like games the proprietary stuff was pretty obvious pretty fast.

    We upgraded this system all the way to a 486SLC and maxed out the ram to run Win3.1 slowly. Storage was a bigger issue as we added an ST-01 SCSI card and a Quantum 240MB hard drive to help with that issue. I think we even installed a 3com 3c509 in it in the end. I really do need to restore that system--it was definitely a beauty.

Leave a Comment

BoldItalicStrikethroughOrdered listUnordered list
Emoji
Image
Align leftAlign centerAlign rightToggle HTML viewToggle full pageToggle lights
Drop image/file