CP/A
| Company type | Private |
|---|---|
| Industry | Software, Operating systems |
| Predecessor | Intergalactic Digital Research, Inc. |
| Founded | 1974 |
| Founder | Gary Kildall |
| Fate | Declined after introduction of IBM PC and MS-DOS |
Area served | Worldwide |
Key people | Gary Kildall, John Pierce, Kathryn Strutynski, Dorothy McEwen |
| Products | CP/M, MP/M, CP/M-86, CP/M-68K, CP/M-8000, PL/M language |
CP/M, initially known as Control Program/Monitor and subsequently renamed Control Program for Microcomputers, is a widely adopted operating system created in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. Functioning as a disk operating system, CP/M managed file organization on magnetic media and controlled program execution. While early versions supported only single-tasking on 8-bit processors with memory limits up to 64 kilobytes, subsequent releases added multi-user support and compatibility with 16-bit processor architectures.
The design of CP/M is composed of three main components: the Basic Input/Output System (BIOS), which interfaces with hardware drivers; the Basic Disk Operating System (BDOS), responsible for file system operations and core services; and the Console Command Processor (CCP), a command-line interpreter equipped with built-in commands.
Emerging as the de facto standard for microcomputers—particularly those utilizing the S-100 bus—CP/M dominated the business computing environment from the late 1970s through the mid-1980s. Its widespread adoption encouraged growth in both hardware and software sectors by facilitating application portability across various manufacturers’ systems. The availability of cost-effective CP/M-based microcomputers spurred innovation within software development communities, including user groups and independent programmers. However, CP/M’s prominence diminished following the 1981 introduction of the IBM PC alongside its DOS operating system.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, employing a Shugart Associates 8-inch floppy-disk drive with a custom controller.[1] The system was programmed in Kildall’s proprietary PL/M language.[2] CP/M drew inspiration from the TOPS-10 operating system used on the DECsystem-10 mainframe, which Kildall had experience with.[3]
CP/M became compatible with numerous computers based on the 8080 and Z80 processors. In 1977, early licensee Gnat Computers acquired rights to CP/M 1.0 at a rate of $90 per microcomputer unit. As demand escalated, Digital Research was able to command licensing fees reaching tens of thousands of dollars.[4]
Development of CP/M 2.0 was overseen by John Pierce under Kildall’s guidance in 1978. Kathryn Strutynski joined Digital Research in early 1979, initially focusing on debugging CP/M 2.0 before playing a vital role in advancing CP/M 2.2 and CP/M Plus. Other notable contributors during this period included Robert Silberstein and David K. Brown.[5]
The original designation "Control Program/Monitor" was later registered as the trademark "Control Program for Microcomputers" in 1977.[6][7] This renaming aligned with naming patterns such as Kildall’s PL/M language and IBM’s CP/CMS operating system. Alongside his wife and business partner Dorothy McEwen,[8] Kildall sought to commercialize both CP/M and PL/M under the Digital Research brand, aiming to establish it as synonymous with microcomputer technology—foreshadowing the later dominance achieved by IBM and Microsoft in personal computing. The company originally known as Intergalactic Digital Research, Inc. was rebranded as Digital Research, Inc.[8]
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with sublicensing agreements indicating an even wider adoption. A variety of manufacturers developed CP/M-based machines across different industries; InfoWorld observed that CP/M was emerging as the leading operating system for small computers. Even companies with their own proprietary operating systems, such as Heath/Zenith (HDOS), offered CP/M as an alternative on their 8080/Z80 models, a contrast to the 6502 CPU market which lacked a similar universal OS.[9] This success was largely due to CP/M’s vast software ecosystem. The Xerox 820 utilized CP/M to take advantage of its extensive program library.[10] Xerox supplemented Digital Research’s often criticized manuals with a Howard W. Sams CP/M guide.[11][12]
By 1984, Columbia University had adapted CP/M source code to create Kermit executables compatible with over a dozen CP/M variants and generic platforms.[13] Termed a "software bus",[14][15] it facilitated seamless interaction among diverse hardware devices through standardized interfaces.[16] Programs written for CP/M were largely portable between systems, usually requiring only adjustments to terminal and printer control codes. This cross-platform compatibility significantly contributed to CP/M’s widespread use and stimulated software development beyond OSs tied to specific hardware platforms. However, some constraints existed: software utilizing the Z80’s extended instruction set could not run on 8080/8085 CPUs, and graphics functions often remained hardware-dependent due to direct device access for improved performance.
Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware environment for CP/M.[17] By 1982, Digital Research announced that more than 450 computer models were licensed for CP/M operation.[18] Prominent systems running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. The most commercially successful CP/M-compatible device was probably the Amstrad PCW. In the United Kingdom, CP/M was accessible on educational computers from Research Machines (with source code released as a teaching tool), the BBC Micro enhanced by a Z80 co-processor, along with the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 powered the NIAT handheld computer developed for internal use by A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Capabilities
In 1979, Digital Research introduced MP/M, a multi-user variant of CP/M designed to enable multiple terminals to connect simultaneously to a single host system, granting each user independent control over their own display and keyboard. Subsequent releases expanded support to include 16-bit processor architectures.
CP/M Plus
Released in 1983, CP/M Plus (version 3) was the last iteration of the 8-bit CP/M series, featuring a BDOS developed by David K. Brown. This version incorporated MP/M’s bank-switching memory management into a single-user operating system while maintaining compatibility with CP/M 2.2 programs. It allowed 8080 or Z80 processors to access memory beyond the 64 KB limit. Enhancements included file date stamping and integrated development utilities such as a relocating assembler and linker. CP/M Plus was designed for late-era 8-bit computers, including the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX machines, and the TRS-80 Model 4.
16-bit Versions
The CP/M environment extended to 16-bit processors with the introduction of CP/M-86 for the Intel 8086 in November 1981, overseen by Kathryn Strutynski. To differentiate it from its predecessor, the original 8-bit system became known as CP/M-80.
Although CP/M-86 was anticipated to be the IBM PC’s primary operating system, Digital Research was unable to finalize a licensing agreement with IBM. Consequently, IBM selected Microsoft’s PC DOS instead. Despite being released later, CP/M-86 never gained significant market share due to IBM pricing it substantially higher than PC DOS ($240 compared to $40).
The Digital Equipment Corporation Rainbow 100 supported multiple operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously—thereby protecting users’ investments in existing 8-bit software while facilitating migration to 16-bit platforms. Comparable dual-processor configurations were available on systems like the CompuPro System 816 (supporting CP/M 8-16) and the Zenith Z-100.
Following CP/M-86, Digital Research developed CP/M-68K for Motorola’s 68000 CPU. Initially implemented in Pascal and later rewritten in C, this version was intended for Atari ST computers; however, Atari ultimately adopted GEMDOS. Besides Atari ST, CP/M-68K operated on SORD M68 and M68MX systems.
In 1982, CP/M was adapted for the Zilog Z8000 processor as CP/M-8000, which ran on the Olivetti M20.
These 16-bit adaptations required applications to be recompiled. Some assembly language programs could be automatically converted using tools like Digital Research’s XLT86, which transformed Intel 8080 assembly (.ASM) into Intel 8086 assembly (.A86). XLT86 optimized code and adjusted calling conventions to facilitate porting from CP/M-80/MP-M-80 to CP/M-86/MP-M-86 platforms. This utility was available on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications had been developed for CP/M, positioning it as a likely standard for emerging 16-bit computers. In 1980, IBM approached Digital Research about licensing CP/M for its IBM Personal Computer; however, negotiations faltered after IBM failed to obtain a signed non-disclosure agreement, leading them to contract Microsoft for an alternative operating system.
MS-DOS adopted many structural elements from CP/M, such as file management schemes and drive letter assignments (A:, B:). Its principal advancement was the introduction of the FAT file system. This resemblance facilitated porting popular CP/M software titles like WordStar and dBase to MS-DOS. Additionally, MS-DOS took advantage of increased memory availability—typically exceeding 64 KB—to incorporate more commands directly into its command-line interface, thereby improving performance and user experience on floppy disk–based PCs.
Early IBM PC hardware expansions included devices like the Baby Blue card that enabled running 8-bit CP/M applications. Nonetheless, by 1982 industry analysts regarded MS-DOS as more user-friendly and advantageous compared to CP/M. Efforts to penetrate the home computer market with CP/M largely failed due to high software prices. By 1986, manufacturers such as Kaypro discontinued production of 8-bit CP/M machines in favor of models compatible with MS-DOS. As microcomputing shifted toward IBM-compatible platforms, CP/M rapidly lost relevance and faded from prominent industry discussions.
Subsequent iterations of CP/M-86 enhanced both performance and compatibility with MS-DOS, eventually rebranding as DOS Plus before evolving into DR-DOS.
ZCPR
ZCPR (Z80 Command Processor Replacement) was introduced on February 2, 1982, as a direct substitute for Digital Research's original console command processor (CCP). This project was created by "The CCP Group," a collective of enthusiasts led by Richard Conn.
The initial version, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was launched on February 14, 1983, initially available as ten disks from SIG/M. It later evolved into version 2.3, adding compatibility with 8080 code to support a wider range of hardware platforms.
To commercialize ZCPR while keeping it freely available, Conn partnered with Frank Gaude to establish Echelon Inc. On July 14, 1984, ZCPR3 was released as nine SIG/M disks, including a variant designed to operate on non-Z80 processors with limited functionality. By this stage, ZCPR incorporated sophisticated 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. In 1987, development passed to Jay Sage, who issued ZCPR 3.3 featuring expanded utilities and enhanced capabilities; however, this release discontinued support for 8080 processors. Despite strong enthusiasm within the CP/M community, ZCPR was unable to halt the overall decline of CP/M.
Hardware model
A basic 8-bit CP/M system required the following components:
- A terminal capable of ASCII communication
- A microprocessor from the Intel 8080/8085 or Zilog Z80 family
- NEC V20 and V30 processors provided 8080 emulation enabling CP/M operation on PC-DOS/MS-DOS hardware; any IBM PC-compatible machine could run CP/M-86
- A minimum of 16 KB of RAM starting at address zero
- A bootstrap mechanism to load the initial disk sector
- At least one floppy disk drive
Although Digital Research officially supported only the Intel 8080 Development System, CP/M was widely adapted by various manufacturers to accommodate diverse hardware configurations. While the core CP/M did not utilize instructions unique to the Z80 processor, many Z80-based systems included them within BIOS routines and application software.
Digital Research collaborated with Zilog and American Microsystems to develop Personal CP/M—a ROM-based operating system aimed at low-cost machines lacking disk drives—first implemented in the Sharp MZ-800 cassette-driven computer with optional disk support. Personal CP/M leveraged enhanced Z80 instruction sets instead of adhering strictly to 8080 compatibility.
American Microsystems introduced the S83 microprocessor compatible with the Z80 architecture; it integrated an 8 KB ROM containing OS and BIOS code alongside logic for dynamic RAM interfacing. The S83 was available in bulk for $32 per chip.
Most CP/M systems employed a minimal ROM-based bootloader combined with bank switching or bus injection techniques to load startup code at address zero; some required manual memory entry through front-panel switches.
CP/M utilized the standard 7-bit ASCII character set; however, extended characters varied based on manufacturer implementations—for example, Kaypro used extended characters for Greek letters; Osborne machines represented underlining via the eighth bit; WordStar employed it as an end-of-word marker. International versions often replaced certain ASCII characters according to ISO 646 standards rather than extending beyond the original 7-bit range.
Components
When operational in memory, the CP/M operating system consists of three primary components:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
Both BIOS and BDOS reside permanently in memory; CCP remains loaded unless an application overwrites it temporarily—after which it is reloaded upon program termination. Standard utility commands are stored as transient programs in files with a .COM extension on disk.
The BIOS manages hardware beyond the CPU and main memory, handling tasks such as character input/output and disk sector operations. BDOS oversees the file system and input/output abstractions like redirection built atop BIOS services. The CCP interprets user commands by executing internal commands (e.g., DIR, ERA) or loading transient executable programs (e.g., PIP.COM, STAT.COM). Third-party applications function similarly as transient commands.
While BDOS, CCP, and standard transient utilities remain consistent across different CP/M versions, BIOS is customized for each hardware platform.
Expanding memory requires reinstalling CP/M so that transient applications can utilize additional space. The MOVCPM utility adjusts object code by relocating jump and subroutine call addresses to new memory locations. The modified OS version is saved onto a new disk enabling applications access to increased memory capacity. OS components are stored in reserved disk areas used during boot-up; a ROM-based bootloader loads the OS from drive A: at startup.
By contemporary standards, CP/M is relatively rudimentary due to strict limits on program size. Early releases lacked mechanisms to detect disk changes automatically—risking data corruption if disks were swapped without reloading directory information. Later versions introduced fatal error signaling if write operations occurred before directory reads on newly inserted disks—preventing accidental overwrites but requiring a system reboot.
Most of CP/M’s complexity resides within BDOS, with additional functionality in CCP and transient commands. Porting minimal BIOS routines for specific hardware allowed the entire OS to operate effectively—dramatically reducing development effort and fueling widespread adoption of CP/M. This early implementation of a hardware abstraction layer was innovative at a time when most operating systems targeted single-machine environments.
Console Command Processor
The Console Command Processor (CCP) is responsible for managing keyboard inputs and terminal outputs within CP/M, accommodating both video and printing terminals. Users enter commands at the A> prompt, which signifies the current default disk drive; this default can be altered by typing a different drive letter followed by a colon (for example, B:). The CCP continuously awaits user instructions and executes commands accordingly.
The command-line interface in CP/M was inspired by Digital Equipment Corporation’s Concise Command Language, as seen in operating systems such as RT-11 and OS/8. Commands are composed of a primary keyword followed by parameters separated by spaces or special symbols. Commands classified as internal are processed directly by the CCP; otherwise, it loads executable "transient" programs from disk and forwards any parameters to them. Once these transient programs complete their tasks, BDOS reloads the CCP to reclaim memory for other applications.
Several command names reveal their DEC heritage—for instance, PIP (Peripheral Interchange Program) is used for copying files. Parameter syntax varies widely among programs, lacking a uniform option character.
Among the CCP’s built-in commands are DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands include utilities such as ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands were expanded to include DIRSYS/DIRS for listing system files, ERASE/ERA to remove files, RENAME/REN to change filenames, TYPE/TYP to display ASCII file contents, and USER/USE to switch user numbers. Users could also abbreviate these built-ins. The range of transient commands grew as well, adding COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, SETDEF, SHOW, SID, XREF, among others.
This command framework offered versatile control over file management and system operations across a wide variety of hardware platforms.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees core functions including file handling, console output, and printing services. Applications interact with BDOS by loading processor registers with specific function codes and related parameters before invoking a fixed memory address. This standardized mechanism guarantees consistent software behavior regardless of the underlying hardware.
Basic Input Output System
At the lowest level within CP/M lies the Basic Input Output System (BIOS), which manages fundamental operations such as character input/output and reading or writing disk sectors. While BDOS handles data buffering for disks, BIOS takes care of hardware-specific details like supporting variable sector sizes common on 5.25-inch floppy disks.
Because of the wide variety of hardware configurations—from integrated video systems to diverse serial port designs and memory-mapped I/O—customizing the BIOS is crucial for CP/M’s portability across different machines. Since BIOS typically provides limited or no support for serial communications, modem-related functionality is frequently implemented through user-installed overlays designed for particular hardware setups.
Applications
Early business software for CP/M included prominent titles such as WordStar (word processing), dBase (database management), Turbo Pascal (programming language), Multiplan (spreadsheet), and AutoCAD (computer-aided design). Spreadsheet programs like VisiCalc and Sorcim's SuperCalc initially achieved significant market success on CP/M before moving to the MS-DOS platform.
Software was frequently distributed with installer utilities designed to adapt programs for various hardware configurations. The widespread availability of BASIC source code and minimal copy protection measures fostered extensive compatibility across software. Unlike other operating systems that depended on proprietary disk formats, CP/M prioritized interoperability between different applications through compatible file handling.
Although CP/M had limited graphical capabilities, it supported many text-based games such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction titles like Zork and Colossal Cave Adventure. Infocom regularly released their text adventure games for the CP/M environment. Lifeboat Associates played a role in distributing user-developed tools, including XMODEM, which facilitated dependable file transfers over modems. Another noteworthy native CP/M program was the outline processor KAMAS.
Transient Program Area
For the original CP/M running on 8080, 8085, and Z80 processors, the read/write memory region from address 0100 hexadecimal up to just below the address stored at 0006H (the lowest BDOS entry point) was designated as the Transient Program Area (TPA) allocated for application execution. Although these CPUs could address up to 64 KB of memory, the actual TPA size varied depending on system design, as some reserved portions of memory for BIOS ROM or video display functions. Systems employing bank switching could expand TPA capacity by swapping out ROM or video memory segments. CP/M 3.0 further allowed segments of BDOS to reside within bank-switched memory areas.
Debugging application
CP/M featured a Dynamic Debugging Tool known as DDT, which provided capabilities for inspecting and modifying memory contents and program modules, as well as executing code one step at a time.
Resident programs
Initially, CP/M did not support terminate-and-stay-resident (TSR) programs similar to those found in DOS. Nevertheless, developers could intercept operating system calls to augment functionality, enabling utilities like SmartKey, a keyboard enhancement that mapped strings to specific keys. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced; these could be loaded through null command files without occupying the Transient Program Area. Additionally, third-party solutions such as Resident System Modules (RSMs) were adapted for CP/M 2.2 to provide similar resident program capabilities.
Software installation
Although CP/M standardized disk and console input/output interfaces, most applications required an installation process to fully support peripherals such as printers and terminals. Control of these devices often depended on manufacturer-specific escape sequences—for instance, commands to enable boldface printing varied significantly between printer models. Installation utilities allowed users to select their hardware or customize escape sequences associated with particular functions. Because no centralized operating system service managed peripheral devices, this installation step had to be performed separately for each application.
Printer initialization codes were embedded within individual programs. Consequently, using software like WordStar with multiple printer types demanded distinct versions tailored for each printer; switching between printers involved exiting the current program and launching the version configured for the desired device.
Disk formats
The 128-byte-per-sector, single-density, single-sided disk format used by IBM System/34 and IBM 3740 became the de facto standard for CP/M's 8-inch floppy disks. Unlike the 8-inch disks, there was no universal 5.25-inch CP/M disk format; manufacturers such as Kaypro, Morrow Designs, and Osborne each implemented their own unique formats. Among these, some gained more traction—most software was distributed in the Xerox 820 format, compatible with machines like the Kaypro II. However, InfoWorld reported in 1981 that approximately two dozen disk formats were sufficiently widespread that software developers needed to support them to maximize their market reach. For example, JRT Pascal was available on multiple 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), and Superbrain systems, alongside an 8-inch version. Ellis Computing supported Heath formats plus sixteen additional 5.25-inch variants including those used by TRS-80 CP/M models. Companies like Lifetree facilitated cross-system CP/M application conversions.
The choice of disk format was largely influenced by hardware architecture and disk media properties. CP/M permitted configuration of reserved space, directory sizes, and logical-to-physical sector mappings; nevertheless, no standardized mechanism existed to automatically load formatting parameters from disks created on different machines.
Almost all CP/M systems equipped with 8-inch drives could handle IBM’s single-sided, single-density disk format. Despite this, compatibility between CP/M computers was inconsistent due to variations in floppy drive types and controllers. Disk characteristics varied broadly—ranging from hard or soft sectoring, single or double density/sidedness, to track counts between 35 and 80. Tools for format translation enabled users to read disks from similar but distinct formats—for instance, the Kaypro II could access disks formatted for TRS-80, Osborne, IBM PC, and Epson QX-10—but some types such as 80-track or hard-sectored disks remained unreadable. Users of the Apple II were restricted to Apple's GCR format for CP/M software or needed to transfer data through serial connections.
This fragmentation within the CP/M ecosystem forced distributors either to stock multiple disk formats or invest in multi-format duplication equipment. This lack of standardization contrasted sharply with the more uniform IBM PC disk formats and contributed significantly to CP/M’s swift decline following 1981.
One of the last significant computers supporting CP/M was the Commodore 128 (introduced in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native 6502-derived CPU. It required a 1571 or 1581 drive capable of reading soft-sector 40-track MFM disks.
The initial computer to feature a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems supporting CP/M on 3.5-inch disks included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (with Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also provided support for both 3.5-inch floppy drives and RAM disks through compatible memory expansion modules. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to the more common 3.5-inch media.
File system
File naming conventions adhered to the 8.3 format: filenames could contain up to eight characters followed by a dot and a three-character extension indicating file type (for example, .COM denoted executable files while .TXT identified text files). Filenames entered at the command prompt were automatically converted to uppercase; however, some applications such as MBASIC could generate lowercase filenames that were difficult to access directly from the command line.
Disk drives were assigned letters (e.g., A, B), with files referenced by prefixing the drive letter and colon—for instance, A:FILE.TXT. If no drive letter was specified, operations defaulted to the current active drive.
File sizes were tracked in units called records, each consisting of 128 bytes—matching sector size on typical 8-inch floppy disks—rather than exact byte counts. The operating system maintained file size information within the File Control Block (FCB). Conventionally, text files ended with a control-Z character (ASCII SUB, hex 1A) marking end-of-file; inserting this character mid-file could result in truncation beyond that point.
With larger disk capacities came disk de-blocking schemes that increased the number of disk blocks per allocation unit, enabling storage of bigger files. This approach raised the minimum allocation size from roughly 1 KB (in single-density disks) up to as much as 32 KB even for very small files—causing inefficient use of space when storing numerous small files.
File modification timestamps were not supported prior to CP/M 3.0 but became optional features in MP/M and subsequent versions.
CP/M version 2.2 lacked true subdirectories, instead providing sixteen numbered user areas for file organization. Users switched between these areas using commands like "User X" at the prompt. Although security was minimal—USER 0 served as the default accessible area while others isolated files—this mechanism allowed separation of workflows on systems equipped with hard drives (for example, separating data entry from billing files) without intermixing contents across user areas.
Graphics
Although S-100 systems with graphics capabilities appeared early, CP/M did not offer standardized graphics functionality until 1982 with the introduction of GSX. Due to constrained memory resources, graphical displays were rare on 8-bit CP/M machines, which typically rendered simple ASCII art in text mode or utilized custom character sets. Certain models, such as the Kaypro line and the TRS-80 Model 4, included video hardware that supported block graphics accessible to programmers using assembler or BASIC. The TRS-80 Model 4 could produce graphics at a resolution of 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Some firms developed official CP/M variants derived from Digital Research’s source code. An example is IMDOS for the IMSAI 8080, which was a clone of the Altair 8800.
Compatible
A variety of independent operating systems compatible with CP/M emerged that did not incorporate Digital Research’s original code. These include:
- Cromemco CDOS by Cromemco
- MSX-DOS for MSX computers, capable of running CP/M applications
- The Epson QX-10, offering either CP/M or compatible TPM-II/III environments
- The British SAM Coupé, which provided optional Pro-DOS supporting CP/M-2.2 compatibility
- Amstrad/Schneider CPC and PCW series distributed with CP/M disk software
- The Husky (computer), featuring DEMOS, a ROM-based loader compatible with numerous CP/M programs
- ZSDOS, a replacement BDOS for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free and open-source OS compatible with CP/M 2.2 originally without Digital Research code; updated in 2022 by David Given to include original Digital Research components following authorization from Lineo’s president
- LokiOS, launched in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible system containing BIOS, BDOS, CLI source code, original Digital Research source files, and modular OS components that can be swapped dynamically
- IS-DOS for the Enterprise (computer), created by Intelligent Software
- VT-DOS for the Videoton TV-Computer, also developed by Intelligent Software
Enhancements
Certain CP/M-compatible operating systems considerably expanded upon the original features, such as the multi-processor capable TurboDOS.
Eastern bloc
In the former Eastern Bloc, numerous CP/M-80 derivatives were produced under various names 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 variants like SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by entities such as the East German company VEB Robotron and other regional producers.
Legacy
Several elements of Microsoft Windows can be traced back to its compatibility with MS-DOS, which itself adopted conventions originating from CP/M. The use of drive letters and the 8.3 filename format in MS-DOS and early Windows versions stem from CP/M’s design. Wildcard characters (? and *) employed in Windows derive from those used in CP/M. Reserved device filenames like "PRN:" for printers and "CON:" for consoles also have their roots in CP/M. In this lineage, floppy drives were designated as drives A and B in CP/M; hard drives started at C—a convention maintained in MS-DOS’s C:\> prompt. The control character ^Z, representing end-of-file in certain text files, is another inherited trait. Many DOS commands such as DIR, REN/RENAME, TYPE, and ERA/ERASE reflect their counterparts in CP/M. File extensions like .TXT and .COM continue to be widely utilized across various operating systems.
Between 1997 and 1998, Caldera released both binary and source code versions of CP/M 2.2 under an open source license. This enabled redistribution and modification of Digital Research files associated with CP/M and MP/M via Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—holder of these assets—broadened the distribution license later that year. To commemorate CP/M’s 40th anniversary in October 2014, the Computer History Museum published early versions of its source code.
As of 2018, communities dedicated to vintage computing alongside some niche commercial ventures continue to develop and maintain platforms primarily running CP/M 2.2 as their host operating system.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an operating system originating from 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 (archived)
- Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013 (archived)
- IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, Computer History Museum, 2014
- Triumph of the Nerds, PBS (details IBM's selection of Microsoft DOS over Digital Research's CP/M)
- CP/M FAQ available at comp.os.cpm and Digital Research websites
External links
- The Unofficial CP/M Web site – Features source code access
- Gaby Chaudry's Homepage for CP/M and Computer History – Contains materials on ZCPR
- CP/M Main Page – Technical resource by John C. Elliott
- MaxFrame's Digital Research CP/M page
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1980_CPM - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1975_BDOS - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedjohnson - ↑ ...
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedBrown-Strutynski-Wharton_1983 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM.NYT83 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1993 - ↑ 8.0 8.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall.NYT - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwilkinson19811019 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwise19820510 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmeyer19820614 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedInfoworld 1981 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs nameddacruz19840427 - ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
- ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedSwaine_1997_Entrepreneurship - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedbunnell19820203 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedlibes198206