IBM PC compatible

From Wikipedia, the free encyclopedia

IBM PC compatible computers are those generally similar to the original IBM PC, XT, and AT. Such computers used to be referred to as PC clones, or IBM clones since they almost exactly duplicated all the significant features of the PC, XT, or AT internal design, facilitated by various manufacturers' ability to legally reverse engineer the BIOS through cleanroom design. Columbia Data Products built the first clone of an IBM computer through a cleanroom implementation of its BIOS. Early IBM PC compatibles used the same computer bus as the original PC and AT models, which was later named the ISA Bus when manufacturers developed alternatives to the original IBM standard.

The term "IBM compatible" became exclusively historical once IBM stopped manufacturing personal computers.

Descendants of the IBM PC compatibles make up the majority of microcomputers on the market today, although interoperability with the bus structure and peripherals of the original PC, XT or AT may be non-existent.

Contents

[edit] History

[edit] Origins

The original IBM PC (Model 5150) motivated the production of clones in the early-1980s.
The original IBM PC (Model 5150) motivated the production of clones in the early-1980s.

The origins of this platform came with the decision by IBM in 1980 to market a low-cost single-user computer that they dubbed a personal computer as quickly as possible in response to Apple Computer's success in the burgeoning market. On 12 August 1981, the first IBM PC went on sale. There were three operating systems (OS) available for it but the most popular and least expensive was PC DOS, a version of MS DOS licensed from Microsoft. In a crucial concession, IBM's agreement allowed Microsoft to sell its own version, MS-DOS, for non-IBM platforms. The only proprietary component of the PC was the BIOS (Basic Input/Output System).

A number of computers based on the 8086/8088 processors, but with different architecture to the PC, and which ran under their own versions of MS-DOS and CP/M-86, were manufactured during this period. However, software which addressed the hardware directly instead of making standard calls to MS-DOS was faster, although against the idea of using a customised operating system which matched standard software with diverse hardware; this was particularly relevant to games. The IBM PC was the only machine sold in high enough volumes to justify writing software specifically for it, and this encouraged other manufacturers to produce machines which could run the same programs and use the same expansion cards and peripherals as the PC. The 808x computer marketplace rapidly excluded all machines which were not functionally very similar to the PC. The 640kB limit on "conventional" system memory available to MS-DOS is a legacy of that period; other non-clone machines did not have this limit.

The original "clones" of the IBM Personal Computer were created without IBM's participation or approval. Columbia closely modeled the IBM PC and produced the first "compatible" PC (i.e., more or less compatible to the IBM PC standard) in June 1982 closely followed by Eagle Computer. Compaq Computer Corp. announced its first IBM PC compatible a few months later in November 1982—the Compaq Portable. The Compaq was not only the first "sewing machine-sized" portable PC but, even more important, was the first essentially 100% PC-compatible computer. The company could not directly copy the BIOS as a result of the court decision in Apple v. Franklin, but it could reverse-engineer the IBM BIOS and then write its own BIOS using clean room design. Compaq became a very successful PC manufacturer, but was bought out by Hewlett-Packard in 2002.

[edit] Compatibility issues

See also: Influence of the IBM-PC on the PC market
The Compaq Portable was the first 100% IBM-compatible PC, and the first portable one.
The Compaq Portable was the first 100% IBM-compatible PC, and the first portable one.

Simultaneously, many manufacturers such as Xerox, HP, Digital, Sanyo, Texas Instruments, Tulip and Wang introduced personal computers that were—although x86- and MS-DOS-based—not completely software- or hardware-compatible with the IBM PC. While not providing total compatibility seems short-sighted in retrospect, it is not always appreciated just how fast the rise of the IBM clone market was, and the degree to which it took the industry by surprise.

Microsoft's intention, and the mindset of the industry from 1981 to as late as the mid-1980s, was that application writers would write to the application programming interfaces (APIs) in MS-DOS, and in some cases to the firmware BIOS, and that this level of interface would form what would now be called a hardware abstraction layer. Each computer would have its own Original Equipment Manufacturer (OEM) version of MS-DOS, customized to its hardware. Any piece of software written for MS-DOS would run on any MS-DOS computer, regardless of variations in hardware design.

