From Wikipedia, the free encyclopedia
  (Redirected from BDOS (CP/M))
Jump to: navigation, search
This article is about the Digital Research operating system. For the similarly named IBM and Microsoft operating system, see CP/DOS.
"BDOS" redirects here. For the DOS kernel, see BDOS (DOS). For the MSX-DOS kernel, see BDOS (MSX).
A screenshot of CP/M-86
Developer Digital Research, Inc./ Gary Kildall
Written in PL/M
Working state Historic
Source model Originally closed source, now open source[1]
Initial release 1973; 43 years ago (1973)
Latest release 3.1 / 1983; 33 years ago (1983)[2]
Platforms Intel 8080, Intel 8085, Zilog Z80, Zilog Z8000, Intel 8086, Motorola 68000
Kernel type Monolithic kernel
Default user interface Command line interface
License Originally proprietary, now BSD-like
Official website Digital Research official CP/M page

CP/M, short for Control Program for Microcomputers,[3] 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 loosely 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.[4] CP/M increased the market size for both hardware and software by greatly reducing the amount of programming required to install an application on a new manufacturer's computer.[5][6] 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.[7] CP/M was displaced by MS-DOS soon after the 1982 introduction of the IBM PC.

Hardware model[edit]

A minimal 8-bit CP/M system would contain the following components:

The only hardware system that CP/M, as sold by Digital Research, would support was the Intel 8080 Development System. Manufacturers of CP/M compatible systems customized portions of the operating system for their own combination of installed memory, disk drives, and console devices. CP/M would also run on systems based on the Zilog Z80 processor since the Z80 was compatible with 8080 code. While the Digital Research distributed core of CP/M (BDOS, CCP, core transient commands) did not use any of the Z80-specific instructions, many Z80 based systems used Z80 code in the system specific BIOS, and many applications were dedicated to Z80 based CP/M machines.

On most machines the bootstrap was a minimal bootloader in ROM combined with some means of minimal bank switching or a means of injecting code on the bus (since the 8080 needs to see boot code at Address 0 for start-up, while CP/M needs RAM there); for others, this bootstrap had to be entered into memory using front panel controls each time the system was started.

CP/M used the 7-bit ASCII set. The other 128 characters made possible by the 8-bit byte were not standardized. For example, one Kaypro used them for Greek characters, and Osborne machines used the 8th bit set to indicate an underlined character. WordStar used the 8th bit as an end-of-word marker. International CP/M systems most commonly used the ISO 646 norm for localized character sets, replacing certain ASCII characters with localized characters rather than adding them beyond the 7-bit boundary.

Components of the operating system[edit]

In the 8-bit versions, while running, the CP/M operating system loaded into memory had three components:

  • Basic Input/Output System or BIOS,
  • Basic Disk Operating System or BDOS,
  • Console Command Processor or CCP.

The BIOS and BDOS were memory resident, while the CCP was memory resident unless overwritten by an application, in which case it was automatically reloaded after the application finished running. A number of transient commands for standard utilities were also provided. The transient commands resided in files with the extension .COM on disk.

The BIOS directly controlled hardware components other than the CPU and main memory. It contained functions such as character input and output and the reading and writing of disk sectors. The BDOS implemented the CP/M file system and some input/output abstractions (such as redirection) on top of the BIOS. The CCP took user commands and either executed them directly (internal commands such as DIR to show a directory or ERA to delete a file) or loaded and started an executable file of the given name (transient commands such as PIP.COM to copy files or STAT.COM to show various file and system information). Third-party applications for CP/M were also essentially transient commands.

The BDOS, CCP and standard transient commands were (ideally) the same in all installations of a particular revision of CP/M, but the BIOS portion was always adapted to the particular hardware. Adding memory to a computer, for example, meant that the CP/M system had to be reinstalled with an updated BIOS capable of addressing the additional memory. A utililty was provided to patch the supplied BIOS, BDOS and CCP to allow them to be run from higher memory. Once installed, the operating system (BIOS, BDOS and CCP) was stored in reserved areas at the beginning of any disk which would be used to boot the system. On start-up, the bootloader (usually contained in a ROM firmware chip) would load the operating system from the disk in drive A:.

