Single User Control Program
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall, Dorothy McEwen |
| Headquarters | United States |
Key people | Gary Kildall, John Pierce, Kathryn Strutynski, Robert Silberstein, David K. Brown |
| Products | CP/M operating system family (CP/M-80, CP/M-86, MP/M, CP/M Plus) |
CP/M, an acronym initially meaning Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely used operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. This disk operating system was engineered to manage file organization on magnetic disks and facilitate program loading from storage. While early iterations supported only single-tasking on 8-bit processors with a maximum of 64 kilobytes of RAM, subsequent versions introduced multi-user functionality and compatibility with 16-bit processor architectures.
The fundamental architecture of CP/M consists of three main parts: the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for handling hardware-specific drivers, BDOS manages file system operations and essential system services, and the CCP functions as the command-line interpreter, providing a set of built-in commands.
CP/M established itself as the de facto standard and the leading operating system for microcomputers, particularly those utilizing the S-100 bus. It gained extensive adoption in commercial environments during the late 1970s through the mid-1980s. By enabling easier porting of applications across different manufacturers' hardware, CP/M played a crucial role in expanding both hardware availability and software development. The emergence of affordable CP/M-compatible microcomputers fostered innovation within software development communities, supported by active user groups and independent programmers. However, CP/M’s dominance diminished following the introduction of DOS with the release of the IBM PC in 1981.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates paired with a specialized controller. The system was programmed in Kildall’s own language, PL/M (Programming Language for Microcomputers). CP/M’s design drew inspiration from the TOPS-10 operating system running on the DECsystem-10 mainframe, which Kildall had experience using.
CP/M was compatible with multiple machines based on both the 8080 and Z80 CPU families. One of its early licensees was Gnat Computers, which in 1977 obtained rights to deploy CP/M 1.0 on any microcomputer platform for a fee of $90. As demand surged rapidly, Digital Research was able to raise licensing costs to amounts reaching tens of thousands of dollars.
Under Kildall’s guidance, John Pierce led development on CP/M version 2.0 in 1978. When Kathryn Strutynski joined Digital Research Inc. in early 1979, she played a key role in debugging CP/M 2.0 and made important contributions to later releases such as CP/M 2.2 and CP/M Plus. Other notable contributors included Robert Silberstein and David K. Brown.
The original designation "Control Program/Monitor" was updated to "Control Program for Microcomputers" during its commercial rollout in 1977. This change aligned with naming trends seen in products like Kildall’s PL/M and IBM’s CP/CMS systems, emphasizing their focus on microcomputer technology. Gary Kildall, alongside his wife and business partner Dorothy McEwen, sought to position Digital Research as a dominant microcomputer brand—anticipating a role similar to that later played by IBM and Microsoft in shaping the personal computing industry. Initially known as Intergalactic Digital Research, Inc., the company eventually became Digital Research, Inc.
Early achievements
By September 1981, Digital Research had distributed over CP/M licenses, with the actual user base likely larger due to sublicensing agreements. A variety of manufacturers developed CP/M-based machines targeting different sectors; InfoWorld highlighted CP/M as becoming the definitive operating system for small computers. Even companies that offered their own proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an alternative on their 8080/Z80 hardware, a contrast to the absence of a unified OS standard for 6502-based devices.[1] The widespread adoption of CP/M was largely driven by its vast software ecosystem. The Xerox 820 incorporated CP/M to utilize thousands of available applications, despite Digital Research’s subpar documentation, which led Xerox to supply a Howard W. Sams CP/M manual alongside the product.[2][3][4]
By 1984, Columbia University had utilized the identical source code to generate Kermit executables compatible with over a dozen CP/M platforms as well as two generic builds.[5] CP/M was characterized as a "software bus",[6][7] facilitating consistent communication between software and diverse hardware platforms.[8] Applications were generally portable across different machines, requiring only adjustments for terminal and printer control codes. This adaptability contributed significantly to CP/M’s widespread acceptance and richer software availability compared to proprietary operating systems restricted to single hardware brands. However, some limitations existed, such as programs that exploited the Z80’s extended instruction set—which was incompatible with 8080/8085 CPUs—and machine-specific graphics routines commonly found in gaming software.[4]
Bill Gates recognized the setup combining an Apple II with a Z-80 SoftCard as the leading CP/M hardware configuration.[9] By 1982, Digital Research announced that its OS had been licensed for over 450 distinct computer models.[10] Prominent CP/M platforms included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The most commercially successful CP/M-capable system was likely the Amstrad PCW. In the United Kingdom, CP/M operated on educational computers produced by Research Machines, whose source code was made available for academic purposes, as well as on the BBC Micro equipped with a Z80 co-processor. Additionally, it was accessible on the Amstrad CPC, Commodore 128, TRS-80, and later models of the ZX Spectrum. CP/M 3 served as the operating system for the NIAT handheld device developed for internal use by market research company A. C. Nielsen, featuring 1 MB of solid-state memory.
Multi-user capabilities
In 1979, Digital Research introduced MP/M, a multi-user variant of CP/M that enabled multiple terminals to connect simultaneously to a single machine, granting each user independent system access. Subsequent versions of MP/M extended support to processors with 16-bit architectures.
CP/M Plus
Released in 1983, CP/M 3, also known as CP/M Plus, represented the final iteration of the 8-bit CP/M series, featuring a BDOS engineered by David K. Brown. It integrated MP/M’s bank-switching memory management technique to support single-user, single-task operations while maintaining compatibility with CP/M 2.2 software. This allowed systems equipped with 8080 or Z80 processors to utilize memory beyond the 64 KB limit. Enhancements included customizable file date stamping and an assortment of development utilities such as a relocating assembler and linker. CP/M 3 was primarily designed for advanced 8-bit platforms like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX devices, and the TRS-80 Model 4.
16-bit versions
Digital Research expanded CP/M to support 16-bit architectures beginning with CP/M-86 for the Intel 8086 processor in November 1981, overseen by Kathryn Strutynski. To distinguish it from the original 8-bit system, the earlier CP/M was renamed CP/M-80.
Initially expected to become the IBM PC’s default operating system, CP/M-86 lost out due to licensing conflicts that led IBM to partner with Microsoft for PC DOS, which was based on 86-DOS. Although CP/M-86 was eventually made available on IBM PCs following legal challenges, its significantly higher price point (approximately $240 compared to PC DOS’s $40) hindered widespread adoption.
The DEC Rainbow 100 offered multiple OS choices: CP/M-80 running on a Z80 processor, either CP/M-86 or MS-DOS on an 8088 CPU, or a hybrid configuration that operated both CPUs simultaneously to maintain compatibility with existing 8-bit applications during transition to 16-bit environments. This dual-processor design was also implemented in systems like the CompuPro System 816 (marketed as CP/M 8-16) and the Zenith Z-100.
Building on CP/M-86, Digital Research created CP/M-68K in 1982 for the Motorola 68000 CPU. Originally developed in Pascal/MT+68k before being ported to C, it ran on Motorola EXORmacs hardware and was considered by Atari for their ST line but ultimately replaced by GEMDOS. It also found use on SORD M68 series machines.
In the same year, CP/M-8000 emerged as a port of CP/M-68K tailored for the Zilog Z8000 processor powering the Olivetti M20.
These 16-bit variants necessitated recompilation of software to match new CPU architectures. To facilitate this transition, Digital Research supplied tools such as XLT86—an assembler translator that converted Intel 8080 assembly source code into optimized Intel 8086 assembly compatible with CP/M-86 systems—thereby easing software migration. XLT86 was accessible 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, leading many to anticipate its dominance as the standard OS for emerging 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for their forthcoming IBM PC. However, after negotiations faltered over a signed non-disclosure agreement, IBM instead engaged Microsoft to supply an operating system.
MS-DOS incorporated numerous foundational elements from CP/M, including file management structures and drive letter assignments (such as A: and B:). Its key advancement was introducing the FAT file system, which simplified porting popular CP/M applications like WordStar and dBase. Unlike CP/M’s use of separate user areas on disks, MS-DOS leveraged increased memory availability (with IBM PCs typically equipped with at least 64 KB) to embed more commands directly into the command-line interpreter—enhancing performance and user experience on floppy disk-based systems.
Early IBM PC peripherals included expansion cards such as Baby Blue that enabled running legacy 8-bit CP/M software. Nonetheless, industry feedback quickly favored MS-DOS; BYTE magazine in 1982 described it as "more user-friendly, faster, with many advantages." By 1984, InfoWorld highlighted CP/M’s inability to capture the home market due to high software prices. By mid-decade, manufacturers like Kaypro ceased producing CP/M-compatible hardware in favor of MS-DOS machines. As microcomputing shifted toward IBM-compatible platforms, CP/M’s market share and media presence declined sharply.
Subsequent releases of CP/M-86 enhanced both speed and compatibility with MS-DOS programs, eventually leading to its rebranding as DOS Plus and later evolving into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the default Digital Research console command processor (CCP). The initial development was carried out by "The CCP Group," a team led by Richard Conn and comprising Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias.
The first iteration, ZCPR1, appeared on a disk distributed by SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was released on 14 February 1983 as a collection of ten disks from SIG/M and later evolved into version 2.3. This version was also made available in 8080 assembly language, allowing it to operate on 8080 and 8085 processors.
To commercialize the subsequent version while maintaining free availability, Conn partnered with Frank Gaude to establish Echelon Inc. On 14 July 1984, ZCPR3 was introduced through nine disks from SIG/M. Its code could be compiled for 8080 processors, albeit with limited functionality. This third version incorporated enhanced capabilities such as command shells, aliasing, input/output redirection, flow control constructs, named directory support, search path definitions, customizable menus, password protection, and integrated online help. After Conn ended his involvement in January 1987, Jay Sage took over development with ZCPR 3.3. This release discontinued support for the 8080 series and featured numerous new utilities and improvements. Despite widespread adoption among CP/M enthusiasts, ZCPR was unable to halt CP/M's eventual decline.
Hardware model
A fundamental CP/M system built on an 8-bit architecture typically required the following components:
- A computer terminal based on ASCII character encoding
- A microprocessor such as Intel’s 8080 or 8085, or the Zilog Z80
- NEC’s V20 and V30 processors offered an 8080 emulation mode that enabled CP/M operation on PC-DOS/MS-DOS machines; PC-compatible clones could run CP/M-86
- A minimum of 16 KB RAM beginning at memory address zero
- A bootstrap mechanism to load the initial sector from disk
- At least one floppy disk drive
Digital Research officially endorsed only the Intel 8080 Development System; however, various manufacturers adapted CP/M to fit their specific hardware designs. While the core CP/M components avoided using instructions unique to the Z80 processor, many Z80-based machines incorporated such instructions within their BIOS code and specialized software.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system aimed at more affordable hardware configurations that might lack disk drives. This OS first appeared in the Sharp MZ-800 system which used cassette tapes with optional disk support. Personal CP/M took advantage of enhanced Z80 instructions rather than maintaining full compatibility with the original 8080 processor. American Microsystems introduced the S83 microprocessor—a Z80-compatible chip featuring an integrated 8 KB ROM containing OS and BIOS code along with built-in DRAM interface logic—offered at a bulk price of $32 per unit.
Most systems employed a minimal bootloader stored in ROM combined with bank switching or bus-injected code techniques to ensure executable code resided at address zero during startup; some required manual input via front-panel switches.
CP/M utilized the standard 7-bit ASCII character set; however, extended character usage varied by vendor. For instance, Kaypro systems used extended characters to represent Greek letters; Osborne machines exploited the eighth bit for underlining text; WordStar designated it as an end-of-word marker. Various international editions often substituted certain ASCII characters with those from ISO 646 sets instead of extending beyond seven bits.
Components
When CP/M is active in memory, it comprises three primary parts:[11][12][13][14][15]
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
Both the BIOS and BDOS remain resident in memory at all times, whereas the CCP stays resident unless an application overwrites it temporarily, after which it is automatically restored post-execution. Standard utility commands are stored as transient programs on disk with the .COM extension.
The BIOS manages hardware peripherals excluding the CPU and main memory, facilitating character input/output and disk sector-level operations. The BDOS provides the CP/M file system functions along with input/output abstractions such as redirection, building upon BIOS services. The CCP interprets user commands, executing internal instructions like DIR or ERA, or loading external transient commands such as PIP.COM and STAT.COM. Third-party software also operates as transient commands.
While BDOS, CCP, and standard transient utilities remain stable across CP/M versions, the BIOS is tailored specifically to each hardware platform.
Expanding system memory necessitates reinstalling CP/M so that transient programs can utilize the added space. The MOVCPM tool modifies object code to reflect new memory locations by adjusting absolute jump and subroutine call addresses. This patched operating system image can then be saved to a new disk, enabling applications to access the larger memory area. The OS components—BIOS, BDOS, and CCP—are stored in reserved disk sectors used during boot-up. At startup, a bootloader typically embedded in ROM loads the OS from drive A:.
By contemporary standards, CP/M is rudimentary due to stringent program size limitations. Early iterations lacked safeguards against disk swaps without rereading directory information, risking data loss. Starting with version 1.1, attempts to write before loading a new directory result in a fatal error that prevents overwriting but requires rebooting and causes data loss.
The bulk of system complexity lies within BDOS and, to a lesser extent, CCP and transient commands. Porting BIOS routines to different hardware platforms allowed the entire OS to function seamlessly, significantly reducing development efforts and contributing to CP/M’s widespread adoption. This early implementation of a hardware abstraction layer was pioneering at a time when most operating systems were designed for single-machine environments without layered architecture.
Console Command Processor
The Console Command Processor (CCP) manages input from the keyboard and displays output on the terminal. CP/M supports both printing and video terminals, requiring users to enter all commands via the command line. The console usually presents an A> prompt indicating the current default disk drive. Users can switch drives by typing a drive letter followed by a colon—for example, B:—which updates the prompt accordingly.
CP/M’s command-line interface was inspired by Digital Equipment Corporation’s Concise Command Language found in operating systems like RT-11 and OS/8. Commands consist of a keyword plus optional parameters separated by spaces or special characters. Internal commands are processed directly by the CCP; otherwise, it loads executable transient programs from the current disk and user area directory while passing along any parameters. After execution completes, BDOS reloads the CCP if it was replaced during program run time, freeing more memory for transient applications.
Several commands retain legacy names reflecting their DEC heritage—for instance, PIP is used for file copying. Parameter formats differ between programs without standardized option conventions.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Frequently used transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands were enhanced with additions like DIRSYS/DIRS for system file listings; ERASE alongside ERA for deleting files; RENAME/REN for renaming files; TYPE/TYP for displaying ASCII content; and USER/USE for changing user numbers. The system also supports command abbreviation. The set of transient commands expanded to include utilities such as COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, RMAC, SETDEF, SHOW, SID, XREF among others.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) is responsible for managing tasks such as file handling, console display output, and printing functions. Programs interact with BDOS by placing specific function codes and arguments into processor registers, then executing a call to a designated fixed memory address. This consistent method guarantees software interoperability across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers fundamental low-level services including character input/output and reading or writing disk sectors. Prior to CP/M 3.0, BDOS operated under the assumption of a fixed 128-byte sector size, reflecting the single-density format of 8-inch floppy disks. Since most 5.25-inch floppy disks utilized larger sector sizes, BIOS took on the role of managing device-specific buffering and disk operations.
BIOS customization allows adaptation to a wide range of hardware architectures, such as integrated video controllers versus separate terminals, diverse UART chips for serial communication ports, and differences between memory-mapped I/O and 8080 I/O addressing schemes. By abstracting these hardware differences, CP/M achieves compatibility across heterogeneous systems through standardized entry points for character I/O and disk access routines. Serial port functionality within BIOS is often limited or nonexistent; therefore, CP/M applications relying on modems typically require user-installed overlays to enable serial communication.
Applications
CP/M served as the initial platform for numerous notable business software packages: WordStar, one of the earliest widely adopted word processors; dBase, a prominent database management system; and pioneering spreadsheet programs like VisiCalc and SuperCalc, with the latter becoming dominant on CP/M before competing in MS-DOS markets. The computer-aided design application AutoCAD also made its debut on CP/M.
Early availability of programming tools on CP/M included Turbo Pascal (a forerunner to Borland Delphi), Multiplan (a precursor to Microsoft Excel), and compilers for languages such as BASIC, FORTRAN, and PL/I—among Microsoft's initial product offerings.
CP/M software frequently came with installers designed to facilitate adaptation across different hardware environments. For instance, Kaypro II users converted programs originally formatted for Xerox 820 disks to Kaypro-compatible media. The accessibility of BASIC source code combined with minimal copy protection measures promoted software flexibility and broad compatibility. Unlike many contemporary operating systems that employed proprietary disk formats, CP/M prioritized file compatibility among diverse applications.
Although limited graphics capabilities restricted video game development, numerous text-based games were ported to CP/M platforms, including titles like Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction series such as Zork and Colossal Cave Adventure. Infocom consistently released their games in CP/M-compatible versions. Lifeboat Associates distributed user-created freeware like XMODEM, which provided reliable file transfer over modems. Additionally, the outline processor KAMAS originated within the CP/M ecosystem.
Transient Program Area
In early versions of CP/M designed for the 8080, 8085, and Z80 processors, the memory region from address 0100 hexadecimal up to just below the address specified at 0006H (which marks the lowest BDOS address) is known as the Transient Program Area (TPA), allocated for application use. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on individual system configurations. Many machines reserved portions of memory for BIOS ROM or video display buffers, which reduced available TPA space. To optimize TPA size, bank switching was commonly implemented to replace ROM or video memory segments temporarily. CP/M 3.0 further enhanced this capability by supporting bank-switched BDOS segments.
Application Debugging
CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory and program components, as well as execute instructions one step at a time.
Resident Software
Originally, CP/M did not support terminate-and-stay-resident (TSR) applications like those found in DOS. Nevertheless, developers could intercept operating system calls to enhance functionality, enabling add-on utilities such as SmartKey, a keyboard utility that assigned strings to keys. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, permitting system enhancements without the need for transient programs. Additionally, third-party solutions like Resident System Modules (RSMs) were adapted for CP/M 2.2 to provide similar capabilities.
Installing Software
Although CP/M provided standardized interfaces for disk and console input/output, individual applications still required installation procedures to properly utilize hardware peripherals such as printers and terminals, which often depended on device-specific escape sequences. Users commonly executed installation utilities to select the target device or customize escape codes. This configuration process had to be repeated for each program because no unified operating system service managed these devices.
Programs needed to include printer initialization sequences internally. For instance, when using Wordstar with different printers—such as a rapid dot-matrix or a slower daisy wheel printer—separate versions of the software were necessary for each printer type, requiring users to load the appropriate version depending on the printer in use.
Disk Formats
The 128 byte/sector, single-density, single-sided disk format from IBM System/34 and IBM 3740 became the de facto standard 8-inch floppy disk format for CP/M. No universal 5.25-inch CP/M disk format existed; companies like Kaypro, Morrow Designs, and Osborne created proprietary formats. Most software was distributed using the Xerox 820 format, compatible with systems such as the Kaypro II. However, InfoWorld estimated in 1981 that "approximately two dozen formats were sufficiently widespread that software developers had to accommodate them to reach the broadest audience." 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), Superbrain systems, plus an 8-inch disk version. Ellis Computing supported Heath formats along with sixteen other 5.25-inch variants including TRS-80 CP/M modifications. Distributors like Lifetree converted CP/M applications across different hardware platforms.
CP/M permitted customization of reserved areas, directory spaces, and logical-to-physical sector mappings per system; however, there was no standardized approach for loading configuration parameters from disks formatted on other machines. While most CP/M systems equipped with 8-inch drives could read IBM’s single-sided, single-density disks, portability varied significantly due to differences in drive mechanisms and controllers. Floppy disks differed by sectoring method (hard versus soft), density (single or double), number of sides (single or double), track counts (ranging from 35 to 80), and sector layouts. Disk translation utilities enabled some cross-system compatibility—for instance, the Kaypro II could read disks from TRS-80, Osborne, IBM PC, and Epson QX-10 machines. Nevertheless, formats such as 80-track or hard-sectored disks were incompatible across many systems. Apple II users were limited to Apple’s GCR format and required either Apple-formatted disks or serial transfers to access CP/M software.
This fragmented landscape of CP/M disk formats compelled distributors to maintain inventories of multiple disk types or invest in multi-format duplication equipment—factors that contributed to CP/M’s swift decline after 1981 in favor of more standardized IBM PC disk formats.
Among the final notable computers capable of running CP/M was the Commodore 128 (released in 1985), which included a Z80 processor dedicated to CP/M compatibility alongside its native 6502-derived CPU. This machine required a 1571 or 1581 drive able to read soft-sector 40-track MFM floppy disks.
The earliest computer equipped with a 3.5-inch floppy drive running CP/M 2.2 was the Sony SMC-70. Other systems supporting 3.5-inch disks under CP/M 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 disks and RAM disks via compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives under CP/M before transitioning to 3.5-inch drives.
File system
File naming conventions adhered to the 8.3 standard, allowing up to eight characters for the name, followed by a period and a three-character extension denoting the file type (for example, .COM indicated executables, while .TXT represented text files). When filenames were typed at the command prompt, they were automatically converted to uppercase; however, certain applications such as MBASIC generated lowercase filenames that were not readily accessible through the command line interface.
Disk drives were designated by letters (e.g., A, B), and files were referenced by prefixing the drive letter and colon (e.g., A:FILE.TXT). In the absence of a specified drive letter, commands operated on the currently selected default drive.
File sizes were expressed in units of 128-byte records, corresponding to disk sectors, rather than exact byte counts. The operating system maintained file size information within the File Control Block (FCB). Text files typically concluded with a control-Z character (ASCII SUB, hex 1A), signaling end-of-file and influencing how text editors processed file content.
As removable and fixed disk capacities increased, disk de-blocking led to a rise in the minimum allocatable file size—from 1 KB on single-density disks up to 32 KB on higher-density media—resulting in inefficient utilization of space when handling numerous small files.
CP/M 2.2 did not support file modification timestamps; this feature was optionally introduced later in MP/M and CP/M 3.0.
Rather than employing subdirectories, CP/M 2.2 organized files into 16 numbered user areas. Users could switch between these areas using "User X" commands, isolating files by user number without implementing security restrictions. USER 0 served as the default area accessible by all users, while other user areas kept files segregated, aiding organization especially on systems equipped with hard drives. This arrangement enabled differentiation of tasks—such as separating data entry from billing—by multiple users on the same machine without intermingling their files.
Graphics
Despite early availability of graphics-capable S-100 systems, CP/M did not include standardized graphics support until the introduction of GSX in 1982. The limited memory of 8-bit CP/M machines generally restricted graphics capabilities to simple ASCII art or custom character sets. Certain systems, like the Kaypro series and the TRS-80 Model 4, provided block graphics accessible to programmers using assembler or BASIC via CHR$. The Model 4 was capable of displaying graphics at a resolution of 640x240 pixels when equipped with an optional high-resolution expansion board.
Official
Some firms developed authorized enhancements of CP/M derived from Digital Research’s source code, such as IMDOS for the IMSAI 8080, which was a clone of the Altair 8800.
Compatible
Numerous independently developed CP/M-compatible operating systems appeared without incorporating Digital Research’s codebase, including:
- Cromemco CDOS produced by Cromemco
- MSX-DOS, which maintained compatibility with CP/M and could execute its software
- The Epson QX-10, offering either CP/M or compatible TPM-II/III operating system variants
- British ZX Spectrum compatible SAM Coupé, featuring optional Pro-DOS (compatible with CP/M-2.2)
- Amstrad/Schneider CPC series and PCW computers bundled with CP/M disk collections
- The Husky (computer) utilizing DEMOS, a ROM-based loader supporting many CP/M applications
- ZSDOS, an alternative BDOS for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
- CPMish, an open-source CP/M 2.2-compatible operating system initially developed without Digital Research code but incorporating ZSDOS and ZCPR; updated since 2022 under permission from Lineo’s president Bryan Sparks to include original DR CP/M components
- LokiOS, launched in 2023 by David Kitson for the Open Spectrum Project, which contains BIOS, BDOS, CLI source code along with original DR source code and utilities enabling dynamic replacement of OS components
- IS-DOS for the Enterprise (computer), created by Intelligent Software
- VT-DOS designed for the Videoton TV-Computer, also developed by Intelligent Software
Improvements
Certain CP/M-compatible systems introduced considerable enhancements, including TurboDOS, which supported multi-processor configurations.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 adaptations were developed under various titles such as 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, and HC. For CP/M-86 derivatives, notable examples include SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by entities like East German VEB Robotron among others.
Enduring Influence
A significant portion of Microsoft Windows features originate from its compatibility with MS-DOS, which itself was designed to align with CP/M standards. Windows inherited the drive letter assignment system and the 8.3 filename format from CP/M. The use of wildcard symbols (? and *) in Windows is derived from CP/M conventions, as are reserved device filenames such as "PRN:" and "CON:". Floppy drives were labeled A and B in CP/M; hard drives started at C:, a practice that MS-DOS continues to follow. The control character ^Z, indicating end-of-file in text documents, also traces back to CP/M. Commands like DIR, REN/RENAME, TYPE (and ERA/ERASE in DR-DOS) were modeled after their CP/M counterparts. File extensions including .TXT and .COM remain prevalent.
Between 1997 and 1998, Caldera made available CP/M 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." Following Olmstead’s passing in 2001, ownership transitioned to Lineo, which later broadened the distribution license within the same year. To mark its 40th anniversary in October 2014, the Computer History Museum published early CP/M source code.
As of 2018, vintage computing enthusiasts and select small enterprises continue to develop and maintain systems predominantly running CP/M 2.2 as their primary operating system.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently developed 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
- Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013
- IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, Computer History Museum, 2014
- Triumph of the Nerds, PBS (details IBM's choice of Microsoft DOS over Digital Research's CP/M)
- CP/M FAQ, comp.os.cpm and Digital Research resources
External links
- The Unofficial CP/M Web site – includes source code
- Gaby Chaudry's Homepage for CP/M and Computer History – includes ZCPR materials
- CP/M Main Page – John C. Elliott's technical information site
- MaxFrame's Digital Research CP/M page
- ↑ 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 - ↑ 4.0 4.1 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. ISBN 978-0905104188.
- ↑ 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 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM.NYT83 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-system-manual - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-86-system-guide - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-68k-system-guide - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-8000-system-guide