This expectation seemed reasonable in the context of the computer marketplace as it existed then. Until then Microsoft was primarily focused on computer languages such as BASIC. The established small system operating software was CP/M from Digital Research, which was in use both at the hobbyist level and at the more professional end of the microcomputer spectrum. To achieve such widespread use, the OS had to operate across a range of machines from different vendors that had widely varying hardware, although most were based on the 8080 and Z-80 architectures, and 64k RAM quickly became standard. Many CP/M-based computers came with a suite of software (often including MicroPro's WordStar, the CalcStar spreadsheet, simple DataStar database manager, and a version of the BASIC programming language interpreter). Those customers who needed additional applications beyond the starter pack could expect publishers to offer their products in several media formats for a variety of computers.

Microsoft's competing OS was initially targeted to run on a similar varied spectrum of hardware, although all based on the 8086 architecture. Thus, MS-DOS was for many years sold only as an OEM product. There was no Microsoft-branded MS-DOS: MS-DOS could not be purchased directly from Microsoft, and each OEM release was packaged with the trade dress of the given PC vendor; the different versions were in general incompatible with different hardware. Bugs were to be reported to the OEM, not to Microsoft. However, as clones became widespread, it soon became clear that the OEM versions of MS-DOS were virtually identical, except perhaps for the provision of a few utility programs.

MS-DOS provided adequate support for character-oriented applications such as those that could have been implemented on a minicomputer and a text-only terminal. Had the bulk of commercially important software fallen within these bounds, low-level hardware compatibility might not have mattered. However, in order to provide maximum performance and leverage hardware features (or work around hardware bugs), PC applications very quickly evolved beyond the simple terminal applications that MS-DOS supported directly. Spreadsheets, WYSIWYG word processors, presentation software and remote communication software established new markets that exploited the PC's strengths, but required capabilities beyond what MS-DOS interfaces provided. Thus, from very early in the development of the MS-DOS software environment, many significant pieces of popular commercial software wrote directly to the hardware, for a variety of reasons:

  • MS-DOS itself did not provide any way to position the text cursor (except to advance it after printing each letter). While the BIOS video interface routines were adequate for rudimentary output, they were inefficient due to not having "string" output (only output by individual character) and the insertion of delay periods to compensate for CGA hardware "snow" (a display artifact of CGA cards produced when writing directly to screen memory). A program that wrote directly to video memory could achieve output rates 5 to 20 times faster than making standard calls to the BIOS and MS-DOS.
  • Graphics capability was not taken seriously in the original IBM design brief; it was considered to be an exotic or novelty function. MS-DOS did not have an API for graphics, and the BIOS only included the most rudimentary of graphics functions (such as changing screen modes and plotting single points); having to make a BIOS call for every point drawn or modified also increased overhead considerably, making the BIOS interface notoriously slow. Because of this, line-drawing, arc-drawing, and blitting had to be performed by the application to achieve acceptable speed, which was usually done by bypassing the BIOS and accessing video memory directly.
  • Games, even early ones, mostly required a true graphics mode. They also performed any machine-dependent trick the programmers could think of in order to gain speed. Though initially the major market for the PC was for business applications, games capability became an important factor in driving PC purchases as PC prices fell.
  • Communications software directly accessed the UART chip, because the MS-DOS API and the BIOS did not provide full support for the chip's capabilities and was far too slow to keep up with hardware which could transfer data at 19200 baud.
  • Even for standard business applications, speed of execution was a significant competitive advantage. This was shown dramatically by Lotus 1-2-3's competitive knockout of rival Context MBA in the then-popular genre of integrated software. Context MBA, now almost forgotten, preceded Lotus to market and included more functions; it was written in standard Pascal, making it highly portable but, given the compilers of the day, too slow to be truly usable on a PC. Lotus was written in pure assembly language and performed some machine-dependent tricks. It was so much faster that Context MBA was dead as soon as Lotus arrived.
  • Disk copy-protection schemes, in common use at the time, worked by reading nonstandard data patterns on the diskette to verify originality. These patterns were difficult or impossible to detect using standard DOS or BIOS calls, so direct access to the disk controller hardware was necessary for the protection to work.
PC compatibility was an important concern. Even the Commodore Amiga had a PC compatible add-on module, the Sidecar
PC compatibility was an important concern. Even the Commodore Amiga had a PC compatible add-on module, the Sidecar

At first, few "compatibles" other than Compaq's models offered compatibility beyond the DOS/BIOS level. Reviewers and users developed suites of programs to test compatibility; the ability to run Lotus 1-2-3 or Microsoft Flight Simulator became one of the most significant "stress tests". Vendors gradually learned not only how to emulate the IBM BIOS but also where to use identical hardware chips to perform key functions within the system. Eventually, the Phoenix BIOS and similar commercially-available products permitted computer makers to build essentially 100%-compatible clones without having to reverse-engineer the IBM PC BIOS themselves.

Over time, IBM damaged its own market by itself failing to appreciate the importance of "IBM compatibility", introducing products such as the IBM Portable (which was outperformed and outsold by the Compaq Portable launched at the same time) and the PCjr, which had significant incompatibilities with the original PC. By the mid to late 1980s buyers began to regard PCs as commodity items, and doubted that the security blanket of the IBM name warranted the price difference. Meanwhile, MS-DOS-compatible (but not hardware-compatible) systems did not succeed in the marketplace. The inability to run the off-the-shelf high-performance software packages that the IBM PC and true compatibles did resulted in poor sales and the eventual extinction of that category of systems.

[edit] The declining influence of IBM

Since 1981, IBM PC compatibles have grown to dominate both the home and business markets of commodity computers, with the only notable alternative architecture being the Apple Macintosh computers (which comprise around 4% of shipping computers). However, IBM itself lost the leadership role in the market for IBM PC compatibles by 1990. Three events in retrospect are likely turning points:

However, as the market evolved, IBM derived a considerable income stream from license fees from companies who paid for licenses to use IBM patents that were in the PC design, to the extent that IBM's focus changed from discouraging PC clones to maximizing its revenue from license sales. IBM finally relinquished its role as a PC manufacturer in April 2005, when it sold its PC Division to Lenovo for $1.75 billion.

As of October 2007, Hewlett-Packard and Dell hold the largest shares of the PC market in North America. They are also successful overseas, with Acer, Lenovo, and Toshiba also notable. Worldwide, a huge number of PCs are "white box" systems assembled by a myriad of local systems builders. Despite advances in computer technology, all current IBM PC compatibles remain very much compatible with the original IBM PC computers, although most of the components implement the compatibility in special backward compatibility modes used only during a system boot.

[edit] Expandability

One of the strengths of the PC compatible platform is its modular hardware design. End-users could readily upgrade peripherals and to some degree, processor and memory without modifying the computer's motherboard or replacing the whole computer, as was the case with many of the microcomputers of the time. However, as processor speed and memory width increased, the limits of the original XT/AT bus design were soon reached, particularly when driving graphics video cards. IBM did introduce an upgraded bus in the IBM PS/2 computer that overcame many of the technical limits of the XT/AT bus, but this was rarely used as the basis for IBM compatible computers since it required licence payments to IBM both for the PS/2 bus and any prior AT-bus designs produced by the company seeking a license. This was unpopular with hardware manufacturers and several competing bus standards were developed by consortiums, with more agreeable license terms. Various attempts to standardize the interfaces were made, but in practice, many of these attempts were either flawed or ignored. Even so, there were many expansion options, and the PC compatible platform advanced much faster than other competing platforms of the time, even if only because of its market dominance.

[edit] "IBM PC Compatible" becomes "Wintel"

In the 1990s, IBM's influence on PC architecture became increasingly irrelevant. Instead of focusing on staying compatible with the IBM PC, vendors began to focus on compatibility with the evolution of Microsoft Windows. In 1993, a version of Windows NT was released that could run on processors other than x86. (It did require a recompile, however, and many applications weren't recompiled.) Still, its hardware independence was taken advantage of by SGI x86 workstations - thanks to NT's HAL, NT (and more importantly, its applications) could run on them. No mass-market personal computer hardware vendor dares to be incompatible with the latest version of Windows, and Microsoft's annual WinHEC conferences provide a setting in which Microsoft can lobby for and --- in some cases --- dictate the pace and direction of the hardware side of the PC industry. Microsoft and Windows have become so important to the ongoing development of the PC hardware that industry writers have taken to using the term "Wintel architecture" ("Wintel" being a portmanteau of "Windows" and "Intel") to refer to the combined hardware-software platform. This terminology itself is becoming a misnomer though as Intel has lost absolute control of the direction of the development of this hardware platform as AMD has become a major player and in some aspects a leader, with Intel starting to copy AMD technologies such as x86-64.