By modern standards CP/M was primitive, owing to the extreme constraints on program size. With version 1.0 there was no provision for detecting a changed disk. If a user changed disks without manually rereading the disk directory the system would write on the new disk using the old disk's directory information, ruining the data stored on the disk. Starting with 1.1 or 1.2 this danger was reduced: if one changed disks without reading the new disk's directory, and tried to write to it, the operating system would signal a fatal error, avoiding overwriting but requiring a reboot (which took no more than a few seconds, but implied losing whatever data you were trying to save).

The majority of the complexity in CP/M was isolated in the BDOS, and to a lesser extent, the CCP and transient commands. This meant that by porting the limited number of simple routines 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 (a hardware abstraction layer), 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.

Console Command Processor[edit]

The Console Command Processor, or CCP, accepted input from the keyboard and conveyed results to the terminal. CP/M itself would work with either a printing terminal or a video terminal. All CP/M commands had to be typed in on the command line. The console would most often display the A> prompt, to indicate the current default disk drive. When used with a video terminal, this would usually be followed by a blinking cursor supplied by the terminal. The CCP would await input from the user.

A CCP internal command, of the form drive letter followed by a colon, could be used to select the default drive. For example, typing B: and pressing enter at the command prompt would change the default drive to B, and the command prompt would then become B> to indicate this change.

CP/M's command line interface was patterned after the operating systems from Digital Equipment, such as RT-11 for the PDP-11 and OS/8 for the PDP-8.

Commands took the form of a keyword followed by a list of parameters separated by spaces or special characters. Similar to a Unix shell builtin, if an internal command was recognized, it was carried out by the CCP itself. Otherwise it would attempt to find an executable file on the currently logged disk drive and (in later versions) user area, load it, and pass it any additional parameters from the command line. These were referred to as "transient" programs. On completion, CP/M would reload the part of the CCP that had been overwritten by application programs — this allowed transient programs a larger memory space.

The commands themselves could sometimes be obscure. For instance, the command to duplicate files was named PIP (Peripheral-Interchange-Program), the name of the old DEC utility used for that purpose. The format of parameters given to a program was not standardized, so that there was no single option character that differentiated options from file names. Different programs could and did use different characters

Basic Disk Operating System[edit]

The Basic Disk Operating System,[8][9] or BDOS,[8][9] provided access to such operations as opening a file, output to the console, or printing. Application programs would load processor registers with a function code for the operation, and addresses for parameters or memory buffers, and call a fixed address in memory. Since the address was the same independent of the amount of memory in the system, application programs would run the same way for any type or configuration of hardware.

Basic Input Output System[edit]

CP/M advertisement in December 11, 1978 issue of InfoWorld magazine

The Basic Input Output System,[8][9] or BIOS,[8][9] provided the lowest level functions required by the operating system.

These included reading or writing single characters to the system console and reading or writing a sector of data from the disk. The BDOS handled some of the buffering of data from the diskette, but before CP/M 3.0 it assumed a disk sector size fixed at 128 bytes, as used on single-density 8-inch floppy disks. Since most 5.25-inch disk formats used larger sectors, the blocking and deblocking and the management of a disk buffer area was handled by model-specific code in the BIOS.

Customization was required because hardware choices were not constrained by compatibility with any one popular standard. For example, some manufacturers used separate computer terminal, while others designed a built-in integrated video display system. Serial ports for printers and modems could use different types of UART chips, and port addresses were not fixed. Some machines used memory-mapped I/O instead of the 8080 I/O address space. All of these variations in the hardware were concealed from other modules of the system by use of the BIOS, which used standard entry points for the services required to run CP/M such as character I/O or accessing a disk block. Since support for serial communication to a modem was very rudimentary in the BIOS or may have been absent altogether, it was common practice for CP/M programs that used modems to have a user-installed overlay containing all the code required to access a particular machine's serial port.

