Sunday, March 28, 2010

My PC is not compatible

A long time ago, at the dawn of the PC era (1981), the fate of PC producers depended on compatibility with the IBM PC. While many companies made computers, Compaq was the first company to produce a "PC compatible", the original Campaq PC. (It was a portable PC, in the sense that it had a handle and could be moved from one location to another. It was not a laptop in any sense of the word.)

Compatibility with the original IBM PC (the model 5150) was important. Many folks wrote software that was specific to the IBM PC, and that software would not work on similar computers such as the DEC PRO-325 or the Zenith Z-100. Hardware designed for the IBM PC would not work in other brands of PCs, either.

Yet a funny thing has happened in the past twenty-nine years: The standard definition of a PC has changed.

The original IBM PC had an Intel 8088 CPU, 64K of memory (in 4146 DIP chips), ports for keyboard and cassette tape, and slots that could hold adapter cards. IBM provided adapters for monochrome video, color-graphics video, and floppy discs. The floppy disks were the 5.25 inch, 360K "true" floppy disks. (Or "mini-floppy" disks, as the 8 inch floppy discs from the IBM 3740 were never supported by IBM PCs -- of any flavor.)

The changes have been gradual. The first change occurred in the IBM PC XT (model 5160), which allowed for a hard drive. The IBM PC supported cassette tapes for storage, and floppy disks if you purchased the optional adapter card; the IBM PC XT dropped support for cassette tape and had a BIOS that supported floppy controller cards and hard disk controller cards. The hard disc was a then-whopping 10 MB.

The IBM PC AT which supported the 1.2MB high-density floppy discs and had a different keyboard. It used different memory chips and had a larger buss, although it accepted cards from the IBM PC and IBM PC XT. The IBM PC AT had a 20 MB hard drive. IBM introduced the Enhanced Graphics Adapter around the same time.

In 1987, IBM introduced the PS/2 (and later, with Microsoft, OS/2). With the PS/2 IBM changed the keyboard layout (again) and also the keyboard connector. IBM added the mouse port, and introduced the Virtual Graphics Adapter (VGA) which supported the (now puny) resolution of 640x480. IBM also changed the floppy disk from 5.25 inch to 3.5 inch with the hard plastic shell, and changed the buss to the Micro Channel Architecture buss.

The PS/2 was received poorly in the market, especially by other manufacturers. They banded together briefly and formed a standards group that produced "EISA", a buss that accepted old PC cards but also accepted new, high performance cards. The solution was a kludge and died a quick death. Yet the damage to IBM had been done, and the definition of a standard PC was no longer IBM's to make.

A few years later, Microsoft discontinued the agreement to develop OS/2, introduced Windows. Microsoft gained enough popularity and power to define the hardware platform. IBM lost its leadership role in the market, and eventually sold its PC business to Lenovo in China.

Looking at a PC today, one sees a modern machine that is nothing like the original IBM PC. Nothing from the original IBM PC works in a "modern" PC -- at least none of the hardware. The keyboard is different, the display monitor is different, the floppy discs (if present, most current PCs don't have them) are different. Adapter cards from the original IBM PC will not work in today's PCI buss. Hard drives from the IBM PC XT or PC AT will not work with today's SATA ports. Memory chips will not fit.

Nothing --again, in terms of hardware -- is compatible.

Software, on the other hand, tends to work. You can buy an IBM PC clone today and run DOS on it. (Well, a later version of DOS, one that understands CD drives. You can't boot DOS 1.0 from a 5.25 inch floppy disc.) I suspect that the original Lotus 1-2-3 program would run, if you could get past the copy-protection built into the software. (The copy protection depended on various quirks of floppy discs, which don't exist in today's PCs.)

The entire set of hardware has changed, yet the software continues. Software has a longer life that hardware. (I'm not the first to recognize this phenomenon.)

But if software is so long-lived, how do we manage it? How should we design something that will outlive the hardware, and probably the initial designers? How do we ensure that it will continue to work on successive generations of hardware?


No comments:

Post a Comment