[edit] Design limitations and more compatibility issues

Although the IBM PC was designed for expandability, the designers could not anticipate the hardware developments of the '80s. To make things worse, IBM's choice of the Intel 8088 for the CPU introduced several limitations which were hurdles for developing software for the PC compatible platform. For example, the 8088 processor only had a 20-bit memory addressing space. In order to expand PCs beyond one megabyte, Lotus, Intel, and Microsoft jointly created expanded memory (EMS), a bank-switching scheme to allow access to additional memory provided by add-in hardware, available via a 64 KB "window" inside the 20-bit addressing. Later, Intel CPUs had larger address spaces and could directly address 16 MB (80286) or more, leading Microsoft to additionally develop extended memory (XMS) which did not require additional hardware. Expanded and extended memory have incompatible interfaces, so anyone writing software that used more than one megabyte had to support both systems for the most compatibility. A protected mode OS can also be written for the 80286, but DOS application compatibility was harder than expected, owing not only to the fact that most DOS application directly access the hardware, but also that most BIOS interrupts were in reserved interrupt vectors.

Graphics cards suffered from their own incompatibilities. Once graphics cards advanced to SVGA level, the standard for accessing them was no longer clear. At the time, PC programming involved using a memory model that had 64 KB memory segments. The most common VGA graphics mode's screen memory fitted into a single memory segment. SVGA modes required more memory, so accessing the full screen memory was tricky. Each manufacturer developed their own ways of accessing the screen memory, even going so far as not to number the modes consistently. An attempt at creating a standard called VBE was made, but not all manufacturers adhered to it.