File system[edit]

File names were specified as a string of up to eight characters, followed by a period, followed by a file name extension of up to three characters ("8.3" filename format). The extension usually identified the type of the file. For example, .COM indicated a binary executable program file, and .TXT indicated a file containing ASCII text.

Each disk drive was identified by a drive letter, for example drive A and drive B. To refer to a file on a specific drive, the drive letter was prefixed to the file name, separated by a colon, e.g. A:FILE.TXT. With no drive letter prefixed, access was to files on the current default drive.[10]

The "8.3" filename format and the drive letter + colon combination survived into MS-DOS. The drive letter + colon convention has survived in Microsoft Windows and is still used today. In addition, file extensions (for example, .txt, .com (a compiled file), or .exe (an executable file)) are still used to identify file types on many operating systems.

File size was specified as the number of 128-byte records (directly corresponding to disk sectors on 8-inch drives) occupied by a file on the disk. There was no generally supported way of specifying byte-exact file sizes. The current size of a file was maintained in the file's file control block (FCB) by the operating system. Since many application programs (such as text editors) prefer to deal with files as sequences of characters rather than as sequences of records, by convention text files were terminated with a control-Z character (ASCII SUB, hexadecimal 1A). Determining the end of a text file therefore involved examining the last record of the file to locate the terminating control-Z. This also meant that inserting a control-Z character into the middle of a file usually had the effect of truncating the text contents of the file.

With the advent of larger removable and fixed disk drives, disk de-blocking formulas were employed which resulted in more disk blocks per logical file allocation block. While this allowed for larger file sizes, it also meant that the smallest file which could be allocated increased in size from 1KB (on single-density drives) to 2KB (on double-density drives) and so on, up to 32KB for a file containing only a single byte. This made for inefficient use of disk space if the disk contained a large number of small files.

File modification time stamps were not supported in releases up to CP/M 2.2, but were an optional feature in MP/M and CP/M 3.0.

CP/M 2.2 had no sub-directories in the file structure, but provided 16 numbered user areas to organize files on a disk. To change user one had to simply type "User X" at the command prompt, X being the number of the user wanted; security was non-existent and not believed to be necessary. The user area concept was to make the single-user version of CP/M somewhat compatible with multi-user MP/M systems. A common patch for the CP/M and derivative operating systems was to make one user area accessible to the user independent of the currently set user area. A USER command allowed the user area to be changed to any area from 0 to 15. User 0 was the default. If one changed to another user, such as USER 1, the material saved on the disk for this user would only be available to USER 1; USER 2 would not be able to see it or access it. However, files stored in the USER 0 area were accessible to all other users; their lication was specified with a prefatory path, since the files of USER 0 were only visible to someone logged in as USER 0. The user area feature arguably had little utility on small floppy disks, but it was useful for organizing files on machines with hard drives. The intent of the feature was to ease use of the same computer for different tasks. For example, a secretary could do data entry, then, after switching USER areas, another employee could use the machine to do billing without their files intermixing.

Transient Program Area[edit]

The read/write memory between address 0100 hexadecimal and the lowest address of the BDOS was the Transient Program Area (TPA) available for CP/M application programs. Although all Z80 and 8080 processors could address 64 kilobytes of memory, the amount available for application programs could vary, depending on the design of the particular computer. Some computers used large parts of the address space for such things as BIOS ROMs, or video display memory. As a result, some systems had more TPA memory available than others. Bank switching was a common technique that allowed systems to have a large TPA while switching out ROM or video memory space as needed. CP/M 3.0 allowed parts of the BDOS to be in bank-switched memory as well.

Debugging application[edit]

CP/M came with a Dynamic Debugging Tool, nicknamed DDT (an insecticide, i.e. a bug-killer), which allowed memory and program modules to be examined and manipulated, and allowed a program to be executed one step at a time.[11]

TSR (Terminate and Stay Resident) programs[edit]

