CP/M and CPAs: Spreadsheets and Business Computing
Today, most people in computing have some familiarity with the PC Revolution: a time period in which large, centralized computers gave way to the compact single-user devices that we know today. Many sources, including the venerable Wikipedia, actually prefer the name microcomputer revolution, but in many ways the complete absence of the term “microcomputer” in the modern lexicon is a sign of just how successful this revolution was.
Discussions of microcomputer history tend to start with the Altair 8800, a wonderful 1974 machine which launched the modern Microsoft and introduced Intel microprocessors to the mass market. There’s a huge disconnect between the 8800 and the microcomputer (or PC) of today, though: the Altair 8800 was designed for and marketed to hobbyists, leaving the business market to its minicomputers and even macrocomputers. How did the microcomputer make the leap from hacker’s garages to the front office?
A large part of that answer rests with one brilliant software package: VisiCalc.
The story of Visicalc is a little bit complicated, in part because of their porting strategy. In the late 1970s, there were multiple microcomputer architectures vying for market dominance, and software firm VisiCorp was not about to choose sides. The first release of VisiCalc, in 1979, was for the Apple II, and VisiCalc is often considered the “killer app” for the Apple II: one of the main motivators for its sales and the major part of Apple’s early lead in business microcomputers. Over the next two years, though, VisiCalc was rapidly ported to to an alarming number of platforms, and generally sold fantastically on all of them. The Apple II is such a well-known machine that I find the others a bit more interesting.
But before we get to that, first things first: what was this revolutionary VisiCalc?
Accounting, at a core technical level, could be called the field of totalizing numbers. A bookkeeper collects revenues and expenditures, categorizes them, and then sums them, in order to determine the current status of each account. In business accounting, these sums are usually inputs into yet other analyses, which are inputs to others, and so on until ultimately annual reports are produced. You can imagine that for any substantial business, just the number of addition operations this involves becomes incredibly time consuming.
Before computers, accountants and bookkeepers did this work on ruled paper usually sold specifically for the purpose in various types of account books and columnar books. These would often get very large, to the extent that each page spanned both sides of the book to make it was wide as possible. In printing, of course, this configuration is referred to as a “spread”, and so these became known as “spread-sheets”.
As you can imagine, doing the math by hand or even with the assistance of adding machines required a lot of paid hours and was very error prone (when I took accounting classes in high school from a rather old-school instructor, we were taught specific techniques for detecting and locating errors like transposed digits and misplaced decimal points). The desire for automation was huge.
Business computing generally started with card-fed mainframes. The first accounting solutions were based on this model: bookkeepers would punch transactions into cards which would then be fed through in a batch, resulting in yet other punched cards with summary results that could be used for the next stage of analysis (for example, a card might be punched for each invoice, which would be fed through the computer for totalization into cards that would later be fed through again for posting to various accounts). A number of software solutions existed for this, but remember that these machines had very limited memory, and so instructions were usually mingled with the data (for example, when posting to accounts, a new set of instructions might be fed through the machine between each account). For this reason, early accounting computer operators also functioned as crack programmers, and many early accounting systems looked more like a domain-specific programming language than something we would recognize as an accounting application.
Many people grant the title of first spreadsheet to a 1969 mainframe application called LANPAR. Although LANPAR is an impressive part of this history, I don’t usually consider it to be the first spreadsheet application for two reasons. First, although it had facilities for graphical (plotter) output, LANPAR was not a graphical interface program and so it lacks superficial resemblance to modern spreadsheets. Essentially, LANPAR was a specialized programming language, not an application. Second, LANPAR was actually ahead of its time in several ways, with features that later graphical spreadsheets were missing. One example is the intelligent handling of forward-references, or dependencies between cells. LANPAR would work out the inter-cell dependencies and determine how many calculation iterations were needed to update the sheet. This feature was missing from the next generation of spreadsheet software and didn’t return for some time, creating a sort of historical discontinuity that suggests that LANPAR had little impact on its category.
Instead, I place the genesis of the modern spreadsheet right with VisiCalc, an application that combined all of the core features of modern spreadsheet applications: an interactive, graphical (cell-wise) interface, distribution for personal computers, and ubiquity. And VisiCalc’s revolutionary nature was clearly recognized by the market: as VisiCalc was ported from platform to platform, it became the bestseller on almost every one. To say that VisiCalc brought the Apple II into business is to deny it credit, VisiCalc could also be said to have brought the Atari 800, the TRS-80, and the IBM PC into business. Amusingly, in doing so, it quickly denied its status as a Killer App to the Apple II – VisiCalc, like modern software products, was largely decoupled from a platform, which was quite unusual for software products at the time.
In 1980, shortly after the Apple II release, VisiCalc was released for one of my favorite historical operating systems: CP/M. Here, the Altair 8800 makes its return. The Apple II, as the first complete Apple computer and an enormous economic success, generally steals the historical show from its release date for several years forward. Yet the Altair was not forgotten. The Intel 8080 processor and “S-100” interconnect bus used in the Altair 8800 was one of the most common architectures for personal computers from the release of the Altair through the Apple II’s 1977 release and for several years after, with a dizzying number of now-forgotten manufacturers producing what were essentially Altair clones. The most popular operating system for these devices was CP/M, from a company wonderfully named Intergalactic Digital Research, although they quickly dropped the “Intergalactic.”
CP/M was to Wozniak’s Integer Basic (with which the Apple II shipped) as Windows is to OS X today, the leading “PC” competitor to Apple’s platform, and although hardly anyone today remembers CP/M the lineage is actually quite strong. CP/M struggled to handle the transition to the 16-bit Intel 8086 well, and the final nail was driven into CP/M’s coffin when IBM’s negotiations to license it for the IBM PC fell through. Instead, IBM turned to another small software vendor strongly associated with the Altair family: Microsoft.
To provide an operating system for the IBM PC, Bill Gates did what he does best and purchased an operating system called 86-DOS (in fact, he hired its sole developer as well), which was rebranded to MS-DOS and ultimately carried the weight of the Windows family of operating systems until the NT platform finally completely replaced it in Windows XP. 86-DOS was developed as a clone of CP/M for the 8086, and so MS-DOS and Windows are to some degree CP/M descendants. VisiCalc followed CP/M through this journey, and was promptly released for the IBM PC, helping to bring the PC platform into the business world.
So what happened to VisiCalc? The release of the competing Lotus 1-2-3 spreadsheet application in 1983 was the death knell for VisiCorp. Lotus 1-2-3 was largely a clone of VisiCalc but was designed natively for the IBM PC and performed significantly better. 1-2-3 quickly replaced VisiCalc and ultimately Lotus acquired VisiCorp and shut it down. 1-2-3’s success made Lotus a business software giant. Lotus later developed a complete groupware solution and was acquired by IBM, which has lately been the kiss of death for software. Even today, some corporations are still in the middle of transitioning away from the Lotus platform.
After the release of MS-DOS, Digital Research rebuilt CP/M into a direct competitor called DR-DOS and held its own against Microsoft and IBM for an impressive time. Ultimately, though, Microsoft was unstoppable, and Digital Research faded into obscurity during the mid-1980s. Today, it has just a few small legacies: when you see a Windows file path, remember that the idea of identifying each drive with a letter came right out of CP/M.