Due to the wide number of third-party adapters for the PC and no standard for interfacing with them, programming the PC could be difficult. When developing for the PC, a large test-suite of various hardware combinations was needed to make sure the software was compatible with as many PC configurations as possible. Even the PC itself had no clear application interface to the flat memory model the 386 and higher could provide in protected mode. Again a protected mode OS could be written for the 80386. This time, DOS compatibility was much easier because of virtual 8086 mode. Unfortunately programs cannot switch directly to protected mode from that mode, so eventually, some new memory-model APIs were developed, VCPI and DPMI, the latter becoming the most popular.

Meanwhile, consumers were overwhelmed by the many different combinations of hardware on offer. To give the consumer some idea of what sort of PC would be needed to run a given piece of software, the Multimedia PC (MPC) standard was set in 1990. It meant that a PC that met the minimum MPC standard could be considered an MPC. Software that could run on a minimalistic MPC-compliant PC would be guaranteed to run on any MPC. The MPC level 2 and MPC level 3 standards were later set, but the term "MPC compliant" never caught on. After MPC level 3 in 1996, no further MPC standards were established.

[edit] Challenges to Wintel domination

The success of Microsoft Windows had driven nearly all other rival commercial operating systems into near-extinction, and had ensured that the “IBM-compatible” PC was the dominant computing platform. This meant that if a manufacturer only made their software for the Wintel platform, they would be able to reach out to the vast majority of computer users. By the late 1980s, the only major competitor to Windows with more than a few percentage points of market share was the Apple Macintosh platform. The Mac started out billed as "the computer for the rest of us" but the DOS/Windows/Intel onslaught quickly drove the Macintosh into an education and desktop publishing niche, from which it has only recently begun to emerge. By the mid to late 1990s Mac marketshare had dwindled to around 5% and introducing a new rival operating system had become too risky a commercial venture. Experience had shown that even if an operating system was technically superior to Windows, it would be a failure in the marketplace (BeOS and OS/2 for example).

On the hardware front, Intel initially licensed their technology so that other manufacturers could make x86 CPUs. As the "Wintel" platform gained dominance Intel abandoned this practice. Companies such as AMD and Cyrix developed alternative CPUs that were functionally compatible with Intel's. Towards the end of the 1990s, AMD was taking an increasing share of the CPU market for PCs. AMD even ended up playing a significant role in directing the evolution of the 'x86 platform when its Athlon line of processors continued to develop the classic x86 architecture as Intel deviated with its "Netburst" architecture for the Pentium 4 CPUs and the IA-64 architecture for the Itanium line of server CPUs. AMD developed the first 64 bit extension of the x86 architecture that forced intel to make a clean-room version of it, in all its latest CPUs. In 2006 Intel began abandoning Netburst with the release of their line of "Core" processors that represented an evolution of the earlier Pentium III.

[edit] The PC today

Main article: Personal computer
The case of a modern gaming computer. This case is more elaborate than the beige box cases used throughout the 1990s.
The case of a modern gaming computer. This case is more elaborate than the beige box cases used throughout the 1990s.

The term 'IBM PC compatible' is not commonly used for current computers. The competing, non-compatible platforms have either died off, been relegated to niche, enthusiast markets like the Amiga or, like Mac OS and Linux, have evolved compatibility features easing interoperability and data exchange. The processor speed and memory capacity of modern PCs are many orders of magnitude greater than they were on the original IBM PC and yet backwards compatibility has been maintained. A modern PC can still run many of the simpler programs written for the PCs of the early 1980s without needing an emulator.

[edit] See also

[edit] Notes