CP/M, originally standing for Control Program/Monitor and later Control Program for Microcomputers, is a mass-market operating system created in 1974 for Intel 8080-based microcomputers by Gary Kildall of Digital Research, Inc. CP/M is a disk operating system and its purpose is to organize files on a magnetic storage medium, and to load and run programs stored on a disk. 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.
CP/M's core components are the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS consists of drivers that deal with devices and system hardware. The BDOS implements the file system and provides system services to applications. The CCP is the command-line interpreter and provides some built-in commands.
CP/M eventually became the de facto standard and the dominant operating system for microcomputers, in combination with the S-100 bus computers. This computer platform was widely used in business through the late 1970s and into the mid-1980s. CP/M increased the market size for both hardware and software by greatly reducing the amount of programming required to port an application to a new manufacturer's computer. An important driver of software innovation was the advent of (comparatively) low-cost microcomputers running CP/M, as independent programmers and hackers bought them and shared their creations in user groups. CP/M was eventually displaced in popularity by DOS following the 1981 introduction of the IBM PC.
History
Early history Gary Kildall originally developed CP/M during 1974, 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.
CP/M supported a wide range of computers based on the 8080 and Z80 CPUs. An early outside licensee of CP/M was Gnat Computers, an early microcomputer developer out of San Diego, California. In 1977, the company was granted the license to use CP/M 1.0 for any micro they desired for $90. Within the year, demand for CP/M was so high that Digital Research increased the license to tens of thousands of dollars.
Under Kildall's direction, the development of CP/M 2.0 was mostly carried out by John Pierce in 1978. Kathryn Strutynski, a friend of Kildall from Naval Postgraduate School (NPS), became the fourth employee of Digital Research Inc. in early 1979. She started by debugging CP/M 2.0, and later became influential as key developer for CP/M 2.2 and CP/M Plus. Other early developers of the CP/M base included Robert "Bob" Silberstein and David "Dave" K. Brown.
CP/M originally stood for "Control Program/Monitor", a name which implies a resident monitor—a primitive precursor to an operating system. However, during the transition 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 NPS. This renaming of CP/M was part of a larger effort by Kildall and his wife with business partner, Dorothy McEwen to convert Kildall's personal project of CP/M and the Intel-contracted PL/M compiler into a commercial enterprise. The Kildalls 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 their product offerings. Intergalactic Digital Research, Inc. was later renamed via a corporation change-of-name filing to Digital Research, Inc.
Initial success
By September 1981, Digital Research had sold more than CP/M licenses; InfoWorld stated that the actual market was likely larger because of sublicenses. Many companies produced CP/M-based computers for many different markets; the magazine stated that "CP/M is well on its way to establishing itself as the small-computer operating system". Even companies with proprietary operating systems, such as Heath/Zenith (HDOS), offered CP/M as an alternative for their 8080/Z80-based systems; by contrast, no comparable standard existed for computers based on the also-popular 6502 CPU. They supported CP/M because of its large library of software. The Xerox 820 ran the operating system because "where there are literally thousands of programs written for it, it would be unwise not to take advantage of it", Xerox said. (Xerox included a Howard W. Sams CP/M manual as compensation for Digital Research's documentation, which InfoWorld described as atrocious, incomplete, incomprehensible, and poorly indexed. Aware of its reputation, Digital Research's Gordon Eubanks promised in 1982 that his company's documentation would improve.) By 1984, Columbia University used the same source code to build Kermit binaries for more than a dozen different CP/M systems, plus two generic versions. The operating system 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 among different machines, usually requiring only the specification of the escape sequences 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 ran on only 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. Another was graphics routines, especially in games and graphics programs, which were generally machine-specific as they used direct hardware access for speed, bypassing the OS and BIOS (this was also a common problem in early DOS machines).
Bill Gates claimed that the Apple II with a Z-80 SoftCard was the single most-popular CP/M hardware platform. Digital Research stated in 1982 that the operating system had been licensed for more than 450 types of computer systems. Many brands of machines ran the operating system, some notable examples being the Altair 8800, the IMSAI 8080, the Osborne 1 and Kaypro luggables, and MSX computers. The best-selling CP/M-capable system of all time was probably the Amstrad PCW. 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 coprocessor. Furthermore, it was available for the Amstrad CPC series, the Commodore 128, TRS-80, and later models of the ZX Spectrum. CP/M 3 was also used on the NIAT, a custom handheld computer designed for A. C. Nielsen's internal use with 1 MB of SSD memory.
Multi-user
In 1979, a multi-user-compatible derivative of CP/M was released. MP/M allowed multiple users to connect to a single computer, using multiple terminals to provide each user with a screen and keyboard. Later versions ran on 16-bit processors.
CP/M Plus
The last 8-bit version of CP/M was version 3, often called CP/M Plus, released in 1983. Its BDOS was designed by David K. Brown. It incorporated the bank switching memory management of MP/M in a single-user single-task operating system compatible with CP/M 2.2 applications. CP/M 3 could therefore use more than 64 KB of memory on an 8080 or Z80 processor. The system could be configured to support date stamping of files. The operating system distribution software also included a relocating assembler and linker. CP/M 3 was available for the last generation of 8-bit home computers, notably the Amstrad PCW, the Amstrad CPC, the ZX Spectrum +3, the Commodore 128, MSX machines, and the Radio Shack TRS-80 Model 4.
16-bit versions
There were versions of CP/M for some 16-bit CPUs as well.
The first version in the 16-bit family was CP/M-86 for the Intel 8086 in November 1981. Kathryn Strutynski was the project manager for the evolving CP/M-86 line of operating systems. At this point, the original 8-bit CP/M became known by the retronym CP/M-80 to avoid confusion.
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 86-DOS. Although CP/M-86 became an option for the IBM PC after DRI threatened legal action, it never overtook Microsoft's system. Most customers were repelled by the significantly greater price IBM charged for CP/M-86 over PC DOS ( and , respectively).
When Digital Equipment Corporation (DEC) put out the Rainbow 100 to compete with IBM, it came with CP/M-80 using a Z80 chip, CP/M-86 or MS-DOS using an 8088 microprocessor, or CP/M-86/80 using both. 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. A similar dual-processor adaption for the was named CP/M 8-16. The CP/M-86 adaptation for the 8085/8088-based Zenith Z-100 also supported running programs for both of its CPUs.
Soon following CP/M-86, another 16-bit version of CP/M was CP/M-68K for the Motorola 68000. The original version of CP/M-68K in 1982 was written in Pascal/MT+68k, but it was ported to C later on. CP/M-68K, already running on the Motorola EXORmacs systems, was initially to be used in the Atari ST computer, but Atari decided to go with a newer disk operating system called GEMDOS. CP/M-68K was also used on the SORD M68 and M68MX computers.
In 1982, there was also a port from CP/M-68K to the 16-bit Zilog Z8000 for the Olivetti M20, written in C, named CP/M-8000.
These 16-bit versions of CP/M required application programs to be re-compiled for the new CPUs. Some programs written in assembly language could be automatically translated for a new processor. One tool for this was Digital Research's XLT86, which translated .ASM source code for the Intel 8080 processor into .A86 source code for the Intel 8086. The translator would also optimize the output for code size and take care of calling conventions, so that CP/M-80 and MP/M-80 programs could be ported to the CP/M-86 and MP/M-86 platforms automatically. XLT86 itself was written in PL/I-80 and was available for CP/M-80 platforms as well as for VAX/VMS.
Displacement by MS-DOS By the early 1980s an estimated 2000 CP/M applications existed, far more than for proprietary operating systems like HDOS. Many expected that CP/M would be the standard operating system for 16-bit computers. In 1980 IBM approached Digital Research, at Bill Gates' suggestion, to license a forthcoming version of CP/M for its new product, the IBM Personal Computer. Upon the failure to obtain a signed unilateral non-disclosure agreement, the talks failed, and IBM instead contracted with Microsoft to provide an operating system.