CP/M was not a multitasking operating system. However, it did accommodate device drivers, specialized code that might be required by an attached peripheral. Using this capability, programmers developed and sold auxiliary desk accessory programs, such as SmartKey, a keyboard utility to assign any string of bytes to any key.[12] In other words, CP/M's device driver, which had to stay resident so it could drive the device (remember these are floppy-drive systems), was "exploited" so as to enable a program (like a Wordstar extender) to stay resident, a "feature" that was not officially part of CP/M.


CP/M had 256 possible addresses to send data to; no system used more than a handful of these. The systems were typically sold with one serial port and one parallel port; the parallel port had 8 connectors via which all 8 bits of a byte were sent simultaneously. These two ports were typically used for a modem and a printer respectively. Because of the processing speeds, glacial by later standards, the increase in speed by sending 8 simultaneous bits through the parallel port was significant. At some times a printer was a faster output device than a modem.


Installation of CP/M as sold by a vendor, that is, pre-configured for a specific computer model, was unnecessary: just stick the disk with the operating system in drive A:. However, a disk containing the operating system had to be kept in drive A:, to respond to calls for portions of it. Since the maximum size of memory in all early CP/M versions was 64K — many systems had less, since memory was expensive — the operating system did not fill the disk. There was room on it for an application such as Wordstar, and typically data files were stored on a disk in drive B:.

All disks had to be initialized before they could be used; in initialization the drive head wrote every track on the disk, creating them as it did so. Confusingly, disks were initialized using the command COPY.

While the ability to respond to an output instruction such as CON was hard-wired, sending output to a printer (PRN) was more complicated, since printers typically required a string of initiizing bytes (characters) at the beginning of each session. There was no such thing as a printer driver, much less a printer menu. The initializing codes for each model of printer had to be written into the application, in hex, though CP/M users, at least af first, were "techie" types for whom this requirement was not daunting. To use a program such as Wordstar with more than one printer, a separate version of Wordstar had to be prepared, and one had to load the Wordstar version that corresponded to the printer selected (and exiting and reloading to change printers). However, applications were single files, maximum size 64K minus the portion used by the operating system. Thus more than one version of an application could be kept on a single disk, renaming the files as needed.


CP/M advertisement in the November 29, 1982 issue of InfoWorld magazine.

The beginning and CP/M's heyday[edit]

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.[9] It was written in Kildall's own PL/M (Programming Language for Microcomputers).[8] 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.[13][14][15]

The name[edit]

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"[citation needed]. 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/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.[16]

Companies chose to support CP/M because of its large library of software. The Xerox 820 ran it because "where there are literally thousands of programs written for it, it would be unwise not to take advantage of it", Xerox said.[17] 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.

Bill Gates claimed that the Apple II family with a Z-80 SoftCard was the single most-popular CP/M hardware platform.[18] Many different 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 co-processor. Furthermore, it was available for the Amstrad CPC series, the Commodore 128, TRS-80, 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.

CP/M software often came with installers that adapted it to a wide variety of computers.[19] The lack of standardized graphics support limited video games, but various character and text-based games were ported, such as Telengard,[20] Gorillas (video game),[21] Hamurabi, Lunar Lander, along with early interactive fiction including the Zork series and Colossal Cave Adventure. A text adventure specialist, Infocom was one of the few publishers to consistently release their games in CP/M format. Lifeboat Associates started collecting and distributing user-written "free" software. One of the first was XMODEM, which allowed reliable file transfers via modem and phone line. The last significant program native to CP/M was the outline processor KAMAS.

Disk formats[edit]

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 many ways to customize these parameters for every system[22] but once they had been set, no standardized way existed for a system to load parameters from a disk formatted on another system.

Certain disk formats were more popular than others. The Xerox 820's became widely supported, for example; much software was available on it, and other computers such as the Kaypro II were compatible with the format.[23][24] No single manufacturer, however, 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 S-100 systems existed from the commercialization of the S-100 bus, CP/M did not provide any standardized graphics support until 1982 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.

