Knowledge is freedom


Gary Kildall

Image via Wikipedia

CP/M (Control Program for Microcomputers) was a mass-market operating system created for Intel 8080/85 based microcomputers by Gary Kildall of Digital Research, Inc. Initially confined to single-tasking on 8-bit processors and no more than 64 kilobytes of memory, later versions of CP/M added multi-user variations, and were migrated to 16-bit processors.

The combination of CP/M and S-100 bus computers patterned on the MITS Altair was an early “industry standard” for microcomputers, and this computer platform was widely used in business through the late 1970s and into the mid-1980s, expanding to include 16-bit CPUs and multiuser capability. By greatly reducing the amount of programming required to install an application on a new manufacturer’s computer, CP/M increased the market size for both hardware and software.

The beginning and CP/M’s heyday

Gary Kildall originally developed CP/M during 1973-74, as an operating system to run on an Intel Intellec-8 development system, equipped with a Shugart Associates 8-inch floppy disk drive interfaced via a custom floppy disk controller. It was written in Kildall’s own PL/M (Programming Language for Microcomputers). Various aspects of CP/M were influenced by the TOPS-10 operating system of the DECsystem-10 mainframe computer, which Kildall had used as a development environment.

The name

CP/M originally stood for “Control Program/Monitor”. However, during the conversion of CP/M to a commercial product, trademark registration documents filed in November 1977 gave the product’s name as “Control Program for Microcomputers”. The CP/M name follows a prevailing naming scheme of the time, as in Kildall’s PL/M language, and Prime Computer’s PL/P (Programming Language for Prime), both suggesting IBM’s PL/I; and IBM’s CP/CMS operating system, which Kildall had used when working at the Naval Postgraduate School.

This renaming of CP/M was part of a larger effort by Kildall and his wife as a business partner to convert Kildall’s personal project of CP/M and the Intel-contracted PL/M compiler into a commercial enterprise. The Kildalls astutely intended to establish the Digital Research brand and its product lines as synonymous with “microcomputer” in the consumer’s mind, similar to what IBM and Microsoft together later successfully accomplished in making “personal computer” synonymous with IBM and Microsoft product offerings. Intergalactic Digital Research, Inc. was later renamed via a corporation change-of-name filing to Digital Research, Inc.


CP/M was described as a “software bus”, allowing multiple programs to interact with different hardware in a standardized way. Programs written for CP/M were typically portable between different machines, usually only requiring specification of the escape sequence for control of the screen and printer. This portability made CP/M popular, and much more software was written for CP/M than for operating systems that only ran on one brand of hardware. One restriction on portability was that certain programs used the extended instruction set of the Z80 processor and would not operate on an 8080 or 8085 processor.

Many different brands of machines ran CP/M, some notable examples being the Altair 8800, the IMSAI 8080, the Osborne 1 and Kaypro portables, and MSX computers. Even the Apple II could run CP/M when an extra Z80 card was installed. The best-selling CP/M-capable system of all time was probably the Commodore 128, although few people actually used its CP/M abilities. In the UK, CP/M was also available on Research Machines educational computers (with the CP/M source code published as an educational resource), and for the BBC Micro when equipped with a Z80 co-processor. Furthermore, it powered the popular Amstrad PCW word-processing system and was available for the Amstrad CPC series and later models of the ZX Spectrum.


WordStar, one of the first widely used word processors, and dBASE, an early and popular database program for small computers, were originally written for CP/M. An early outliner, KAMAS (Knowledge and Mind Amplification System) was also written for CP/M, though later rewritten for MS-DOS. Turbo Pascal, the ancestor of Borland Delphi, and Multiplan, the ancestor of Microsoft Excel, also debuted on CP/M before MS-DOS versions became available. AutoCAD, a CAD application from Autodesk debuted on CP/M. A host of compilers and interpreters for popular programming languages of the time (such as BASIC and FORTRAN) were available, among them several of the earliest Microsoft products. The lack of standardized graphics support severely limited video games, but various character and text-based games were ported, such as Hamurabi, Lunar Lander and Colossal Cave Adventure, along with other early interactive fiction. Lifeboat Associates started collecting and distributing user-written “free” software. One of the first was XMODEM, which allowed reliable communication via modem and phone line.

Disk formats

While the 8-inch single density floppy disk format (so-called “distribution format”) was standardized, various 5¼ inch formats were used depending on the characteristics of particular systems and to some degree the choices of the designers. CP/M supported options to control the size of reserved and directory areas on the disk, and the mapping between logical disk sectors (as seen by CP/M programs) and physical sectors as allocated on the disk. There were very many ways to customize these parameters for every system[9] but once they had been set, no standardized way existed for a system to load parameters from a disk formatted on another system. No single manufacturer prevailed in the 5¼ inch era of CP/M use, and disk formats were not portable between hardware manufacturers. A software manufacturer had to prepare a separate version of the program for each brand of hardware on which it was to run. With some manufacturers (Kaypro is an example), there was not even standardization across the company’s different models. Because of this situation, disk format translation programs, which allowed a machine to read many different formats, became popular and reduced the confusion, as did programs like kermit which allowed transfer of data and programs from one machine to another using the serial ports that most CP/M machines had. The fragmented CP/M market, requiring distributors either to stock multiple formats of disks or to invest in multiformat duplication equipment, compared with the more standardized IBM PC disk formats, was a contributing factor to the rapid obsolescence of CP/M after 1981.


Although graphics-capable S100 systems existed from the commercialization of the S100 bus, CP/M did not provide any standardized graphics support until the release of CP/M 3.0 with GSX (Graphic System eXtension). Owing to the small memory available, graphics was never a common feature associated with 8-bit CP/M operating systems. Most systems could only display rudimentary ascii art charts and diagrams in text mode or by using a custom character set.

