COS-PSA
| Industry | Software |
|---|---|
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M operating system, MP/M, CP/M-86, CP/M-68K, CP/M-8000 |
CP/M, an acronym initially meaning Control Program/Monitor and later revised to Control Program for Microcomputers, is a widely adopted operating system introduced in 1974. It was designed for Intel 8080 and 85-based microcomputer platforms by Gary Kildall at Digital Research, Inc. As a disk operating system, CP/M's primary function was to manage files stored on magnetic disks and facilitate program loading from these storage devices. Originally, it operated as a single-tasking system on 8-bit processors with memory capacities up to 64 kilobytes; subsequent releases incorporated multi-user capabilities and support for 16-bit processors.
The architecture of CP/M is composed of three main modules: the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for controlling hardware drivers, BDOS manages the file system along with core system services, and CCP serves as the command-line interface, interpreting user commands with an array of built-in functions.
Throughout its prominence, CP/M established itself as the de facto industry standard operating system for microcomputers, particularly those utilizing S-100 bus architectures. It gained widespread adoption in business environments from the late 1970s through the mid-1980s. By enabling software applications to be easily ported across different hardware manufacturers, CP/M significantly broadened both hardware and software markets. The availability of affordable CP/M-based microcomputers stimulated innovation within the software community, fostering program sharing among independent developers through user groups. However, CP/M's dominance waned following the introduction of DOS alongside the 1981 release of the IBM PC.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates equipped with a specialized controller. The OS was developed using Kildall's proprietary programming language, PL/M. Its design drew heavily from the concepts found in the TOPS-10 operating system running on the DECsystem-10 mainframe, which Kildall had previously worked with.
CP/M was compatible with a variety of computers powered by the 8080 and Z80 processors. In 1977, early licensee Gnat Computers obtained rights to CP/M version 1.0 at a cost of $90 per machine. The rapid increase in demand enabled Digital Research to escalate licensing fees substantially into the tens of thousands.
Development of CP/M 2.0 in 1978 was overseen by John Pierce under Kildall’s leadership. When Kathryn Strutynski joined Digital Research Inc. in early 1979, she initially focused on debugging CP/M 2.0 before making major contributions to CP/M 2.2 and CP/M Plus. Other important contributors during this period included Robert Silberstein and David K. Brown.
Originally abbreviated as "Control Program/Monitor," CP/M was renamed "Control Program for Microcomputers" during its commercial rollout in 1977. This change aligned with naming trends seen in contemporaneous technologies such as Kildall’s PL/M language and IBM’s CP/CMS operating system. The rebranding effort was driven by Kildall, his wife, and business associate Dorothy McEwen to promote CP/M and PL/M under the Digital Research identity—intending to establish these as synonymous with "microcomputer." This approach anticipated similar branding strategies later employed by IBM and Microsoft in personal computing markets. Eventually, Intergalactic Digital Research, Inc. was shortened to Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with the actual user base likely larger due to sublicensing arrangements. A wide array of manufacturers developed CP/M-based computers serving various sectors; InfoWorld highlighted CP/M's emergence as the definitive operating system for small computers. Even companies that maintained their own proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an alternative on their 8080/Z80 models—unlike the 6502 CPU segment, which lacked a comparable universal OS. The appeal of CP/M was largely driven by its vast software ecosystem. For example, the Xerox 820 adopted CP/M to access thousands of existing applications. Xerox supplemented Digital Research’s inadequate documentation by including a Howard W. Sams CP/M manual, which InfoWorld criticized for being incomplete and poorly organized.
By 1984, Columbia University utilized the CP/M source code to compile Kermit binaries compatible with over a dozen distinct CP/M systems, along with generic versions. CP/M was characterized as a "software bus", facilitating standardized communication between diverse software and hardware components. Its design allowed programs to operate across multiple systems with minimal modifications, primarily involving escape sequences for screen and printer control. However, certain applications that depended on Z80-specific instructions or hardware-dependent graphics routines faced limitations in portability.
Bill Gates noted that the Apple II equipped with a Z-80 SoftCard constituted the most widely used CP/M hardware platform. By 1982, Digital Research reported that CP/M had been licensed for more than 450 different computer models. Key platforms included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX systems. The best-selling CP/M-compatible machine was probably the Amstrad PCW. In the United Kingdom, CP/M was available on educational computers from Research Machines—with source code published as a teaching aid—as well as the BBC Micro outfitted with a Z80 co-processor, the Amstrad CPC, Commodore 128, various TRS-80 models, and later iterations of the ZX Spectrum. Additionally, CP/M 3 was implemented on the NIAT handheld device designed for A. C. Nielsen, featuring 1 MB of SSD storage.
Multi-user Capabilities
In 1979, Digital Research introduced MP/M, a multi-user variant derived from CP/M. MP/M allowed several users to access a single computer simultaneously through multiple terminals, each equipped with its own display and keyboard. Subsequent versions extended support to 16-bit processor architectures.
CP/M Plus
The last iteration of the 8-bit CP/M series, known as CP/M Plus (version 3), was released in 1983. Developed by David K. Brown, its BDOS integrated MP/M’s bank-switching memory management into a single-user, single-task operating system compatible with CP/M 2.2 software. This enhancement enabled CP/M Plus to address more than 64 KB of memory on 8080 or Z80 CPUs and introduced support for file date stamping. The package also included a relocating assembler and linker. Targeted at advanced late-generation 8-bit platforms such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and Radio Shack TRS-80 Model 4, CP/M Plus represented the culmination of the original CP/M line.
16-bit iterations
Digital Research created multiple CP/M variants designed for 16-bit processors.
The initial release was CP/M-86, tailored for the Intel 8086, debuting in November 1981. Kathryn Strutynski oversaw the development of this CP/M-86 series. To differentiate it from the original 8-bit operating system, the earlier edition became known as CP/M-80.
CP/M-86 was anticipated to serve as the IBM PC’s primary operating system, but unsuccessful negotiations resulted in IBM selecting Microsoft’s PC DOS instead. Although CP/M-86 was subsequently offered as an alternative due to legal pressures, it failed to capture a significant portion of the market, partly because of its higher pricing on IBM machines ($240 compared to $40 for PC DOS).
The DEC Rainbow 100 supported several operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, and configurations with both processors simultaneously running CP/M-86 and CP/M-80. This approach allowed users to retain their existing 8-bit software investments while transitioning to 16-bit hardware. Comparable dual-processor designs were implemented in systems such as the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.
Following CP/M-86, Digital Research introduced CP/M-68K for the Motorola 68000 processor in 1982. Initially developed using Pascal/MT+68k and later ported to C, this version operated on EXORmacs machines and was considered for Atari ST before Atari selected GEMDOS. It also ran on SORD M68 and M68MX systems.
In that same year, a C-language port called CP/M-8000 was created for the Zilog Z8000 processor, utilized on the Olivetti M20.
These 16-bit adaptations necessitated recompiling applications. To facilitate this process, Digital Research provided utilities such as XLT86, which automatically translated Intel 8080 assembly code into Intel 8086 assembly language. This tool optimized code size and managed calling conventions to simplify porting programs from CP/M-80 and MP/M-80 to their 16-bit versions. XLT86 was accessible on both CP/M-80 and VAX/VMS platforms.
Replacement by MS-DOS
By the early 1980s, approximately 2,000 applications were available for CP/M, positioning it as the expected standard for 16-bit computing environments. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for use on the IBM PC. However, talks broke down due to disagreements over a non-disclosure agreement, prompting IBM to contract Microsoft for an operating system instead.
MS-DOS incorporated numerous fundamental concepts from CP/M, including file management structures and drive letter assignments (such as A:, B:, etc.). Its key advancement was the implementation of the FAT file system. This similarity facilitated straightforward porting of popular CP/M software like WordStar and dBase onto MS-DOS. Additionally, MS-DOS took advantage of the IBM PC’s larger memory capacity (commonly 64 KB or more), integrating more commands directly into its command-line interpreter, which improved speed and usability compared to floppy-based systems.
Early IBM PC peripherals included expansion cards such as Baby Blue that enabled execution of 8-bit CP/M applications not available under MS-DOS. Nonetheless, by 1982 BYTE magazine characterized MS-DOS as significantly more user-friendly and faster than CP/M. In 1984, InfoWorld noted that CP/M faced challenges in the home computer market due to elevated software prices. By 1986, manufacturers like Kaypro had discontinued production of 8-bit CP/M machines in favor of systems compatible with MS-DOS. As the microcomputer industry increasingly embraced IBM compatibility standards, CP/M rapidly lost market presence and media attention; BYTE magazine ceased covering CP/M by the late 1980s.
Subsequent releases of CP/M-86 enhanced performance and improved compatibility with MS-DOS environments, rebranding as DOS Plus before ultimately evolving into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the default Digital Research console command processor (CCP). This project was spearheaded by a hobbyist collective called "The CCP Group," under the leadership of Richard Conn.
The initial release, ZCPR1, appeared on a SIG/M disk (Special Interest Group/Microcomputers, affiliated with the Amateur Computer Club of New Jersey). Subsequently, ZCPR2 was introduced on 14 February 1983, distributed as ten disks via SIG/M and later updated to version 2.3. This update included an 8080-compatible code variant, facilitating operation on 8080 and 8085 processors.
Richard Conn and Frank Gaude established Echelon Inc. to commercialize ZCPR while continuing to offer it freely. On 14 July 1984, ZCPR3 was released as nine SIG/M disks. Although its code could be compiled for 8080 systems, it was optimized for the Z80 processor. Enhancements encompassed features such as command shells, aliases, input/output redirection, flow control mechanisms, named directory support, search paths, customizable menus, password protection, and integrated online help.
Development by Richard Conn concluded in January 1987; thereafter, Echelon engaged Jay Sage to advance the project with ZCPR 3.3. This version eliminated support for the 8080 and incorporated numerous new functionalities and utilities. Despite its popularity among CP/M users, ZCPR was unable to halt the overall decline of CP/M in the marketplace.
Hardware model
A basic CP/M system built around an 8-bit architecture required the following components:
- A computer terminal utilizing ASCII character encoding
- An Intel 8080/8085 or Zilog Z80 microprocessor
- NEC V20/V30 processors supported emulation of the 8080 instruction set to enable CP/M operation on PC-DOS/MS-DOS hardware; any compatible PC clone could run CP/M-86
- A minimum of 16 KB of RAM beginning at address zero
- A bootstrap routine located in the first sector of a diskette
- At least one floppy disk drive
Digital Research officially endorsed only the Intel 8080 Development System; however, numerous manufacturers adapted CP/M to their specific hardware configurations. The backward compatibility of the Z80 processor allowed CP/M to run on Z80-based machines, often with BIOS and application software utilizing instructions unique to the Z80.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based version of the operating system aimed at affordable systems lacking disk drives. This version first appeared in Sharp's MZ-800 cassette-based computer with optional disk support and took advantage of enhanced Z80 instructions rather than maintaining full compatibility with the original 8080.
American Microsystems released the S83 microprocessor compatible with the Z80 architecture; it featured an integrated 8 KB ROM containing OS and BIOS code along with logic for interfacing dynamic RAM devices. The unit was priced at $32 when purchased in quantities of one thousand.
Most systems employed a minimal ROM bootloader combined with bank switching or bus injection techniques to load CP/M starting at address zero. In some cases, manual bootstrap entry via front-panel switches was necessary.
CP/M utilized a standard 7-bit ASCII character set. The use of extended 8-bit characters lacked standardization—some implementations assigned these codes to Greek letters or underlining effects; for example, WordStar treated the eighth bit as an end-of-word marker. International versions typically conformed to ISO 646 standards by substituting certain ASCII characters rather than extending beyond seven bits.
Components
When operational in memory, the CP/M operating system consists of three primary elements:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
The BIOS and BDOS components reside permanently in memory, whereas the CCP remains resident unless replaced by an application program; in such cases, it reloads automatically afterward. Standard utility commands are stored as transient programs with a .COM file extension on disk.
The BIOS manages hardware components excluding the CPU and main memory; its responsibilities include handling character input/output and accessing disk sectors. The BDOS implements file system management along with input/output abstractions such as redirection built atop BIOS services. The CCP interprets user commands by executing internal commands (for example DIR or ERA) or loading transient executable commands (such as PIP.COM or STAT.COM). Third-party applications designed for CP/M also function as transient commands.
Across different installations within a given CP/M revision, BDOS, CCP, and standard transient commands remain uniform; conversely, BIOS is tailored specifically to each hardware platform.
Expanding available memory necessitates reinstalling CP/M so that transient programs can utilize additional space. The MOVCPM utility achieves this by relocating system code to new memory regions through adjustment of jump and call addresses, thereby granting applications access to extra memory. Once installed, OS components occupy reserved disk areas used during system boot; a ROM-resident bootloader loads the OS from drive A: upon startup.
By contemporary standards, CP/M is rudimentary due to strict limitations on program size. Early versions lacked automatic detection of disk changes, risking data corruption if disks were swapped without reloading directory information. Later releases introduced error signaling to prevent overwriting but required rebooting afterward.
The majority of system complexity is encapsulated within BDOS and—though less so—in CCP and transient commands. Porting simple BIOS routines to new hardware allowed full OS functionality with minimal effort, significantly reducing development time and contributing to CP/M's widespread adoption. This hardware abstraction approach is now common practice but represented innovation at CP/M's inception when most operating systems targeted single machine architectures exclusively.
Console Command Processor
The Console Command Processor (CCP) is responsible for handling keyboard inputs and managing terminal display output. CP/M supports both printing and video terminals, requiring all instructions to be entered via the command line. The console generally presents the A> prompt, which reflects the currently selected default disk drive. Users can switch the default drive by entering its letter followed by a colon (for instance, B:), which updates the prompt to reflect the change.
CP/M’s command-line interface draws inspiration from Digital Equipment’s Concise Command Language, utilized in operating systems such as RT-11 and OS/8. Commands are composed of a keyword followed by parameters separated by spaces or specific delimiters. Internal commands are executed directly by the CCP, whereas other commands prompt the loading of executable "transient" programs from disk. Once these programs finish, BDOS reloads the CCP as needed, releasing memory for transient application use.
Some commands may appear cryptic; for example, file copying is performed using PIP (Peripheral Interchange Program), a utility derived from DEC software. Parameter conventions vary widely, with no uniform option character across different programs.
The CCP’s built-in commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands available include ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), additional built-in commands were introduced such as DIRSYS / DIRS for listing system files, ERASE / ERA, RENAME / REN, TYPE / TYP, and USER / USE, all supporting abbreviated forms. Its transient commands encompass SYSGEN variants like COPYSYS, DATE, DEVICE, DUMP, ED, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, and XREF.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees critical functions including file access management, console output handling, and printer control. Applications place function codes and associated parameters into processor registers before invoking a fixed memory address. This standardized call mechanism ensures consistent software operation across diverse hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers fundamental low-level operations such as character input/output and reading or writing disk sectors. Although BDOS manages some disk buffering tasks, BIOS versions prior to CP/M 3.0 assume a fixed sector size of 128 bytes typical of 8-inch floppy disks. Since most 5.25-inch floppy disks use larger sector sizes, BIOS incorporates device-specific routines to handle buffering and disk operations accordingly.
Due to variations in hardware designs—ranging from integrated video displays to standalone terminals, different UART chips for serial communication ports, and diverse I/O schemes like memory-mapped I/O instead of standard 8080 port addressing—BIOS requires customization. It abstracts these hardware differences behind uniform entry points that support essential CP/M services such as character I/O and disk access. Because BIOS often lacks comprehensive serial communication support or omits it entirely, CP/M applications that rely on modem connections typically include user-supplied overlays containing machine-specific serial port routines.
Applications
Early business software found a home on CP/M, including prominent titles such as WordStar (word processing), dBase (database management), KAMAS and Out-Think (outliners), Turbo Pascal (the forerunner to Borland Delphi), Multiplan (which preceded Microsoft Excel), VisiCalc (the pioneering spreadsheet), SuperCalc (the leading spreadsheet on CP/M), and AutoCAD (a CAD program). A wide array of compilers and interpreters were also accessible, featuring languages like BASIC, Turbo Pascal, FORTRAN, and PL/I, many of which were among Microsoft's initial offerings.
Software on CP/M commonly came with installers designed to adapt applications across a variety of hardware platforms. For instance, users of the Kaypro II could convert software originally formatted for the Xerox 820 onto Kaypro-compatible disks. BASIC source code was typically available, and most copy protection mechanisms proved ineffective within the CP/M environment. Unlike other operating systems of the time that depended on proprietary disk formats, CP/M prioritized compatibility across different software; disks that could not be read were usually formatted for non-CP/M systems.
Due to limited graphical capabilities, video games were mostly restricted to character-based or text-driven adventures such as Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction titles like the Zork series and Colossal Cave Adventure. Infocom regularly published their games in CP/M format. Additionally, Lifeboat Associates distributed user-developed freeware programs including XMODEM, which facilitated dependable file transfers via modems. The outline processor KAMAS stood out as a native CP/M application of note.
Transient Program Area
Within the original CP/M versions for the 8080, 8085, and Z80 processors, the read/write memory segment from address 0100H up to just before the BDOS start address at 0006H was designated as the Transient Program Area (TPA), reserved for application execution. Although these CPUs supported addressing up to 64 KB of memory, the TPA's size depended on system architecture since portions of memory were allocated to BIOS ROMs or video RAM. Systems employing bank switching could increase TPA capacity by swapping out ROM or video memory segments. In CP/M 3.0, parts of the BDOS could also be relocated into bank-switched memory spaces.
Debugging application
CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory contents and program modules while supporting stepwise execution of programs.
Resident programs
Initially, CP/M did not include native support for terminate-and-stay-resident (TSR) programs similar to those in DOS. Nevertheless, developers managed to extend system functionality by intercepting operating system calls and created supplementary desk accessories such as SmartKey, a keyboard utility. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling the Command Console Processor (CCP) to load RSXs independently from transient applications. Third-party developers also backported comparable features like Resident System Modules (RSMs) to CP/M version 2.2.
Software installation
Although CP/M standardized input/output operations for disks and consoles, individual applications still required installation procedures to properly support hardware peripherals such as printers and terminals. Device control often depended on manufacturer-specific escape sequences, necessitating user-run installation utilities to configure or modify these sequences for each device type. This setup process had to be performed separately for every application because no centralized operating system service managed device settings.
Printer initialization codes were typically embedded directly within software; consequently, running programs like WordStar with multiple printer models demanded distinct versions customized for each printer type. Users needed to reload the appropriate version when switching between different printing devices.
Disk formats
The 128-byte per sector, single-density, single-sided disk format used by the IBM System/34 and IBM 3740 became the standard 8-inch floppy disk format for CP/M. In contrast, there was no universally accepted 5.25-inch disk format for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own unique formats. The majority of software was distributed in the Xerox 820 format, compatible with the Kaypro II, yet according to an InfoWorld estimate from 1981, roughly two dozen distinct formats were common enough to warrant software support. JRT Pascal released multiple 5.25-inch disk versions tailored for North Star, Osborne, Apple, Heath/Zenith, and Superbrain systems alongside a single 8-inch disk version. Ellis Computing provided software compatible with both Heath formats plus sixteen additional 5.25-inch formats including various TRS-80 CP/M derivatives. Distributors like Lifetree converted CP/M applications to work across multiple platforms.
Disk format variations arose from system-specific designs and could be modified through CP/M settings that controlled reserved space, directory areas, and logical-to-physical sector mapping schemes. Despite these options, there was no standardized approach for importing formatting parameters from disks created on different hardware.
Nearly all CP/M machines equipped with 8-inch drives could read the IBM single-density, single-sided format. Compatibility with other disk formats depended heavily on the type of floppy drive and controller used because of the wide diversity in floppy disk characteristics across both 8-inch and 5.25-inch media. Differences included sectoring methods (hard or soft), density levels (single or double), number of sides, track counts (35, 40, 77, or 80), and sector layouts. Conversion utilities allowed reading disks formatted in similar but distinct formats; for instance, the Kaypro II was capable of accessing disks from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. Certain disk types such as those with 80 tracks or hard-sectoring were incompatible and could not be read. Apple II computers were restricted to Apple’s GCR format and relied on Apple-specific disks or serial data transfers.
Due to this fragmented landscape of CP/M disk formats, distributors often had to maintain inventories of multiple disk types or invest in duplication equipment capable of handling several formats simultaneously. This lack of a unified disk standard—unlike the IBM PC’s consistent disk format—contributed significantly to CP/M's swift decline after 1981.
Among the last notable machines supporting CP/M was the Commodore 128 released in 1985, which included a Z80 processor dedicated to running CP/M alongside its native CPU mode. It required either a 1571 or 1581 drive to access soft-sectored 40-track MFM disks.
The earliest computer to feature a 3.5-inch floppy drive was the Sony SMC-70, operating under CP/M 2.2. Other systems supporting CP/M on this disk size included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also provided support for both 3.5-inch floppy disks and RAM disks on compatible memory cards. The Amstrad PCW initially utilized 3-inch drives before transitioning to the more common 3.5-inch format.
File system
CP/M file names adhered to the 8.3 filename convention, allowing up to eight characters before a period followed by a three-character extension denoting file type (for example .COM for executable programs and .TXT for text files). When entered at the command prompt, filenames were automatically converted to uppercase; however, some applications like MBASIC could generate lowercase filenames which complicated command-line file access.
Disk drives were designated by letters (such as A or B), with files referenced by prefixing their names with the drive letter and colon (e.g., A:FILE.TXT). If no drive letter was specified during file operations, commands defaulted to using the current drive.
File sizes were expressed in units called records, each consisting of 128 bytes corresponding directly to disk sectors; precise byte-level sizes were generally not tracked by the system. The file size was maintained within the File Control Block (FCB). To indicate the end of text files conventionally, a control-Z character (ASCII SUB, hex 1A) was appended so programs could detect file termination despite fixed-size record storage.
With the advent of larger removable and fixed disks, CP/M introduced de-blocking algorithms that increased blocks per allocation unit allowing support for bigger files. This improvement raised the minimum allocation unit size from about 1 KB on single-density drives up to as much as 32 KB on some systems when handling small files—resulting in less efficient use of disk space when storing numerous small files.
Timestamping of file modifications was not supported in CP/M version 2.2 but appeared as optional enhancements in MP/M and CP/M version 3.0.
CP/M version 2.2 did not feature subdirectories but organized files using sixteen numbered user areas. Users could switch between these areas using commands like "User X" where X ranged from 0 to 15. Security measures were minimal; user areas primarily facilitated multi-user functionality within MP/M environments. Files stored in USER area 0 were accessible universally through specific path references, whereas other user areas isolated files by their assigned number. Although limited in utility on small floppy disks, this scheme proved useful on systems equipped with hard drives by enabling separation of files for different tasks or users—for instance isolating data entry from billing processes within a shared machine environment.
Graphics
While early S-100 systems featured graphics capabilities, CP/M itself did not provide a uniform graphics interface until the introduction of GSX in 1982. Due to constrained memory resources, graphical output was rare on 8-bit CP/M machines, which typically displayed basic ASCII art or utilized specialized character sets. Certain models, such as the Kaypro line and the TRS-80 Model 4, supported block graphics accessible through assembly language or BASIC's CHR$ function. The TRS-80 Model 4 could achieve graphics resolutions up to 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Some firms developed sanctioned CP/M variants by building upon Digital Research’s original source code. An example includes IMDOS, designed for the IMSAI 8080, which was a clone of the Altair 8800.
Compatible
Numerous independent operating systems compatible with CP/M were created without relying on Digital Research’s codebase. These include:
- Cromemco CDOS from Cromemco
- MSX-DOS tailored for MSX machines, supporting CP/M applications
- The Epson QX-10, which offered CP/M or TPM-II/III compatible environments
- The British SAM Coupé’s optional Pro-DOS, compatible with CP/M-2.2
- Amstrad/Schneider CPC and PCW series, which were distributed with CP/M disk software
- The Husky (computer) featuring DEMOS, a ROM-based loader capable of running many CP/M programs
- ZSDOS, a BDOS substitute for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free OS compatible with CP/M 2.2 initially developed without Digital Research code but later incorporating original components after permission granted by Lineo’s president in 2022
- LokiOS, a CP/M 2.2-compatible system released in 2023 by David Kitson for the Open Spectrum Project, including source code and utilities enabling dynamic OS component swapping
- IS-DOS for the Enterprise, and VT-DOS for the Videoton TV-Computer, both developed by Intelligent Software
Enhancements
Certain CP/M-compatible systems significantly expanded its capabilities, such as the multi-processor-supporting TurboDOS.
Eastern bloc
Within the former Eastern Bloc, multiple CP/M-80 variants existed under various designations including SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM, DAC, HC among others. Additionally, there were CP/M-86 derivatives like SCP1700, CP/K, and K8918-OS. These operating systems were produced by manufacturers such as the East German VEB Robotron.
Legacy
Many elements found in Microsoft Windows originate from compatibility with MS-DOS, which itself was designed to be compatible with CP/M. Features such as drive letter assignments and the 8.3 filename format in MS-DOS and early Windows versions derive from CP/M conventions. The use of wildcard characters (? and *) in Windows commands traces back to those implemented in CP/M. Reserved device names including "PRN:" for printers and "CON:" for console devices also have their roots in CP/M. In this system, floppy drives were labeled A and B; when hard drives appeared later, they received the designation C—this naming scheme continues in MS-DOS’s C:\> prompt. The control character ^Z, indicating end-of-file in certain text files, is another legacy inherited from CP/M. Several DOS commands like DIR, REN/RENAME, and TYPE were modeled after their counterparts in CP/M. Common file extensions such as .TXT and .COM remain widely used today.
During 1997–1998, Caldera made available CP/M 2.2 executables and source code under an open source license. This facilitated redistribution and modification of Digital Research files associated with both CP/M and MP/M through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, ownership of these assets transferred to Lineo, which updated and broadened the licensing terms later that year. In October 2014, to commemorate the 40th anniversary of CP/M, the Computer History Museum released early versions of its source code.
As of , hobbyists devoted to vintage computing along with some small enterprises continue to maintain and develop systems running predominantly version 2.2 of CP/M.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an operating system based on CP/M
- Eagle Computer
- IMDOS
- List of machines running CP/M
- MP/M
- MP/NET and MP/NOS
- Multiuser DOS
- Pascal/MT+
- SpeedStart CP/M
- 86-DOS
- Kenbak-1
Further reading
- Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
- Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
- Z-System Corner: Tenth Anniversary of ZCPR, The Computer Journal, Issue 54
- The origin of CP/M's name
- Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013
- IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, Computer History Museum, 2014
- Triumph of the Nerds, PBS (covers IBM's selection of Microsoft DOS over Digital Research's CP/M for the IBM PC)
- CP/M FAQ, comp.os.cpm
External links
- The Unofficial CP/M Web site (created by Tim Olmstead) – features source code
- Gaby Chaudry's Homepage for CP/M and Computer History – offers ZCPR resources
- CP/M Main Page – John C. Elliott’s technical resource site
- MaxFrame's Digital Research CP/M page