CP/M Plus[edit]

The last 8-bit version of CP/M was version 3, often called CP/M Plus, released in 1983. 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.[2] CP/M 3 was available for the last generation of 8-bit computers, notably the Amstrad PCW and the Commodore 128.

The 16-bit world[edit]

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, 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.[25]

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, CP/M-86 or MS-DOS using an 8088 microprocessor, or CP/M-86/80 using both. The Z80 and 8088 CPUs ran concurrently.[26] 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.

CP/M-68k 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 also was used on the SORD M68 and M68MX computers.[27]

These 16-bit versions of CP/M required application programs to be re-compiled for the new CPUs—or, if they were written in assembly language, to be translated using tools like Digital Research's XLT86, a program written by Gary Kildall in 1981, which translated .ASM source code for the Intel 8080 processor into .A86 source code for the Intel 8086. Using global data flow analysis on 8080 register usage, 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. XLAT86 itself was written in PL/I-80 and was available for CP/M-80 platforms as well as for DEC VMS (for VAX 11/750 or 11/780).[28]

MS-DOS takes over[edit]

Many expected that CP/M would be the standard operating system for 16-bit computers.[29] In 1980 IBM approached Digital Research, at Bill Gates' suggestion,[30] to license a forthcoming version of CP/M for its new product, the IBM Personal Computer. Upon the failure to obtain a signed non-disclosure agreement, the talks failed, and IBM instead contracted with Microsoft to provide an operating system.[31] The resulting product, MS-DOS, soon began outselling CP/M.[citation needed]

Many of the basic concepts and 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 into the command-line shell, making MS-DOS somewhat faster and easier to use on floppy-based computers.

Although one of the first peripherals for the IBM PC was a SoftCard-like expansion card that let it run 8-bit CP/M software,[32] CP/M rapidly lost market share as the microcomputing market moved to the IBM-compatible 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[33] 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.[34]

Later versions of CP/M-86 made significant strides in performance and usability and were made compatible with MS-DOS. To reflect this compatibility the name was changed, and CP/M-86 became DOS Plus, which in turn became DR-DOS.


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 stopped developing ZCPR, and Echelon asked Jay Sage (who already had a privately enhanced ZCPR 3.1) to continue work on it. 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:

  • shells
  • aliases
  • I/O redirection
  • flow control
  • named directories
  • search paths
  • custom menus
  • passwords
  • 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 Microsoft Windows are a result of backwards compatibility to MS-DOS, which in turn attempted some backwards compatibility with CP/M. The drive letter and 8.3 filename conventions in MS-DOS (and early Windows versions) were originally adopted from CP/M.[35] The wildcard matching characters used by Windows (? and *) are based on those of CP/M,[36] as are the reserved filenames used to redirect output to a printer ("PRN:"), and the console ("CON:"). The drive names A and B were used to designate the 2 floppy disk drives that CP/M systems typically used; when hard drives appeared they were designated C, which survived into MS-DOS as the C\:. command prompt.[37] Also, the character marking the end of some text files can also be attributed to CP/M.[38]

Source code releases[edit]

In 2001 Caldera released CP/M's source code under an open source license, allowing redistribution and modification, via Tim Olmstead's "The Unofficial CP/M Web site".[39][40][41][42] In October 2014, to mark the 40th anniversary of the first presentation of CP/M, the Computer History Museum released early source code versions of CP/M.[43]

