CP/J
| Company type | Private |
|---|---|
| Industry | Software, Operating systems |
| Predecessor | Intergalactic Digital Research, Inc. |
| Founded | 1974 |
| Founder | Gary Kildall |
| Fate | Supplanted by MS-DOS |
| Headquarters | United States |
Area served | Microcomputer platforms (Intel 8080, 8085, Z80, 16-bit processors) |
Key people | Gary Kildall, Kathryn Strutynski, John Pierce, Robert Silberstein, David K. Brown, Dorothy McEwen |
| Products | CP/M, MP/M, CP/M Plus, CP/M-86, CP/M-68K, CP/M-8000 |
CP/M, an acronym initially meaning Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely distributed operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and Intel 8085-based microcomputer platforms. This disk operating system was designed to manage files stored on magnetic media and facilitate the loading of software from disk drives. While its earliest iterations supported only single-tasking on 8-bit processors with a maximum of 64 kilobytes of memory, subsequent versions introduced multi-user functionality and compatibility with 16-bit processor architectures.
The architecture of CP/M consists primarily of three elements: the Basic Input/Output System (BIOS), responsible for device driver management; the Basic Disk Operating System (BDOS), which administers the file system and core system services; and the Console Command Processor (CCP), a command-line interface providing built-in command execution.
During its peak, CP/M established itself as the de facto standard operating system for microcomputers, particularly those utilizing the S-100 bus, gaining widespread adoption in business environments from the late 1970s through the mid-1980s. By enabling easier application portability across hardware from various manufacturers, it significantly broadened both hardware and software markets. The availability of cost-effective CP/M-compatible microcomputers encouraged software development innovation, supported by vibrant independent developers and user communities. Eventually, CP/M’s dominance was supplanted by DOS following the 1981 introduction 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, employing a Shugart Associates 8-inch floppy-disk drive with a specialized controller.[1] The system was programmed in Kildall’s proprietary language, PL/M.[2] CP/M drew inspiration from the TOPS-10 OS used on the DECsystem-10, which Kildall had experience with.[3]
CP/M provided support for a wide range of machines based on the 8080 and Z80 processors. One of its early licensees, Gnat Computers, acquired rights to CP/M 1.0 in 1977 for $90, which helped Digital Research grow its licensing income into the tens of thousands.[4]
Under Kildall’s direction, John Pierce developed CP/M version 2.0 in 1978. Kathryn Strutynski joined Digital Research Inc. as its fourth employee in early 1979, initially focusing on debugging CP/M 2.0 before making major contributions to CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert "Bob" Silberstein and David "Dave" K. Brown.[5][6]
Originally abbreviated as "Control Program/Monitor,"[7] CP/M was rebranded as "Control Program for Microcomputers" during its commercial phase in 1977.[8] This renaming aligned with naming trends such as Kildall's own PL/M language and IBM’s CP/CMS systems, emphasizing its microcomputer orientation. The rebranding was part of a deliberate strategy by Kildall, his wife, and business associate Dorothy McEwen to position Digital Research as a premier microcomputer software company, aspiring to make its name synonymous with "microcomputer," akin to how IBM and Microsoft later became identified with "personal computer." Consequently, Intergalactic Digital Research, Inc. was 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 higher due to sublicensing arrangements. A variety of manufacturers developed CP/M-compatible computers targeting different segments; InfoWorld recognized CP/M as becoming 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 option for their 8080/Z80-based machines—unlike the 6502 processor market, which lacked a similar universal OS standard.[10] The driving factor behind this was CP/M’s vast software ecosystem. For instance, the Xerox 820 adopted CP/M to take advantage of its extensive program library.[11] To compensate for Digital Research’s inadequate documentation, Xerox included a Howard W. Sams CP/M manual; however, InfoWorld criticized this guide for being incomplete and poorly organized.[12][13] By 1984, Columbia University utilized CP/M source code to create Kermit executables compatible with over a dozen CP/M variants plus two generic builds.[14]
CP/M was characterized as a "software bus",[15][16] facilitating communication among multiple applications and diverse hardware through a unified interface.[17] Applications were largely portable between different machines, typically requiring only modifications to terminal and printer escape sequences. This adaptability contributed significantly to CP/M’s widespread adoption and richer software catalog compared to operating systems tied exclusively to specific hardware models. However, some drawbacks existed: certain programs leveraged the Z80’s enhanced instruction set, limiting their functionality on 8080/8085 CPUs, and some games incorporated hardware-specific graphics routines that bypassed the OS to improve performance.[18]
Bill Gates identified the combination of the Apple II and a Z-80 SoftCard as the leading CP/M hardware configuration.[19] By 1982, Digital Research announced that CP/M had been licensed for use on over 450 distinct computer systems.[20] Prominent platforms included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The most commercially successful CP/M-capable device was likely the Amstrad PCW. In the United Kingdom, CP/M was accessible on Research Machines educational computers (with source code openly available for instructional purposes), on the BBC Micro equipped with a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 served as the operating system for the NIAT handheld computer developed for internal use by A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user
In 1979, Digital Research introduced MP/M, a multi-user adaptation of CP/M that enabled several terminals to connect simultaneously to a single computer, providing each user with independent input and output channels. Subsequent releases expanded support to include 16-bit processors.
CP/M Plus
Released in 1983, CP/M Plus (also known as CP/M 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 compatible with CP/M 2.2 applications, allowing access to more than 64 KB of memory on 8080 or Z80 CPUs. Enhancements included file date stamping and integrated utilities such as a relocating assembler and linker. CP/M 3 was designed for advanced 8-bit machines like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.
16-bit versions
Digital Research extended CP/M functionality to 16-bit processors, beginning with CP/M-86 for the Intel 8086, released in November 1981 under the management of Kathryn Strutynski. To distinguish it from the original, the initial 8-bit version became known as CP/M-80.
Although CP/M-86 was anticipated to be the IBM PC’s default operating system, licensing disagreements led IBM to collaborate with Microsoft for PC DOS, based on 86-DOS. While CP/M-86 was later offered as an alternative, it struggled to compete due to its higher price point ($240 compared to $40 for PC DOS).
The DEC Rainbow 100 supported multiple operating environments: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously—allowing users to preserve their existing 8-bit software investments while transitioning toward 16-bit platforms. Comparable dual-processor configurations were available in systems such as the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.
Following CP/M-86, CP/M-68K was developed in 1982 for the Motorola 68000 processor. Initially coded in Pascal/MT+68k and subsequently ported to C, it operated on EXORmacs hardware and was considered for Atari ST (which ultimately selected GEMDOS) as well as SORD M68 models.
That same year saw the creation of CP/M-8000 for the Zilog Z8000 processor on the Olivetti M20 platform, implemented in C.
These 16-bit variants required applications to be recompiled. To assist with this transition, Digital Research provided utilities like XLT86 that converted Intel 8080 assembly (.ASM) into Intel 8086 assembly (.A86), optimizing code size and adapting calling conventions. This facilitated porting software from CP/M-80 and MP/M-80 to their respective CP/M-86 and MP/M-86 counterparts. XLT86 was accessible on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately 2,000 applications had been developed for CP/M, positioning it as the expected standard OS for emerging 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a CP/M version for its IBM Personal Computer. After negotiations faltered due to an unsigned non-disclosure agreement, IBM instead contracted Microsoft to supply the operating system.
MS-DOS retained many foundational elements from CP/M, including file management structures and drive letter assignments (A:, B:, etc.). Its primary advancement was the adoption of the FAT file system, which simplified porting popular CP/M software such as WordStar and dBase. MS-DOS also utilized more memory (commonly at least 64 KB on IBM PCs versus CP/M’s minimum of 16 KB), enabling a richer set of built-in commands within its command-line interface and enhancing performance and usability on floppy disk systems.
Despite early hardware solutions like the Baby Blue card that allowed running CP/M applications on IBM PCs, MS-DOS swiftly established dominance. In 1982, BYTE magazine characterized MS-DOS as "more user-friendly, faster, with many more advantages." By 1984, high software costs hindered CP/M’s adoption in home computing markets. By 1986, manufacturers such as Kaypro ceased producing CP/M-based machines in favor of MS-DOS platforms. As microcomputing gravitated toward IBM compatibility standards, CP/M rapidly lost market presence and industry attention.
Later releases of CP/M-86 enhanced performance and compatibility with MS-DOS under the name DOS Plus, which eventually evolved into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was introduced on 2 February 1982 as a direct substitute for the console command processor (CCP) developed by Digital Research. The project was initiated by a group of enthusiasts known as "The CCP Group," which included Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, and Richard Conn, with Conn playing a pivotal leadership role.
The initial version, ZCPR1, appeared on a SIG/M disk (Special Interest Group/Microcomputers). This was followed by ZCPR2 on 14 February 1983, distributed as ten SIG/M disks. Later updates brought it to version 2.3 and expanded compatibility by porting the code to the 8080 processor architecture.
To commercialize subsequent iterations while keeping the software freely available, Richard Conn partnered with Frank Gaude to establish Echelon Inc. On 14 July 1984, ZCPR3 was launched via nine SIG/M disks and included a compilable variant for systems not based on the Z80. This version introduced numerous enhancements such as command shells, user-defined aliases, input/output redirection, flow control mechanisms, named directories, search path support, customizable menus, password protection, and integrated online help. After Conn halted development in January 1987, Jay Sage took over and advanced the software to ZCPR 3.3. This update removed support for the 8080 but incorporated many additional features and utilities. Despite its popularity among CP/M users, ZCPR was unable to halt the overall decline of the CP/M platform.
Hardware model
A fundamental CP/M setup based on an 8-bit architecture required:
- A terminal capable of ASCII character display
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- NEC V20/V30 processors could emulate the 8080 instruction set to run CP/M on PC-DOS/MS-DOS hardware; any compatible PC clone could operate CP/M-86
- At least 16 KB of RAM starting at address zero
- The ability to bootstrap from sector zero of a diskette
- A minimum of one floppy disk drive
Digital Research officially endorsed only the Intel 8080 Development System; however, other manufacturers adapted CP/M to their specific hardware configurations. The Z80’s backward compatibility enabled numerous systems to execute CP/M by providing BIOS and applications tailored for its unique features.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system designed for lower-cost machines lacking disk drives. This OS first appeared in the cassette-driven Sharp MZ-800 with optional disk support and exploited enhanced Z80 instructions rather than maintaining full compatibility with the 8080 processor. American Microsystems released the S83 microprocessor featuring embedded ROM containing both OS and BIOS alongside dynamic RAM interface logic, priced at approximately $32 per unit in volume production.
Most systems employed a small ROM-based bootloader combined with bank switching or bus injection techniques to load CP/M into RAM at address zero; certain machines required manual bootstrapping using front-panel switches.
CP/M utilized the standard 7-bit ASCII character set; however, the upper half of each byte was not standardized and varied across manufacturers—for instance, Kaypro used these bits for Greek letters, Osborne applied them for underlining text, and WordStar designated them as end-of-word markers. International editions generally conformed to ISO 646 standards by substituting specific ASCII characters rather than extending beyond the 7-bit range.
Components
While active in memory, CP/M consists of three principal components:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
The BIOS and BDOS remain resident in memory continuously; the CCP also stays resident unless temporarily replaced by an application program, after which it is reloaded upon completion. Standard utility commands exist as transient .COM files stored on disk.
The BIOS handles hardware-specific functions excluding CPU and main memory management—this includes character input/output and disk sector operations. BDOS provides file system management and input/output abstractions such as redirection by building upon BIOS services. The CCP interprets user commands, executing internal commands like DIR or ERA or launching transient programs such as PIP.COM or STAT.COM. Third-party applications typically function as transient commands within this framework.
Across different CP/M installations of a given revision, BDOS, CCP, and standard transient commands remain uniform; only the BIOS is customized for particular hardware configurations.
Expanding system memory necessitates reinstalling CP/M so that transient programs can access additional space. The MOVCPM utility facilitates this by relocating object code to new memory regions through adjustments of absolute jump and call addresses—producing a patched OS version that is saved back to disk. The three core OS components reside in reserved disk locations enabling booting through a ROM-based bootloader from drive A:.
By contemporary standards, CP/M is fairly rudimentary due to constraints on program size. Early releases lacked mechanisms to detect disk changes automatically; if disks were swapped without refreshing directory information, data corruption could occur. Starting with version 1.1, attempts to write without rereading directories trigger a fatal error that prevents overwriting but requires a system reboot.
The majority of system complexity lies within BDOS and to a lesser degree in CCP and transient commands. This modular architecture allowed porting efforts to focus solely on rewriting the BIOS for new hardware platforms—facilitating rapid adaptation across diverse machines and contributing significantly to CP/M’s widespread popularity. This early implementation of a hardware abstraction layer was innovative during an era when operating systems typically targeted single hardware platforms exclusively.
Console Command Processor
The Console Command Processor (CCP) handles keyboard inputs and outputs responses on the terminal screen. CP/M accommodates both video and printer terminals, with user commands entered through the command line. Typically, the prompt indicates the active default disk drive (for example, A>), which updates when a different drive letter followed by a colon (such as B:) is entered to change drives.
The command-line interface of CP/M draws inspiration from Digital Equipment Corporation’s Concise Command Language, used in operating systems like RT-11 and OS/8. Commands are structured as keywords followed by parameters separated by spaces or special delimiters. Commands internal to the CCP are executed immediately; otherwise, the processor loads executable transient programs from the current disk and user area. After these programs finish execution, BDOS reloads the CCP if it has been overwritten, thereby freeing additional memory for transient applications.
Certain commands retain legacy names reflecting DEC heritage, such as PIP (Peripheral Interchange Program), which is used for copying files. The format of parameters varies across programs, with no universal standard for option characters.
Among the built-in CCP commands are DIR, ERA, REN, SAVE, TYPE, and USER. Frequently used transient commands include ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands were expanded to feature DIRSYS/DIRS for system file management, ERASE/ERASE for file removal, RENAME/REN for renaming files, TYPE/TYP to display ASCII files, and USER/USE for changing user areas. This version also supports abbreviated forms of built-in commands. The suite of transient commands grew to include utilities like COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, SET, SHOW, SUBMIT, among others, enhancing CP/M’s capabilities for business-oriented tasks.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees key functions such as file management, console output handling, and printing operations. Applications communicate with BDOS by loading registers with specific function codes and parameters before invoking a fixed memory address. This uniform interface ensures software compatibility across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers the fundamental low-level services required by the operating system, including character input/output and reading or writing of disk sectors. While BDOS manages buffering of diskette data, it presumes a constant sector size of 128 bytes prior to CP/M 3.0; therefore, BIOS is responsible for adapting to different disk formats.
Due to the wide variety of hardware configurations—ranging from integrated video displays versus external terminals to diverse UART chips used in serial ports and differing input/output techniques such as memory-mapped I/O—BIOS customization is crucial. It abstracts these hardware-specific details by providing standard service entry points that CP/M functions utilize. Modem support within BIOS is limited or often nonexistent; consequently, CP/M applications frequently rely on user-supplied overlays to enable serial port communications.
Applications
CP/M served as the platform for several pioneering software titles that shaped early computing, including WordStar for word processing and dBase for database management. Other significant programs encompassed outlining tools like KAMAS and Out-Think, the influential Turbo Pascal (which laid the groundwork for Borland Delphi), Multiplan (a forerunner to Microsoft Excel), as well as early spreadsheet applications such as VisiCalc and SuperCalc. Notably, SuperCalc dominated the CP/M spreadsheet market before transitioning to MS-DOS. The debut of AutoCAD also occurred on CP/M. A diverse array of compilers and interpreters was available, supporting languages including BASIC, Turbo Pascal, FORTRAN, and PL/I, with early offerings from Microsoft among them.
Software designed for CP/M commonly featured installers that facilitated adaptation across various hardware configurations. For instance, users of the Kaypro II could convert software from Xerox 820 disk formats to those compatible with their system. Many applications provided source code in BASIC, and copy protection measures were generally ineffective due to CP/M’s uniform disk formatting, which ensured broad compatibility among different programs.
The limited availability of standardized graphics capabilities restricted the development of video games on CP/M; nevertheless, numerous text-based games were ported to the platform. Titles such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction classics like the Zork series and Colossal Cave Adventure, were accessible on CP/M. Infocom consistently released many of its games in a CP/M-compatible format. Additionally, Lifeboat Associates distributed user-created freeware utilities like XMODEM, which provided reliable file transfers over modems. The outline processor KAMAS also originated within the CP/M environment.
Transient Program Area
In the original CP/M implementations for processors such as the 8080, 8085, and Z80, the memory region designated for application use—known as the Transient Program Area (TPA)—spanned from address 0100 hexadecimal up to just below the address stored at 0006H, which marks the lowest BDOS entry point. Although these CPUs could address up to 64 KB of memory, the actual size of the TPA depended on system architecture; some reserved portions of address space for BIOS ROM or video memory. To maximize TPA size, bank switching was frequently employed to swap out ROM or video memory segments. In CP/M 3.0, parts of the BDOS itself could be located within bank-switched memory areas.
Debugging application
CP/M included a built-in debugging utility known as the Dynamic Debugging Tool (DDT). This tool allowed users to inspect and modify memory contents and program modules interactively, as well as execute programs one instruction at a time for detailed analysis.
Resident programs
Initially, CP/M did not support terminate-and-stay-resident (TSR) programs akin to those found in DOS. Nonetheless, developers could extend operating system functionality by intercepting system calls, enabling auxiliary utilities such as SmartKey, a keyboard enhancement tool. With the release of CP/M 3, support was introduced for dynamically loadable Resident System Extensions (RSX), which could be loaded independently via "null command files" without requiring a transient program. Similar capabilities were retrofitted into CP/M 2.2 through third-party solutions like Resident System Modules (RSMs).
Software installation
Although CP/M standardized interfaces for disk and console input/output operations, individual applications generally required installation procedures to configure hardware-specific features like printers and terminals. Device control often depended on manufacturer-specific escape sequences—for example, commands to activate bold text varied between printer models. Installation utilities enabled users to select their devices and customize these control sequences accordingly. Because no centralized operating system service managed hardware devices, this configuration process had to be performed separately for each application.
Printer initialization codes were embedded directly within programs; consequently, using software such as WordStar with multiple printer types necessitated maintaining distinct versions tailored to each printer model. Users needed to launch the version matching their current printer and exit and reload programs when switching between different printers.
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 systems. In contrast, no universal 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own unique formats. Among these, certain formats gained more traction—most software was distributed in the Xerox 820 format, which was compatible with systems like the Kaypro II. However, in 1981, InfoWorld estimated that approximately two dozen disk formats were common enough to merit consideration by software developers. For instance, JRT Pascal was released on multiple 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain platforms, along with a separate 8-inch version. Ellis Computing supported both Heath formats plus sixteen additional 5.25-inch variants, including TRS-80 CP/M versions. Distributors such as Lifetree routinely adapted CP/M applications to operate across diverse hardware.
Disk formats varied significantly depending on system design and characteristics of the media. While CP/M permitted customization of reserved areas, directory structures, and logical-to-physical sector mapping, there was no standardized approach for loading disk parameters from disks formatted on different machines.
Almost all CP/M computers equipped with 8-inch drives could read the IBM single-sided, single-density format; however, compatibility with other disk formats depended heavily on the specific drive and controller hardware due to a wide range of floppy variations—including soft or hard sectoring, single or double density and sidedness, and track counts ranging from 35 to 80. Software utilities existed to translate between similar formats from different systems—for example, the Kaypro II was capable of reading disks formatted for TRS-80, Osborne 1, IBM PC, and Epson QX-10 computers. Nevertheless, certain disk types such as 80-track or hard-sectored disks were not interoperable across platforms. Users of the Apple II were restricted to Apple's proprietary GCR format and required either Apple-formatted disks or serial data transfers to access CP/M software.
This diversity in disk formats fragmented the CP/M ecosystem and compelled software distributors to maintain inventories of multiple disk types or invest in duplication hardware capable of handling various formats. Compared to the more uniform IBM PC disk standards, this fragmentation played a significant role in CP/M’s rapid market decline following 1981.
One of the later notable CP/M-compatible computers was the Commodore 128 introduced in 1985. It featured a Z80 processor dedicated to running CP/M alongside its native CPU and required a 1571 or 1581 drive to access soft-sector 40-track MFM floppy disks.
The first computer to incorporate a 3.5-inch floppy drive was the Sony SMC-70, which operated under CP/M 2.2. Other machines 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 (via Montezuma CP/M 2.2). Applied Engineering’s CP/AM allowed Apple II systems to use both 3.5-inch floppy drives and RAM disks on compatible memory expansion cards. The Amstrad PCW initially employed 3-inch floppy drives before transitioning to 3.5-inch media.
File system
CP/M file names adhered to the 8.3 filename convention, allowing up to eight characters for the name portion followed by a period and a file extension of up to three characters that indicated file type (e.g., .COM for executable files or .TXT for text documents). When entered at the command prompt, filenames were automatically converted to uppercase; however, some applications such as MBASIC could generate lowercase filenames, complicating command-line operations.
Disk drives were designated by letters (for example A:, B:), with files referenced by prefixing the drive letter and colon before the filename (e.g., A:FILE.TXT). If no drive letter was specified, file operations defaulted to the current drive.
File sizes were recorded in units called records, each consisting of 128 bytes corresponding to sectors on 8-inch disks; precise byte counts were generally unsupported. The operating system maintained file size information within the File Control Block (FCB). Text files typically ended with a control-Z character (ASCII SUB, hex 1A) serving as an end-of-file marker that influenced editing and truncation behavior.
With larger removable and fixed disks becoming available, disk de-blocking techniques increased allocation unit sizes—boosting blocks per file allocation unit but raising minimum allocation sizes from around 1 KB (in single-density) up to as much as 32 KB—resulting in reduced storage efficiency when managing numerous small files.
CP/M version 2.2 did not support file modification timestamps; this feature was optionally provided in MP/M and CP/M version 3.0.
Although subdirectories were absent in CP/M 2.2, it offered sixteen numbered user areas for organizing files. Users could switch between these areas using "User X" commands where X ranged from 0 to 15. Security was minimal due to personal computer usage patterns: files stored in USER area 0 were accessible by all users via appropriate path references while files in other user areas remained isolated from one another. This organization method proved useful on machines equipped with hard drives and supported multitasking environments—for example separating data entry operations from billing processes by assigning distinct user areas.
Graphics
While S-100 systems with graphical capabilities were available from the early days, CP/M did not include a unified graphics standard until the introduction of GSX in 1982. Due to constrained memory resources, graphical output was uncommon on 8-bit CP/M machines, which typically rendered basic ASCII art or employed specialized character sets. Certain models, such as the Kaypro line and the TRS-80 Model 4, incorporated video hardware that supported block graphics accessible through assembler programming or BASIC’s CHR$ function. The Model 4, when equipped with an optional high-resolution board, could produce graphics at a resolution of 640×240 pixels.
Official
A number of firms released official CP/M variants derived from Digital Research’s original source code. For instance, IMDOS was created specifically for the IMSAI 8080, itself a clone of the Altair 8800.
Compatible
Various independently developed CP/M-compatible operating systems appeared without utilizing Digital Research’s codebase, including:
- Cromemco CDOS developed by Cromemco
- MSX-DOS designed for MSX computers, supporting CP/M applications
- The Epson QX-10, which offered either CP/M or compatible TPM-II/III environments
- The British SAM Coupé, featuring an optional CP/M-2.2 compatible OS known as Pro-DOS
- Amstrad/Schneider CPC and PCW series that were bundled with CP/M disk sets
- The Husky (computer) running DEMOS, a ROM-based loader compatible with numerous CP/M programs
- ZSDOS, an alternative BDOS for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free operating system compatible with CP/M 2.2 initially developed without Digital Research code; following approval from Lineo’s president in 2022, developer David Given began incorporating original DR components including ZSDOS and ZCPR
- LokiOS, a CP/M 2.2 compatible OS released in 2023 by David Kitson for the Open Spectrum Project, containing BIOS, BDOS, CLI source code alongside original DR code and modular OS features
- IS-DOS for the Enterprise (computer), produced by Intelligent Software
- VT-DOS for the Videoton TV-Computer, also created by Intelligent Software
Enhancements
Certain CP/M-compatible systems extended core functionality significantly; notable among these is the multi-processor capable TurboDOS.
Eastern bloc
Within the former Eastern Bloc, multiple CP/M-80 derivatives circulated under various names such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, among others. Additionally, there were CP/M-86 variants including SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by East German companies like VEB Robotron. The precise origins—whether they stemmed from patched binaries, source code adaptations, or independent reimplementations—have not been definitively established.
Legacy
Numerous features in modern Microsoft Windows trace back to legacy support for MS-DOS, which itself inherited conventions from CP/M. MS-DOS adopted the drive letter assignments and the 8.3 filename format directly from CP/M. Wildcard symbols (? and *) used in Windows command processing originate from CP/M syntax, as do reserved device names such as "PRN:" and "CON:". The floppy drives labeled A and B in CP/M correspond to the same designations in Windows; hard disks traditionally start at drive C, maintaining continuity with the C:\> prompt seen today. The use of ^Z as an end-of-file marker in text files is another legacy from CP/M. DOS commands like DIR, REN/RENAME, and TYPE were modeled on their CP/M equivalents. File extensions such as .TXT and .COM continue to be widely utilized.
Between 1997 and 1998, Caldera made available CP/M version 2.2 binaries along with source code under an open-source license. This allowed redistribution and modification of Digital Research’s original files through Tim Olmstead’s "The Unofficial CP/M Web site." After Olmstead passed away in 2001, ownership transferred to Lineo, which updated and broadened the licensing terms. In October 2014, to commemorate its 40th anniversary, the Computer History Museum released early versions of the CP/M source code.
As of today, enthusiasts within vintage computing circles and certain niche businesses continue to maintain and develop platforms primarily running CP/M version 2.2 as their main operating system.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an operating system independently developed 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 (archived)
- Triumph of the Nerds, PBS documentary covering IBM’s selection of Microsoft DOS over Digital Research’s CP/M for the IBM PC
- CP/M FAQ available at comp.os.cpm and Digital Research archives
External links
- The Unofficial CP/M Web site – Features source code access
- Gaby Chaudry's Homepage for CP/M and Computer History – Contains ZCPR documentation
- CP/M Main Page – Technical resources 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 - ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
- ↑ 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 - ↑ 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 - ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
- ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
- ↑ 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 namedcitation needed - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedbunnell19820203 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedlibes198206
- Articles with short description
- CP/M
- CP/M variants
- Microcomputer software
- Disk operating systems
- Digital Research operating systems
- Discontinued operating systems
- Floppy disk-based operating systems
- Free software operating systems
- History of computing
- 1974 software
- Formerly proprietary software
- Pages with reference errors
- Pages with script errors