CP/M file system
| Company type | Private |
|---|---|
| Industry | Software development |
| Founded | 1974 |
| Founder | Gary Kildall, Dorothy McEwen |
| Headquarters | United States |
Key people | Gary Kildall, Dorothy McEwen, John Pierce, Kathryn Strutynski, Robert "Bob" Silberstein, David "Dave" K. Brown |
| Products | CP/M operating system, PL/M programming language |
CP/M, initially known as Control Program/Monitor and later rebranded as Control Program for Microcomputers, is a widely distributed operating system created in 1974 by Gary Kildall at Digital Research, Inc for microcomputers based on the Intel 8080 and Intel 8085 processors. Functioning as a disk operating system, CP/M facilitated file management on magnetic disk drives and enabled program execution directly from these storage devices. While early versions were restricted to single-tasking on 8-bit CPUs with a maximum of 64 KB memory, subsequent releases introduced support for multi-user capabilities and transitioned to 16-bit processor architectures.
The structure of CP/M consists of three main components: the Basic Input/Output System (BIOS), which includes hardware-specific drivers; the Basic Disk Operating System (BDOS), responsible for file system handling and core services; and the Console Command Processor (CCP), a command-line shell that interprets commands and contains built-in functions.
CP/M established itself as the de facto standard operating system for microcomputers utilizing the S-100 bus, gaining widespread adoption in commercial environments from the late 1970s through the mid-1980s. By simplifying software portability across different hardware platforms, it significantly expanded both hardware and application software markets. The availability of cost-effective CP/M-based machines encouraged innovation among independent software developers and user communities. However, CP/M's dominance diminished following the introduction of the IBM Personal Computer in 1981 alongside its proprietary DOS platform.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development kit, interfacing with a Shugart Associates 8-inch floppy-disk drive through a specialized controller.[1] The system was programmed using Kildall’s own language, PL/M (Programming Language for Microcomputers).[2] CP/M’s design drew inspiration from the TOPS-10 operating system running on the DECsystem-10, which Kildall had experience using.[3]
The operating system was compatible with numerous machines powered by the 8080 and Z80 processors. One of its first licensees, Gnat Computers, obtained rights in 1977 to deploy CP/M 1.0 on any microcomputer for $90. As demand escalated rapidly, Digital Research was able to raise licensing fees into the tens of thousands.[4]
John Pierce led development on CP/M version 2.0 in 1978 under Kildall’s direction. Joining Digital Research in 1979, Kathryn Strutynski played a critical role in debugging CP/M 2.0 and contributed extensively to later versions such as CP/M 2.2 and CP/M Plus. Other notable contributors included Robert "Bob" Silberstein and David "Dave" K. Brown.[5][6]
The acronym originally stood for "Control Program/Monitor",[7] but by 1977 it was officially registered as "Control Program for Microcomputers".[8] This change aligned with naming trends seen in Kildall’s PL/M language and IBM’s CP/CMS operating system, emphasizing their microcomputer orientation. Alongside his spouse and business collaborator Dorothy McEwen,[9] Kildall sought to commercialize both CP/M and PL/M under the Digital Research brand, aspiring to make it synonymous with microcomputing—much like IBM and Microsoft would later achieve in personal computing. The company initially named Intergalactic Digital Research, Inc. was subsequently renamed Digital Research, Inc.[9]
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with the actual user base likely larger due to sublicensing agreements. A variety of manufacturers developed CP/M-based computers targeting different sectors; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Even companies that had their own proprietary operating systems, such as Heath/Zenith with HDOS, offered CP/M as an alternative on their 8080/Z80 machines—unlike the popular 6502 CPU market, which lacked a similar standard.[10] The adoption of CP/M was largely driven by its broad software ecosystem. For instance, the Xerox 820 employed CP/M specifically because of its extensive program library.[11] To address Digital Research's inadequate documentation,[12] Xerox released a Howard W. Sams manual for CP/M, since the original materials were criticized for being incomplete and poorly organized.[13]
By 1984, Columbia University had compiled Kermit binaries for more than a dozen CP/M variants from a unified source code base.[14] CP/M was described as a "software bus",[15][16] facilitating standardized communication between hardware and software.[17] Applications were generally portable across different hardware platforms, requiring only adjustments to terminal and printer control codes. This cross-platform compatibility significantly contributed to CP/M’s widespread adoption and the volume of available software compared to operating systems tied to specific hardware brands. However, some drawbacks included programs utilizing the Z80’s extended instruction set, which was incompatible with 8080/8085 processors, and machine-dependent graphics routines often used in games that bypassed the OS to enhance performance.
Bill Gates identified the combination of the Apple II with a Z-80 SoftCard as the leading hardware platform for CP/M.[18] By 1982, Digital Research announced that over 450 distinct computer models had licensed CP/M.[19] Prominent machines running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and various MSX models. The best-selling system compatible with CP/M was likely the Amstrad PCW. In the United Kingdom, CP/M operated on Research Machines educational computers (whose source code was published for educational purposes) and on the BBC Micro via an added Z80 co-processor. Additionally, it supported machines such as the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. CP/M 3 served as the operating system for the NIAT handheld computer developed for A. C. Nielsen, equipped with 1 MB of solid-state disk memory.
Multi-user Capabilities
In 1979, Digital Research introduced MP/M, a multi-user variant derived from CP/M that enabled several terminals to connect simultaneously to a single computer, granting each user an independent session interface. Subsequent releases expanded support to include 16-bit processors.
CP/M Plus
The last 8-bit iteration of CP/M, known as CP/M Plus or CP/M 3, was introduced in 1983 featuring a BDOS developed by David K. Brown. This version incorporated bank switching memory management adapted from MP/M into a single-user operating system that remained compatible with CP/M 2.2 applications. It allowed the use of memory exceeding 64 KB on 8080 or Z80 processors. Enhancements included file date stamping and the addition of a relocating assembler and linker. CP/M Plus found adoption in later 8-bit platforms such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the Radio Shack TRS-80 Model 4.
16-bit versions
Digital Research created multiple CP/M variants tailored for 16-bit processors.
The initial release was CP/M-86, designed for the Intel 8086 and launched in November 1981 under project lead Kathryn Strutynski. To differentiate it from the original CP/M, the earlier version became known as CP/M-80. Although CP/M-86 was anticipated to serve as the IBM PC's primary operating system, licensing conflicts led IBM to select Microsoft’s PC DOS, which was based on 86-DOS. Despite legal pressure prompting IBM to offer CP/M-86 as an alternative, its significantly higher price ($240 compared to PC DOS's $40) restricted widespread acceptance.
The Digital Equipment Corporation Rainbow 100 supported running CP/M-80 on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously through CP/M-86/80—thus protecting users’ investments by maintaining compatibility with existing 8-bit software. Similarly, the CompuPro System 816 implemented a dual-processor solution called CP/M 8-16. The Zenith Z-100 also enabled execution of programs across its two CPUs using adapted versions of CP/M.
Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 processor. Originally developed in Pascal/MT+68k before being ported to C, this version ran on systems like Motorola EXORmacs and SORD M68 computers. It was considered for use on the Atari ST but was ultimately supplanted by GEMDOS.
In that same year, CP/M-8000, a port of CP/M-68K for the Zilog Z8000 CPU found in the Olivetti M20, was created using C programming language.
These 16-bit variants necessitated recompiling software applications. To facilitate this transition, Digital Research offered utilities such as XLT86, which converted Intel 8080 assembly source code into Intel 8086 assembly language while optimizing code size and adjusting calling conventions. This tool eased migration from CP/M-80 and MP/M-80 to their respective 16-bit versions and was available on both CP/M-80 and VAX/VMS platforms.
Displacement by MS-DOS
By the early 1980s, approximately 2,000 applications had been developed for CP/M, positioning it as the anticipated standard operating system for 16-bit machines. In 1980, IBM approached Digital Research to license CP/M for its forthcoming IBM Personal Computer but failed to obtain a signed non-disclosure agreement. Consequently, IBM contracted Microsoft to supply an operating system.
MS-DOS incorporated numerous foundational elements from CP/M, such as file management structures and drive letter assignments (A:, B:, etc.). Its principal advancement was the implementation of the FAT file system, which simplified porting popular CP/M applications like WordStar and dBase. Additionally, MS-DOS supported greater memory capacity (typically exceeding 64 KB on IBM PCs versus CP/M's minimum of 16 KB), enabling more commands built into its command-line interface and improving performance and usability on floppy disk-based systems.
Early IBM PC expansion cards like Baby Blue permitted execution of existing 8-bit CP/M software not yet available for MS-DOS. However, by 1982 industry evaluations favored MS-DOS for its superior speed and user experience. By 1984, attempts to introduce CP/M into the consumer market largely faltered due to elevated software prices. By 1986, manufacturers such as Kaypro discontinued production of CP/M-based machines in favor of MS-DOS compatible hardware. As microcomputing gravitated toward IBM-compatible platforms, CP/M rapidly lost market share and never regained its former dominance. Major industry publications including Byte magazine phased out coverage of CP/M within a few years following the IBM PC launch.
Subsequent releases of CP/M-86 enhanced compatibility with MS-DOS and performance improvements; these were rebranded as DOS Plus and later evolved into DR-DOS.
ZCPR
ZCPR (Z80 Command Processor Replacement) was launched on 2 February 1982 as a direct substitute for Digital Research's console command processor (CCP). It was created by a hobbyist collective called "The CCP Group," led by Richard Conn. The initial version, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey.
The subsequent release, ZCPR2, arrived on 14 February 1983 as a set of ten disks from SIG/M and was later updated to version 2.3. This iteration was also ported to work with 8080 and 8085 processors. To commercialize the next edition while continuing to offer it freely, Conn and Frank Gaude established Echelon Inc. ZCPR3 was introduced on 14 July 1984 via nine SIG/M disks, incorporating features such as shells, aliases, input/output redirection, flow control mechanisms, named directories, search paths, customizable menus, password protection, and online assistance. A streamlined variant operated on 8080-based systems lacking the Z80 CPU.
In January 1987, after Conn ended his involvement, Jay Sage advanced ZCPR to version 3.3. This update discontinued support for the 8080 platform and incorporated numerous enhancements and utilities. Despite strong enthusiasm from CP/M users, ZCPR was unable to reverse the overall decline of CP/M.
Hardware model
A basic CP/M system running on an 8-bit architecture typically included:
- An ASCII-compatible terminal
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- NEC's V20 and V30 processors enabled 8080 emulation, allowing CP/M to run on PC-DOS/MS-DOS hardware; PC-compatible machines could operate CP/M-86
- A minimum of 16 KB RAM beginning at address zero
- A bootstrap process loading from the first sector of a floppy disk
- At least one floppy disk drive
Digital Research officially supported only the Intel 8080 Development System; other vendors adapted CP/M to suit their hardware setups. The Z80’s backward compatibility with 8080 instructions allowed many devices and applications to operate CP/M with tailored BIOS modifications.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system aimed at lower-cost machines lacking disk drives. This OS first appeared in Sharp’s MZ-800 cassette-based computer with optional disk support and utilized the extended Z80 instruction set rather than maintaining full compatibility with the 8080. American Microsystems introduced the S83 microprocessor featuring integrated ROM for OS and BIOS alongside dynamic RAM interface logic, priced at $32 per unit in bulk.
Most systems employed a minimal ROM bootloader combined with bank switching or bus injection techniques to load CP/M into RAM at address zero; some required manual entry of bootstrap code through front-panel switches.
CP/M used the standard 7-bit ASCII character set; however, extended 8-bit character usage varied between manufacturers—for instance, Kaypro incorporated Greek characters, Osborne computers used the eighth bit to indicate underlining, and WordStar marked word endings differently. International editions typically replaced certain ASCII characters in accordance with ISO 646 standards rather than extending beyond seven bits.
Components
When operational in memory, CP/M consists of three primary components:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
The BIOS and BDOS remain resident in memory continuously, whereas the CCP stays resident unless temporarily replaced by an application; it reloads automatically afterward. Standard utility commands exist as transient programs stored in files with a .COM extension.
The BIOS manages hardware elements aside from the CPU and main memory, overseeing tasks like character input/output and reading or writing disk sectors. BDOS handles the file system along with input/output abstractions such as redirection layered atop BIOS functions. The CCP interprets user commands—executing internal commands like DIR for directory listings or launching executable transient commands such as PIP.COM for file copying. Third-party applications also function as transient commands.
While BDOS, CCP, and standard transient commands remain uniform across CP/M versions, BIOS must be customized for each hardware platform.
Expanding system memory necessitates reinstalling CP/M so that transient programs can utilize additional space. The MOVCPM utility relocates object code to new memory areas by adjusting addresses within jump and subroutine instructions. This modified OS can then be saved on a new disk to enable applications to access expanded memory regions. The operating system components reside in reserved disk sectors used during booting; at startup, a bootloader loads these components from drive A:.
By contemporary standards, CP/M is rudimentary due to tight limits on program size. Early releases did not detect disk changes automatically—users risked data corruption if disks were swapped without rereading directory information. Beginning with version 1.1, attempts to write before reading a new disk’s directory trigger a fatal error preventing overwriting but requiring a system reboot.
Most complexity resides within BDOS; CCP and transient commands play smaller roles. Porting BIOS routines to new hardware allowed the entire OS to function with minimal effort—significantly reducing development time and contributing to CP/M’s widespread adoption. This approach of hardware abstraction was innovative at its inception and has become standard practice in modern operating systems.
Console Command Processor
The Console Command Processor (CCP) is responsible for managing keyboard inputs and delivering output to the terminal interface. CP/M supports both printing and video terminals, with all user commands entered through the command line. The command prompt, commonly shown as A>, reflects the current default disk drive and updates when a different drive letter command (such as B:) is issued.
CP/M’s command-line environment was inspired by Digital Equipment Corporation’s Concise Command Language found in operating systems like RT-11 and OS/8. Commands are composed of a primary keyword followed by parameters, separated by spaces or specific delimiters. Internal commands execute directly within the CCP, whereas other commands launch transient executable programs from disk, allowing more memory availability by reloading CCP after these programs finish.
Several commands retain legacy names derived from DEC terminology—for instance, PIP (Peripheral Interchange Program) serves for file copying. Parameter conventions differ across programs, with no uniform option character employed.
Core CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient utilities encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands expanded to include DIRSYS/DIRS for system files, ERASE/ERASE for file removal, RENAME/REN, TYPE/TYP, and USER/USE to switch user numbers. Abbreviated forms of commands were also introduced. Transient commands in this version feature 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 fundamental tasks such as file management, console display output, and printing functions. Applications interact with BDOS by placing operation codes and parameters into processor registers before invoking a dedicated memory address. This consistent interface guarantees uniform functionality across varying hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) manages hardware-level operations including character input/output and disk sector handling. Although BDOS performs some disk buffering duties, BIOS customization is critical due to the diversity of hardware setups—differences in video adapters, serial interfaces, and I/O mechanisms demand tailored BIOS implementations. This layer of abstraction permits CP/M to function on a wide range of hardware despite their discrepancies. Since BIOS support for serial communications is minimal or sometimes nonexistent, CP/M programs utilizing modems often rely on user-installed overlays to provide serial port access.
Applications
CP/M served as the original environment for several notable software products such as WordStar (word processing), dBase (database management), Turbo Pascal (programming language), Multiplan (spreadsheet), and AutoCAD (computer-aided design). Early spreadsheet pioneers like VisiCalc and Sorcim’s SuperCalc initially launched on CP/M before moving to MS-DOS platforms. A variety of compilers and interpreters—including BASIC, FORTRAN, and PL/I—were available on CP/M, many supplied by early Microsoft releases.
Software distributed for CP/M commonly included installation utilities that adapted programs to different hardware formats; for instance, Kaypro II users converted disks from the Xerox 820 format into Kaypro-compatible versions. BASIC source code was frequently accessible to users, while copy protection measures were generally ineffective because CP/M’s standardized disk formats allowed software compatibility across systems.
Although limited graphical capabilities restricted video game development on CP/M, numerous text-based games such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction titles like the Zork series and Colossal Cave Adventure were ported to the platform. Infocom regularly published games compatible with CP/M. Lifeboat Associates also distributed user-generated software including XMODEM for reliable modem file transfers and the outline processor KAMAS.
Transient Program Area
In the initial CP/M versions designed for the 8080, 8085, and Z80 processors, the memory segment designated for application use was the Transient Program Area (TPA), located between address 0100 hexadecimal and the address preceding the BDOS start at 0006H. Although these CPUs supported addressing up to 64 KB, the actual TPA size varied depending on hardware configurations, as BIOS ROMs or video memory often occupied portions of the address space. To increase TPA capacity, some systems employed bank switching, which swapped out ROM or video memory as needed. CP/M 3.0 extended this concept by allowing segments of the BDOS itself to reside within bank-switched memory.
Debugging application
CP/M provided a built-in Dynamic Debugging Tool, commonly known as DDT, which facilitated memory inspection and modification, program module analysis, and stepwise execution control.
Resident programs
Initially, CP/M did not accommodate terminate and stay resident (TSR) programs as DOS did. Nevertheless, developers could intercept operating system calls to enhance functionality, enabling support for auxiliary desk accessory utilities such as SmartKey, a keyboard macro program that assigned predefined strings to keys. The release of CP/M 3 introduced Resident System Extensions (RSX), which could be dynamically loaded by the CCP without requiring transient programs through a mechanism called a null command file. Additionally, third-party solutions like Resident System Modules (RSMs) were retrofitted to CP/M 2.2 to provide comparable capabilities.
Software installation
Although CP/M standardized disk and console input/output via hardware abstraction layers, individual applications still required installation procedures to utilize device-specific features such as printers and terminals. These peripherals often depended on manufacturer-specific escape sequences—for instance, commands to enable bold text on printers—which users needed to configure manually through installation utilities. Since there was no centralized operating system service managing these devices, this configuration process had to be repeated for each software package.
Programs had to embed printer initialization codes internally. When using software like Wordstar with multiple printer models, users needed distinct program versions customized for each printer type and had to reload the corresponding version when switching printers.
Disk formats
The 128-byte sector, single-density, single-sided format developed for IBM System/34 and IBM 3740 became CP/M's standard floppy disk format for 8-inch media. In contrast, no universal 5.25-inch disk format existed under CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented proprietary formats. Although most software was distributed in the Xerox 820 format compatible with systems like Kaypro II, InfoWorld estimated in 1981 that approximately two dozen disk formats had sufficient popularity for software vendors to consider supporting them broadly. 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 in addition to an 8-inch version. Ellis Computing supported both Heath formats along with 16 other 5.25-inch variants including TRS-80 CP/M types. Lifetree and other distributors also converted CP/M applications across diverse platforms.
CP/M allowed customization of reserved areas and directory structures on disks as well as logical-to-physical sector mapping; however, no standardized approach existed for loading configuration parameters from disks formatted on different systems. While nearly all CP/M computers equipped with 8-inch drives could read IBM's single-sided, single-density format, cross-system compatibility depended heavily on the specific disk drive and controller due to variations in floppy disk characteristics—such as hard versus soft sectoring, single or double density/sidedness, track counts ranging from 35 to 80, and differing sector layouts.
By 1982, soft-sectored, single-sided 40-track 5.25-inch disks had become predominant for CP/M software distribution among consumer-grade machines including Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC compatibles. Disk translation utilities enabled reading disks from compatible formats; for instance, Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson systems. However, certain disk types—such as those with 80 tracks or hard-sectoring—remained unreadable. Apple II users were constrained to Apple's GCR disk format and had to obtain CP/M software on Apple-formatted disks or transfer data via serial connections.
This fragmented landscape of disk formats compelled distributors to maintain inventories of multiple disk types or invest in multi-format duplication hardware—a factor that contributed to CP/M's decline after 1981 compared with the more uniform disk formats adopted by the IBM PC platform.
Among notable late-era CP/M-compatible machines was the Commodore 128 released in 1985, which incorporated a Z80 processor dedicated to running CP/M alongside its native 6502-based CPU. This system required a 1571 or 1581 drive capable of reading soft-sectored 40-track MFM disks.
The first computer equipped with a 3.5-inch floppy drive running CP/M was the Sony SMC-70. Additional systems supporting CP/M on 3.5-inch media 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 supported both 3.5-inch floppy drives and RAM disks via compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to the smaller 3.5-inch format.
File system
File names adhered to the 8.3 naming convention, allowing up to eight characters, followed by a dot and a three-letter extension that indicated the file type (for instance, .COM for executable files and .TXT for text documents). When entered at the command line, filenames were automatically converted to uppercase, although certain applications such as MBASIC could generate lowercase filenames, which were more difficult to access.
Disk drives were denoted by letters (e.g., A:, B:). To specify files on a particular drive, the drive letter and colon were prefixed to the filename (e.g., A:FILE.TXT); if omitted, the system assumed the current drive.
File size was recorded in units called 128-byte records, equivalent to disk sectors; precise byte counts were generally unsupported. Text files typically concluded with a control-Z character (ASCII SUB, hex 1A) serving as an end-of-file marker, influencing how text editors managed file truncation.
With the advent of larger removable and fixed disks, disk de-blocking increased logical allocation block sizes from 1 KB on single-density disks up to 32 KB, which often led to inefficient storage utilization when handling numerous small files.
CP/M 2.2 did not include file modification timestamps; however, these were introduced optionally in MP/M and CP/M 3.0.
While CP/M 2.2 lacked subdirectories, it provided 16 numbered user areas for file organization. Users could switch between these areas using the "User X" command, isolating files within each area except for USER 0, which was accessible across all users. This feature facilitated file management on systems equipped with hard drives and supported distinct workflows or multiple users on one machine—for example, separating data entry from billing operations. Security was minimal, reflecting CP/M’s original design focus on single-user personal computers rather than multi-user environments.
Graphics
Despite early availability of graphics-capable S-100 systems, CP/M did not have standardized graphics support until the introduction of GSX in 1982. Due to memory constraints, graphics usage was rare on 8-bit CP/M machines, which mainly displayed simple ASCII art or employed customized character sets. Certain models such as the Kaypro series and the TRS-80 Model 4 offered block graphics accessible to programmers using assembler or BASIC. The TRS-80 Model 4 could achieve a resolution of 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Several companies developed official enhancements to CP/M based on Digital Research’s source code. An example is IMDOS, designed for the IMSAI 8080, a clone of the Altair 8800.
Compatible
A variety of independent operating systems compatible with CP/M emerged without utilizing Digital Research’s codebase, including:
- Cromemco CDOS by Cromemco
- MSX-DOS, designed for MSX computers and compatible with CP/M software
- Epson QX-10, which provided CP/M alongside TPM-II or TPM-III
- The British SAM Coupé, offering optional Pro-DOS compatible with CP/M-2.2
- Amstrad/Schneider CPC and PCW models bundled disk packs containing CP/M
- Husky (computer), running DEMOS—a ROM-based loader supporting numerous CP/M applications
- ZSDOS, a replacement BDOS for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free operating system compatible with CP/M 2.2 initially without Digital Research code; since 2022 it includes some original DR components authorized by Lineo’s president
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is compatible with CP/M 2.2 and contains BIOS, BDOS, CLI source code along with original DR code and utilities enabling hot-swapping of OS modules
- IS-DOS for the Enterprise, created by Intelligent Software
- VT-DOS for the Videoton TV Computer, also developed by Intelligent Software
Feature Improvements
Certain CP/M-compatible operating systems notably enhanced capabilities, with examples like the multi-processor enabled TurboDOS standing out.
Eastern Bloc Variants
Within the former Eastern Bloc, numerous CP/M-80 variants were developed under a variety of 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. The CP/M-86 family featured derivatives such as SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by entities like the East German VEB Robotron alongside other producers.
Enduring Influence
Several conventions in Microsoft Windows can be traced back to legacy support for MS-DOS, which itself sought to maintain compatibility with CP/M. Elements such as the drive letter assignment and the 8.3 filename format in both MS-DOS and early Windows versions were inherited directly from CP/M. The use of wildcard symbols (? and *) also originates from CP/M conventions, as do special reserved filenames used for output redirection like "PRN:" (printer) and "CON:" (console). The practice of labeling floppy disk drives as A and B and assigning C to hard drives was established by CP/M systems. Additionally, the control character ^Z employed to signify end-of-file in some text files has its roots in CP/M. Numerous DOS commands including DIR, REN/RENAME, and TYPE were modeled after their CP/M counterparts. File extensions such as .TXT and .COM continue to serve as identifiers for file types across multiple operating environments.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open source license. This facilitated redistribution and modification of Digital Research’s CP/M and MP/M related files through Tim Olmstead’s initiative known as "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—the rights holder—broadened the licensing terms later that same year. In October 2014, the Computer History Museum commemorated CP/M’s 40th anniversary by releasing early versions of its source code.
As of 2018, a community of vintage computing enthusiasts alongside select niche commercial enterprises continue to develop and maintain computer platforms predominantly running CP/M 2.2 as their core operating system.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently derived OS 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" (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 (archived)
- "Triumph of the Nerds," PBS — detailing IBM's selection of Microsoft DOS over Digital Research's CP/M for the IBM PC
- CP/M FAQ at comp.os.cpm and Digital Research website
External links
- The Unofficial CP/M Website (Tim Olmstead) – provides access to source code
- Gaby Chaudry's CP/M and Computer History site – contains materials related to ZCPR
- CP/M Central Page – a technical reference by John C. Elliott
- MaxFrame's Digital Research CP/M page (archived)
- ↑ 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 - ↑ Freiberger, Paul; Michael Swaine (2000). Fire in the Valley: The Making of the Personal Computer. McGraw-Hill. p. 175. ISBN 0071358927 – via the Internet Archive.
- ↑ 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 namedStrutynski_2010 - ↑ 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 - ↑ 9.0 9.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