See also[edit]


  1. ^ CP/M collection is back online with an Open Source licence The Register, November 26, 2001
  2. ^ a b Mann, Stephen (15 August 1983). "CP/M Plus, a third, updated version of CP/M". Info World 5 (33): 49ff. ISSN 0199-6649. 
  3. ^ Newton, Harry (2000). Newton's Telecom Dictionary. New York, NY: CMP Books. p. 228. ISBN 1-57820-053-9. 
  4. ^ "OLDCOMPUTERS.COM Compupro 8/16". 
  5. ^ Cole, Maggie (May 25, 1981). "Gary Kildall and the Digital Research Success Story". InfoWorld (Palo Alto, CA: Popular Computing) 3 (10): 52–53. ISSN 0199-6649. 
  6. ^ Freiberger, Paul (July 5, 1982). "History of microcomputing, part 3: software genesis". InfoWorld (Palo Alto, CA: Popular Computing) 4 (26): 41. ISSN 0199-6649. 
  7. ^ "The Official Book for the Commodore 128". Since CP/M was one of the first operating systems, a large number of hobbyists, hackers, and esoteric programmers purchased CP/M computers and began to write programs for themselves... It was offered on the free market in the form of floppy disks distributed at computer "user groups". 
  8. ^ a b c d e Kildall, Gary A. (June 1975), CP/M 1.1 or 1.2 BIOS and BDOS for Lawrence Livermore Laboratories, An excerpt of the BDOS.PLM file header in the PL/M source code of CP/M 1.1 or CP/M 1.2 for Lawrence Livermore Laboratories (LLL):
    /* C P / M   B A S I C   I / O    S Y S T E M    (B I O S)
                        COPYRIGHT (C) GARY A. KILDALL
                                 JUNE, 1975                   */
    /*  B A S I C   D I S K    O P E R A T I N G   S Y S T E M  (B D O S)
                        COPYRIGHT (C) GARY A. KILDALL
                                JUNE, 1975                          */
      pre stripmarker in |quote= at position 146 (help)
  9. ^ a b c d e Kildall, Gary A. (January 1980). "The History of CP/M, THE EVOLUTION OF AN INDUSTRY: ONE PERSON'S VIEWPOINT" (Vol. 5, No. 1, Number 41 ed.). Dr. Dobb's Journal of Computer Calisthenics & Orthodontia. pp. 6–7. Retrieved 2013-06-03. [...] The first commercial licensing of CP/M took place in 1975 with contracts between Digital Systems and Omron of America for use in their intelligent terminal, and with Lawrence Livermore Laboratories where CP/M was used to monitor programs in the Octopus network. Little attention was paid to CP/M for about a year. In my spare time, I worked to improve overall facilities [...] By this time, CP/M had been adapted for four different controllers. [...] In 1976, Glenn Ewing approached me with a problem: Imsai, Incorporated, for whom Glenn consulted, had shipped a large number of disk subsystems with a promise that an operating system would follow. I was somewhat reluctant to adapt CP/M to yet another controller, and thus the notion of a separated Basic I/O System (BIOS) evolved. In principle, the hardware dependent portions of CP/M were concentrated in the BIOS, thus allowing Glenn, or anyone else, to adapt CP/M to the Imsai equipment. Imsai was subsequently licensed to distribute CP/M version 1.3 which eventually evolved into an operating system called IMDOS. [...] 
  10. ^ "CP/M Builtin Commands". discordia.org.uk. Retrieved 2009-01-28. 
  11. ^ "CP/M Dynamic Debugging Tool", http://www.gaby.de/cpm/manuals/archive/cpm22htm/ch4.htm; http://www.cpm.z80.de/randyfiles/DRI/DDT.pdf; http://www.shaels.net/index.php/cpm80-22-documents/using-cpm/7-ddt-utility, all retrieved 2014-08-29
  12. ^ "Whole Earth Software Catalog". 
  13. ^ Johnson, Herbert (2009-01-04). "CP/M and Digital Research Inc. (DRI) History". www.retrotechnology.com. Retrieved 2009-01-28. 
  14. ^ Warren, Jim (April 1976). "First word on a floppy-disk operating system". Dr. Dobbs Journal (Menlo Park, CA) 1 (4): 5.  Subtitle: Command language & facilities similar to DECSYSTEM-10.
  15. ^ Digital Research (1978). "<CP/M>". Pacific Grove, Calif.: Digital Research. OCLC 221485970. 
  16. ^ Swaine, Michael (1997-04-01). "Gary Kildall and Collegial Entrepreneurship". Dr. Dobb's Journal. Retrieved 2006-11-20. 
  17. ^ Wise, Deborah (1982-05-10). "Mainframe makers court third-party vendors for micro software". InfoWorld. pp. 21–22. Retrieved 25 January 2015. 
  18. ^ Bunnell, David (Feb–Mar 1982). "The Man Behind The Machine? / A PC Exclusive Interview With Software Guru Bill Gates". PC Magazine. p. 16. Retrieved February 17, 2012. 
  19. ^ Mace, Scott (9–16 January 1984). "IBM PC clone makers shun total compatibility". InfoWorld. pp. 79–81. Retrieved 4 February 2015. 
  20. ^ Loguidice, Bill (2012-07-28). "More on Avalon Hill Computer Games on Heath/Zenith platforms". Armchair Arcade. Retrieved 22 July 2015. 
  21. ^ Sblendorio, Francesco (2015-12-01). "Gorillas for CP/M". Francesco Sblendorio. Retrieved 22 July 2015. 
  22. ^ Johnson-Laird, Andy (1983). "3". The programmer's CP/M handbook. Berkeley, Ca: Osborne/McGraw-Hill. ISBN 0-88134-103-7. 
  23. ^ Derfler, Frank J. (1982-10-18). "Kaypro II—a low-priced, 26-pound portable micro". InfoWorld. p. 59. Retrieved 22 October 2013. 
  24. ^ Fager, Roger; Bohr, John (September 1983). "The Kaypro II". BYTE. p. 212. Retrieved 20 October 2013. 
  25. ^ Digital Research Source Code
  26. ^ Snyder, John J. Ph.D. (June 1983). "A DEC on Every Desk?". BYTE. pp. 104–106. Retrieved 5 February 2015. 
  27. ^ "M 68 / M 68 MX". 
  28. ^ Digital Research (1981): XLT86 - 8080 to 8086 Assembly Language Translator - User's Guide. Digital Research Inc, Pacific Grove
  29. ^ Pournelle, Jerry (March 1984). "New Machines, Networks, and Sundry Software". BYTE. p. 46. Retrieved 22 October 2013. 
  30. ^ Walter Isaacson, The Innovators: How a Group of Inventors, Hackers, Geniuses, and Geeks Created the Digital Revolution (2014, Simon & Schuster, ISBN 978-1476708690), page 358
  31. ^ Mary Bellis, Inventors of the Modern Computer Series, The History of the MS-DOS Operating Systems, Microsoft, Tim Paterson, and Gary Kildall (accessed Sept 9, 2010)
  32. ^ Magid, Lawrence J. (Feb–Mar 1982). "Baby Blue". PC. p. 49. Retrieved 4 January 2015. 
  33. ^ Scott Mace, CP/M Eludes Home Market, InfoWorld, June 1984 page 46
  34. ^ Nancy Groth, Kaypro is retreating on CP/M, Info World Feb. 1986, page 6
  35. ^ Chen, Raymond. "Why does MS-DOS use 8.3 filenames instead of, say, 11.2 or 16.16?". The Old New Thing. Retrieved December 17, 2010. 
  36. ^ Chen, Raymond. "How did wildcards work in MS-DOS?". The Old New Thing. Retrieved December 17, 2010. 
  37. ^ Chen, Raymond. "What's the deal with those reserved filenames like NUL and CON?". The Old New Thing. Retrieved December 17, 2010. 
  38. ^ Chen, Raymond. "Why do text files end in Ctrl+Z?". The Old New Thing. Archived from the original on February 6, 2011. Retrieved December 17, 2010. 
  39. ^ The Unofficial CP/M Web site
  40. ^ CP/M collection is back online with an Open Source licence The Register, 26 November 2001
  41. ^ [1]
  42. ^ License agreement for the CP/M material presented on this site
  43. ^ Laws, David (2014-10-01). "Early Digital Research CP/M Source Code". Computer History Museum. Retrieved 2015-07-25. 

Further reading[edit]

External links[edit]