The 16-bit world

Versions of CP/M were later completed for some 16-bit CPUs as well, although they required the application programs to be re-compiled for the new CPUs—or, if they were written in assembly language, to be largely rewritten from scratch.

One of the first was CP/M-86 for the Intel 8086, which was soon followed by CP/M-68k for the Motorola 68000. At this point the original 8-bit CP/M became known by the retronym CP/M-80 to avoid confusion. There was also a port to the Zilog Z8000, named CP/M-8000.

CP/M-68k was initially used in the Atari ST computer, but Atari decided to go with a newer DOS called GEMDOS. It also was used on the SORD M68 and M68MX computers. CP/M-86 was expected to be the standard operating system of the new IBM PCs, but DRI and IBM were unable to negotiate development and licensing terms. IBM turned to Microsoft instead, and Microsoft delivered PC-DOS based on a CP/M “clone,” 86-DOS. Although CP/M-86 became an option for the IBM PC after DRI threatened legal action, it never overtook Microsoft’s system.

When Digital Equipment Corporation put out the Rainbow 100 to compete with IBM, it came with CP/M-80 using a Z80 chip, and CP/M-86 or MS-DOS using an 8088 microprocessor. The Z80 and 8088 CPUs ran concurrently. A benefit of the Rainbow was that it could continue to run 8-bit CP/M software, preserving a user’s possibly sizable investment as they moved into the 16-bit world of MS-DOS.
[edit] MS-DOS takes over

In 1980 IBM approached Digital Research to license a forthcoming version of CP/M for their new product, the IBM Personal Computer, but on their failure to obtain a signed non-disclosure agreement, the talks failed, and IBM instead used Microsoft to provide an operating system.

Many of the basic concepts and internal mechanisms of early versions of MS-DOS resembled those of CP/M. Internals like file-handling data structures were identical, and both referred to disk drives with a letter (A:, B:, etc.). MS-DOS’s main innovation was its FAT file system. This similarity made it easier to port popular CP/M software like WordStar and dBase. However, CP/M’s concept of separate user areas for files on the same disk was never ported to MS-DOS. Since MS-DOS had access to more memory (as few IBM PCs were sold with less than 64 KB of memory, while CP/M had to run in 16 KB if necessary), more commands were built in to the command-line user interface logic, making MS-DOS somewhat faster and easier to use on floppy-based computers.

CP/M rapidly lost market share as the microcomputing market moved to the PC platform, and it never regained its former popularity. Byte magazine, at the time one of the leading industry magazines for microcomputers, essentially ceased covering CP/M products within a few years of the introduction of the IBM PC. For example, in 1983 there were still a few advertisements for S100 boards and articles on CP/M software, but by 1987 these were no longer found in the magazine. InfoWorld magazine described the unsuccessful efforts at introducing CP/M based home computers in 1983 and in 1986 stated that the Kaypro corporation had stopped production of their 8-bit CP/M-based models to concentrate on sales of MS DOS compatible systems, long after most other vendors had ceased production of new equipment and software for CP/M.

Later versions of CP/M-86 made significant strides in performance and usability and were made compatible with MS-DOS. For some time in the 1980s, the resulting system was considered to be a better x86 OS than MS-DOS. To reflect this compatibility the name was changed, and CP/M-86 became DOS Plus, which in turn became DR-DOS.
[edit] ZCPR

ZCPR (the Z80 Command Processor Replacement) was introduced on February 2, 1982 as a drop-in replacement for the standard Digital Research console command processor (CCP) and was initially written by a group of computer hobbyists who called themselves “The CCP Group”. They were Frank Wancho, Keith Petersen (the archivist behind Simtel at the time), Ron Fowler, Charlie Strom, Bob Mathias, and Richard Conn. Richard was, in fact, the driving force in this group (all of whom maintained contact through email).

ZCPR1 was released on a disk put out by SIG/M (Special Interest Group/Microcomputers), a part of the Amateur Computer Club of New Jersey.

ZCPR2 was released on February 14, 1983. It was released as a set of ten disks from SIG/M. ZCPR2 was upgraded to 2.3, and also was released in 8080 code, permitting the use of ZCPR2 on 8080 and 8085 systems.

ZCPR3 was released on Bastille Day, July 14, 1984, as a set of nine disks from SIG/M. The code for ZCPR3 could also be compiled (with reduced features) for the 8080 and would run on systems that did not have the requisite Z80 microprocessor.

In January 1987, Richard Conn decided to stop developing ZCPR, and Echelon asked Jay Sage (who already had a privately enhanced ZCPR 3.1) to continue work on ZCPR. Thus, ZCPR 3.3 was developed and released. ZCPR33 no longer supported the 8080 series of microprocessors, and added the most features of any upgrade in the ZCPR line.

Features of ZCPR as of version 3 included:

I/O redirection
flow control
named directories
search paths
custom menus
on line help

ZCPR3.3 also included a full complement of utilities with considerably extended capabilities. While enthusiastically supported by the CP/M user base of the time, ZCPR alone was insufficient to slow the demise of CP/M.


A number of behaviors exhibited by modern versions of Microsoft Windows are a result of backwards compatibility to MS-DOS which attempted some backwards compatibility with CP/M. The 8.3 filename standard in MS-DOS and Windows 3.x was originally adopted by CP/M. The wildcard matching algorithm used by the Windows Command Prompt is based on that of CP/M, as are the reserved filenames used to redirect output to a printer (“PRN”), the console (“CON”), or a serial device (“COM1”). Also, the character marking the end of some text files and behavior exhibited by the copy command can also be attributed to CP/M.