CP/M (Command Processor for Microcomputers) was an operating system for Intel 8080/85 and Zilog Z80 based microcomputers. It was created by Digital Research, Inc. founded by Gary Kildall. The combination of CP/M and S-100 bus computers patterned on the MITS Altair was the first "industry standard", and was widely used through the late 1970s and into the mid-80s.
Description: CCP, BDOS, BIOS
CP/M's command line interface, implemented in the CCP command control processor, was patterned after the operating systems from Digital Equipment, such as RSTS/E for the PDP-11. Commands generally took the form of a keyword followed by a list of parameters separated by spaces or special characters. The commands themselves would sometimes be somewhat obscure; for instance, the command to duplicate files was named
One key innovation in CP/M was the use of an abstraction layer that separated the operating system into two main parts. The CCP translated user commands into a series of high-level instructions. These instructions were then fed into the BDOS (Basic Disk Operating System), which provided functionality like "open file". Application programs would likewise talk to the BDOS. The BDOS then translated these commands into a new series of lower-level instructions. These were then fed into the BIOS (Basic I/O System), which contained the hardware-specific code that carried out the instructions from BDOS.
To illustrate the flow of commands, consider the
PIP command mentioned earlier. When a
PIP command was entered into the CCP it was broken down into a series of instructions for the BDOS, which would be similar to "locate the file named
foo.txt, open it, create a new file named
bar.txt...". The BDOS commands in turn were sent to the BIOS as a string of even simpler instructions, like "move the disk head to this sector, read raw data from sector..." etc. The BIOS would then do the actual controlling of the hardware, such as sending pulses to the stepper motor of the drive.
The vast majority of the complexity in CP/M was isolated in the BDOS, and to a lesser extent, the CCP. This meant that by porting the limited number of simple commands in the BIOS to a particular hardware platform, the entire OS would work. This significantly reduced the development time needed to support new machines, and was one of the main reasons for CP/M's widespread use. Today this sort of abstraction is common to most OSs, but at the time of CP/M's birth, OSs were typically intended to run on only one machine platform, and multilayer designs were considered unnecessary.
The beginning and CP/M's heyday
CP/M was originally distributed on 8 inch floppy disks, and ran on the Intel 8080 CPU (as well as the compatible and very popular Zilog Z80). Eventually, the industry moved to the 5¼ inch disk format, and CP/M followed -- unfortunately every company cooked up their own 5¼ inch disk formats, which made the exchange of disks between different CP/M-systems difficult in practice. Programs written for CP/M were typically completely portable amongst different machines with the same CPU; this made it popular, and much more software was written for CP/M than for operating systems that only ran on one brand of hardware.
Hundreds of different brands of machines ran CP/M, some notable examples being the above-mentioned Altair, the IMSAI 8080, the Osborne 1 and Kaypro portables, and even the Apple II when an extra Z80-card was installed. The best-selling CP/M system of all time was probably the Commodore 128, although few people actually used its CP/M capabilities.
WordStar, one of the first widely used word processors, and dBASE, the first widely-popular database program for small computers, were originally written for CP/M.
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 as CP/M-80 to avoid confusion.
CP/M-68k was widely used only in one application: it formed the basis of the Atari ST computer. CP/M-86 had the potential of becoming the standard operating system of the new IBM PCs, but minor legal issues made IBM turn to Microsoft instead. They purchased a CP/M clone known as QDOS, and used it to create PC-DOS/MS-DOS which went on to become the "official" PC operating system. CP/M-86 never became popular.
MS-DOS takes over
Many of the basic concepts and internal mechanisms of early versions of MS-DOS were copied from those of CP/M. Internals like file-handling data structures were identical, and both referred to disk drives with a letter (
A:, B:, etc.). The main innovation was MS-DOS's FAT file system. This similarity was done on purpose, to make it easy to port popular CP/M software like WordStar and dBase. However, later CP/M innovations—such as support for separate user areas on the same disk—were never ported to MS-DOS.
The user interface of MS-DOS, however, was a bit more friendly. Compare for example CP/M's copy command,
PIP <destination filename>=<source filename>
to the more intuitive syntax of DOS's
COPY (roughly patterned after that of UNIX's
COPY <source filename> <destination filename>
CP/M would slowly lose market share as the microcomputing world moved to the PC platform, and it never regained the popularity it once had. Later versions of CP/M-86 made significant strides in terms of performance and usability however, and for some time in the 1980s was considered to be a better x86 OS than MS-DOS. To reflect this compatibility the name was changed, and CP/M-86 became DR-DOS.
- History / Development And Demise of CP/M (http://www.google.de/search?q=cache:8UEsgRADcIoJ:science.kennesaw.edu/~khoganso/CS8422/4-23-03-Wednesday.ppt+%22Author+of+MS-DOS%22&hl=de&ie=UTF-8) – A presentation by Richard Iwezulu (with link to original PPT slides)
- The origin of CP/M's name (http://www.khet.net/gmc/docs/museum/en_cpmName.html)
- Category at ODP (http://dmoz.org/Computers/Software/Operating_Systems/CPM/)