CP/M, originally standing for CONTROL PROGRAM/MONITOR and later
CONTROL PROGRAM FOR MICROCOMPUTERS, is a mass-market operating
system created for
Intel 8080 /85 -based microcomputers by Gary
Kildall of Digital Research, Inc . Initially confined to
8-bit processors and no more than 64 kilobytes of
memory, later versions of
CP/M added multi-user variations and were
16-bit processors .
The combination of
S-100 bus computers was loosely patterned
on the MITS Altair , an early standard in the microcomputer industry.
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 install an application on 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
CP/M was displaced by
MS-DOS soon after the 1981
introduction of the
IBM PC .
* 1 Hardware model
* 2 Components of the operating system
* 2.1 Console Command Processor
* 2.2 Basic Disk Operating System
* 2.3 Basic Input Output System
* 2.5 Transient Program Area
* 2.6 Debugging application
* 2.7 Resident programs
* 2.8 Installation
* 3 History
* 3.1 The beginning and CP/M\'s heyday
* 3.1.1 The name
* 3.1.2 Portability
* 3.1.3 Applications
* 3.1.4 Disk formats
* 3.1.5 Graphics
* 3.2 Multi-user
* 3.4 The
MS-DOS takes over
* 3.6 ZCPR
* 4 Legacy
Source code releases
* 5 See also
* 6 References
* 7 Further reading
* 8 External links
CP/M system would contain the following components:
* A computer terminal using the
ASCII character set
Intel 8080 (and later the 8085) or
Zilog Z80 microprocessor
NEC V20 and V30 processors support an 8080 emulation mode that
CP/M on a PC DOS/
MS-DOS computer so equipped
* At least 16 kilobytes of RAM (beginning at address 0)
* A means to bootstrap the first sector of the diskette
* At least one floppy disk drive
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
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
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
8-bit byte were not standardized. For example, one
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
8-bit versions, while running, the
CP/M operating system
loaded into memory had three components:
* Basic Input/Output System or
* Basic Disk Operating System or BDOS,
* Console Command Processor or CCP.
BIOS and B
DOS 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.
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
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
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 utility was provided to patch the supplied BIOS, B
CCP to allow them to be run from higher memory. Once installed, the
operating system (BIOS, B
DOS 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 entailed 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
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
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
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
Commands took the form of a keyword followed by a list of parameters
separated by spaces or special characters. Similar to a
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
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
The Basic Disk Operating System, or BDOS, 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
BASIC INPUT OUTPUT SYSTEM
CP/M advertisement in the December 11, 1978 issue of InfoWorld
The Basic Input Output System, or BIOS, 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
DOS handled some of the buffering of data from the diskette, but
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
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
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
CP/M such as character I/O or accessing a disk block. Since
support for serial communication to a modem was very rudimentary in
BIOS or may have been absent altogether, it was common practice
CP/M programs that used modems to have a user-installed overlay
containing all the code required to access a particular machine's
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 an executable
program file, and .TXT indicated a file containing
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.
The "8.3" filename format and the drive letter + colon combination
survived into MS-DOS. The drive letter + colon convention has survived
Microsoft Windows and is still used today. In addition, file
extensions (for example,
.txt , .com (a compiled file), or
executable file)) are still used to identify file types on many
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
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
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 location 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
The read/write memory between address 0100 hexadecimal and the lowest
address of the B
DOS 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 B
DOS to be in bank-switched memory as well.
CP/M came with a Dynamic Debugging Tool, nicknamed DDT (after the
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.
CP/M originally did not support the equivalent of terminate and stay
resident program as under DOS. Programmers could write software that
could intercept certain operating system calls and extend or alter
their functionality. 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.
CP/M 3, however,
added support for dynamically loadable Resident System Extensions
(RSX), and similar solutions (like RSM ) were also retrofitted to
CP/M 2.2 systems by third-parties.
CP/M provided some hardware abstraction to standardize the
interface to disk I/O or console I/O, typically application programs
still required installation to make use of all the features of such
equipment as printers and terminals. Often these were controlled by
escape sequences which had to be altered for different devices. For
example, the escape sequence to select bold face on a printer would
have differed among manufacturers, and sometimes among models within a
manufacturer's range. This procedure was not defined by the operating
system; a user would typically run an installation program that would
either allow selection from a range of devices, or else allow
feature-by-feature editing of the escape sequences required to access
a function. This had to be repeated for each application program,
since there was no central operating system service provided for these
The initializing codes for each model of printer had to be written
into the application. To use a program such as Wordstar with more than
one printer (say, a fast dot matrix printer or a slower but
presentation-quality daisy wheel 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).
CP/M advertisement in the November 29, 1982 issue of InfoWorld
This section NEEDS ADDITIONAL CITATIONS FOR VERIFICATION . Please
help improve this article by adding citations to reliable sources .
Unsourced material may be challenged and removed. (January 2009)
(Learn how and when to remove this template message )
THE BEGINNING AND CP/M\'S HEYDAY
Gary Kildall originally developed
CP/M during 1974, as an operating
system to run on an
Intel Intellec-8 development system, equipped with
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
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
Programming Language for Prime), both suggesting
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 intended to establish the
Digital Research brand and its
product lines as synonymous with "microcomputer" in the consumer's
mind, similar to what
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,
Companies chose to support
CP/M because of its large library of
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. By 1984 Columbia University
used the same source code to build Kermit binaries for more than a
CP/M systems, plus a generic version. The operating
system was described as a "software bus", allowing multiple programs
to interact with different hardware in a standardized way. Programs
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
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. 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 ,
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
Amstrad CPC series, the
Commodore 128 ,
TRS-80 , and later models
ZX Spectrum .
CP/M 3 was also used on the
NIAT , a custom
handheld computer designed for A.C.Nielsen's internal use with 1Mbytes
of SSD memory.
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. Two early outliners , KAMAS (Knowledge
and Mind Amplification System) and its cut-down successor Out-Think
(without programming facilities and retooled for 8080/V20
compatibility) were also written for CP/M, though later rewritten for
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.
Visicalc , the first-ever spreadsheet
program, was never made available for CP/M. Another company,
rose to the challenge and created its
Supercalc spreadsheet for CP/M,
which would go on to become the market leader and de facto standard on
Supercalc would go on to be a competitor in the spreadsheet
market in the
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
Borland 's Turbo
FORTRAN ) were available, among them several of the
CP/M software often came with installers that adapted it to a wide
variety of computers. Most forms of copy protection were ineffective
on the operating system, and the source code for
BASIC programs was
easily accessible. The lack of standardized graphics support limited
video games , but various character and text-based games were ported ,
Gorillas (video game) ,
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
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 .
No standard 5 1/4-inch
CP/M disk format existed. While the 8-inch
single-density floppy disk format (so-called "distribution format")
was standardized, various 5 1/4-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 but once they had been set, no
standardized way existed for a system to load parameters from a disk
formatted on another system.
JRT Pascal , for example, provided versions on 5 1⁄4-inch disk
for North Star , Osborne, Apple, Heath hard sector and soft sector ,
Superbrain , and a single 8-inch version. 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. No
single manufacturer, however, prevailed in the 5 1⁄4-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
CP/M machines had.
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
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 (Graphics System
Extension). Owing to the small memory available, graphics was never a
common feature associated with
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 .
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.
8-bit version of
CP/M was version 3, often called
released in 1983. It incorporated the bank switching memory management
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 computers, notably the
Amstrad PCW , the
ZX Spectrum +3 , the
Commodore 128 , and the Radio
TRS-80 Model 4 .
THE 16-BIT WORLD
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
, which was soon followed by CP/M-68K for the
Motorola 68000 . The
original version of CP/M-68K in 1982 was written in
but it was ported to C later on. At this point the original
became known by the retronym
CP/M-80 to avoid confusion. In ca.
1982/1983 there was also a port to the
Zilog Z8000 for the Olivetti
M20 and written in C , named CP/M-8000.
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
IBM turned to
Microsoft instead, and Microsoft
PC DOS based on a
86-DOS . Although CP/M-86
became an option for the
IBM PC after DRI threatened legal action, it
never overtook Microsoft's system.
Digital Equipment Corporation put out the
Rainbow 100 to compete
with IBM, it came with
CP/M-80 using a
CP/M-86 or MS-DOS
using an 8088 microprocessor, or CP/M-86/80 using both. The
8088 CPUs ran concurrently. A benefit of the Rainbow was that it
could continue to run
CP/M software, preserving a user's
possibly sizable investment as they moved into the
16-bit world of
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.
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
could be ported to the
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).
MS-DOS TAKES OVER
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 non-disclosure agreement , the talks failed, and
Microsoft to provide an operating system. The
resulting product, MS-DOS, soon began outselling CP/M.
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
CP/M could 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
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 described the unsuccessful efforts at
CP/M based home computers in 1983 and in 1986 stated that
Kaypro 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
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
DOS Plus ,
which in turn became
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
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 (
Group/Microcomputers), a part of the Amateur Computer Club of New
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
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:
* 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
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
backward compatibility to MS-DOS, which in turn attempted some
backward compatibility with CP/M. The drive letter and 8.3 filename
MS-DOS (and early Windows versions) were originally
adopted from CP/M. The wildcard matching characters used by Windows
(? and *) are based on those of CP/M, 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. Also, the control character marking the end of some
text files can also be attributed to CP/M.
SOURCE CODE RELEASES
In 2001 Caldera released CP/M's source code under an open source
license , allowing redistribution and modification, via Tim Olmstead's
CP/M Web site". 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.
List of machines running CP/M
Amstrad CP/M Plus character set
CP/M collection is back online with an Open Source licence The
Register, November 26, 2001
* ^ A B Mann, Stephen (1983-08-15). "
CP/M Plus, a third, updated
version of CP/M".
InfoWorld . 5 (33): 49ff. ISSN 0199-6649 .
* ^ A B Shustek, Len (2016-08-02). "In His Own Words: Gary
Kildall". Remarkable People.
Computer History Museum
Computer History Museum .
* ^ A B Kildall, Gary Arlen (2016-08-02) . Kildall, Scott ;
Kildall, Kristin, eds. "Computer Connections: People, Places, and
Events in the Evolution of the Personal Computer Industry"
(Manuscript, part 1). Kildall Family. Archived from the original on
2016-11-17. Retrieved 2016-11-17.
* ^ Newton, Harry (2000). Newton's Telecom Dictionary. New York,
NY: CMP Books. p. 228. ISBN 1-57820-053-9 .
* ^ "OLDCOMPUTERS.COM Compupro 8/16".
* ^ Cole, Maggie (1981-05-25). "
Gary Kildall and the Digital
Research Success Story".
InfoWorld . Palo Alto, CA: Popular Computing
. 3 (10): 52–53. ISSN 0199-6649 .
* ^ Freiberger, Paul (1982-07-05). "History of microcomputing, part
3: software genesis".
InfoWorld . Palo Alto, CA:
Popular Computing . 4
(26): 41. ISSN 0199-6649 .
* ^ "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".
* ^ "
CP/M emulators for DOS". www.retroarchive.org/cpm. Luis Basto.
* ^ A B C D E Kildall, Gary A. (June 1975),
CP/M 1.1 or 1.2
DOS 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 */ * ^ A B
C D E Kildall, Gary A. (January 1980). "The History of CP/M, THE
EVOLUTION OF AN INDUSTRY: ONE PERSON\'S VIEWPOINT". 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
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
1.3 which eventually evolved into an operating system called
* ^ "
CP/M Builtin Commands". discordia.org.uk. Retrieved
* ^ "
CP/M Dynamic Debugging Tool",
all retrieved 2014-08-29
* ^ "Whole Earth Software Catalog".
CP/M Plus (
CP/M Version 3) Operating System Programmers Guide
(PDF) (2 ed.).
Digital Research . April 1983 . Archived (PDF) from the
original on 2016-11-25. Retrieved 2016-11-25.
* ^ Lieber, Eckhard; von Massenbach, Thomas (1987). "
CP/M 2 lernt
dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M". c\'t
(part 1) (in German).
Heise Verlag (1): 124–135.
* ^ Lieber, Eckhard; von Massenbach, Thomas (1987). "
CP/M 2 lernt
dazu. Modulare Systemerweiterungen auch für das 'alte' CP/M". c\'t
(part 2) (in German).
Heise Verlag (2): 78–85.
* ^ Huck, Alex (2016-10-09). "RSM für
CP/M 2.2" (in German).
Archived from the original on 2016-11-25. Retrieved 2016-11-25.
* ^ Johnson, Herbert (2009-01-04). "
Digital Research Inc.
(DRI) History". www.retrotechnology.com. Retrieved 2009-01-28.
* ^ Warren, Jim (April 1976). "First word on a floppy-disk
Dr. Dobbs Journal . Menlo Park, CA. 1 (4): 5.
Subtitle: Command language & facilities similar to DECSYSTEM-10.
Digital Research (1978). "CP/M". Pacific Grove, Calif.: Digital
OCLC 221485970 .
* ^ Wise, Deborah (1982-05-10). "Mainframe makers court third-party
vendors for micro software". InfoWorld. pp. 21–22. Retrieved
* ^ da Cruz, Frank (1984-04-27). "New release of KERMIT for
CP/M-80" . Info-Kermit Digest (Mailing list). Kermit Project, Columbia
University. Retrieved 2016-02-23.
* ^ Swaine, Michael (1997-04-01). "
Gary Kildall and Collegial
Entrepreneurship". Dr. Dobb\'s Journal . Retrieved 2006-11-20.
* ^ Bunnell, David (February 1982). "The Man Behind The Machine? /
A PC Exclusive Interview With Software Guru Bill Gates".
PC Magazine .
p. 16. Retrieved 2012-02-17.
* ^ Mace, Scott (9–16 January 1984). "
IBM PC clone makers shun
InfoWorld . pp. 79–81. Retrieved 2015-02-04.
* ^ Pournelle, Jerry (June 1983). "Zenith Z-100, Epson QX-10,
Software Licensing, and the Software Piracy Problem". 8 (6).
BYTE . p.
411. Retrieved 2013-10-20.
* ^ Loguidice, Bill (2012-07-28). "More on Avalon Hill Computer
Games on Heath/Zenith platforms". Armchair Arcade. Retrieved
* ^ Sblendorio, Francesco (2015-12-01). "Gorillas for CP/M".
* ^ Pournelle, Jerry (April 1982). "The Osborne 1, Zeke\'s New
Friends, and Spelling Revisited". BYTE. p. 212. Retrieved October 19,
* ^ Johnson-Laird, Andy (1983). "3". The programmer's CP/M
handbook. Berkeley, CA: Osborne/
McGraw-Hill . ISBN 0-88134-103-7 .
* ^ "Now: A Complete
CP/M Pascal for Only $29.95!" (advertisement).
BYTE . December 1982. p. 11. Retrieved 2016-10-01.
* ^ Derfler, Frank J. (1982-10-18). "
Kaypro II—a low-priced,
26-pound portable micro".
InfoWorld . p. 59. Retrieved 2013-10-22.
* ^ Fager, Roger; Bohr, John (September 1983). "The
BYTE . p. 212. Retrieved 2013-10-20.
* ^ "
Radio Shack Computer Catalog RSC-12 page 28".
www.radioshackcomputercatalogs.com. Tandy/Radio Shack. Retrieved
* ^ Olmstead, Tim; Chaudry, Gaby. "
Digital Research Source Code".
* ^ Snyder, John J. (June 1983). "A DEC on Every Desk?".
BYTE . pp.
104–106. Retrieved 2015-02-05.
* ^ "M 68 / M 68 MX".
Digital Research (1981):
XLT86 - 8080 to 8086 Assembly Language
Translator - User\'s Guide.
Digital Research Inc, Pacific Grove
* ^ Pournelle, Jerry (March 1984). "New Machines, Networks, and
BYTE . p. 46. Retrieved 2013-10-22.
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
* ^ 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)
* ^ Magid, Lawrence J. (February 1982). "Baby Blue". PC. p. 49.
* ^ Scott Mace,
CP/M Eludes Home Market, InfoWorld, June 1984 page
* ^ Nancy Groth,
Kaypro is retreating on CP/M,
1986, page 6
* ^ Chen, Raymond . "Why does
MS-DOS use 8.3 filenames instead of,
say, 11.2 or 16.16?". The Old New Thing. Retrieved 2010-12-17.
* ^ Chen, Raymond . "How did wildcards work in MS-DOS?". The Old
New Thing. Retrieved 2010-12-17.
* ^ Chen, Raymond . "What\'s the deal with those reserved filenames
like NUL and CON?". The Old New Thing. Retrieved 2010-12-17.
* ^ Chen, Raymond . "Why do text files end in Ctrl+Z?". The Old New
Thing. Archived from the original on 2011-02-06. Retrieved 2010-12-17.
* ^ "The Unofficial
CP/M Web Site".
* ^ "
CP/M Collection is Back Online with an Open Source Licence".
The Register . 2001-11-26.
* ^ "License Agreement".
* ^ "License Agreement".
* ^ Laws, David (2014-10-01). "Early
Computer History Museum
Computer History Museum . Retrieved 2015-07-25.
* Zaks, Rodnay (1980). The
CP/M Handbook With MP/M. SYBEX Inc. ISBN
* ZCPR3, The Manual by Richard Conn: ISBN 0-918432-59-6
* comp.os.cpm FAQ (also present at this
Digital Research related
* Z-System Corner: Tenth Anniversary of ZCPR - part of The Computer
Journal, issue 54