CZ-CPM
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall, Dorothy McEwen |
| Headquarters | United States |
Key people | Gary Kildall, John Pierce, Kathryn Strutynski, Dorothy McEwen |
| Products | CP/M operating system |
CP/M, an acronym initially standing for Control Program/Monitor and later changed to Control Program for Microcomputers, is a widely used operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080/85-based microcomputer platforms. It functions as a disk operating system that manages file storage on magnetic disks and executes software directly from disk media. While its first iterations supported only single-tasking on 8-bit processors with memory limits up to 64 kilobytes, subsequent releases introduced multi-user capabilities and compatibility with 16-bit processor architectures.
The fundamental modules of CP/M consist of the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for hardware interface management, BDOS oversees file system operations and essential system services, and CCP acts as the command-line shell providing built-in commands.
CP/M established itself as the de facto operating system standard for microcomputers, particularly those utilizing the S-100 bus, gaining widespread acceptance in commercial environments from the late 1970s through the mid-1980s. By enabling easier software portability across various manufacturers’ hardware, it significantly broadened both hardware and software markets. The affordability of CP/M-based microcomputers spurred a wave of software development driven by independent programmers and user communities. However, CP/M's prominence diminished following the introduction of the IBM PC in 1981, which propelled the adoption of DOS.
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 by Shugart Associates paired with a custom controller. It was programmed using Kildall’s proprietary language, PL/M (Programming Language for Microcomputers). The design of CP/M was influenced by the TOPS-10 operating system from the DECsystem-10 mainframe environment, which Kildall had experience with.
CP/M provided support for a variety of computers built around the 8080 and Z80 processors. In 1977, early licensee Gnat Computers acquired rights to CP/M version 1.0 for $90, facilitating its broader distribution. Demand surged rapidly, enabling Digital Research to increase licensing fees to amounts in the tens of thousands within a year.
With Kildall at the helm, John Pierce directed development of CP/M 2.0 in 1978. Kathryn Strutynski joined Digital Research in 1979, initially focusing on debugging CP/M 2.0 before playing a major role in advancing CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert Silberstein and David K. Brown.
Originally abbreviated as "Control Program/Monitor," CP/M was rebranded as "Control Program for Microcomputers" around its commercial release in 1977. This renaming aligned with naming trends of that era such as Kildall’s PL/M language and IBM’s CP/CMS operating system, emphasizing its orientation toward microcomputers. The change was part of a deliberate strategy by Kildall, his wife, and business partner Dorothy McEwen to commercialize CP/M and position Digital Research as a prominent microcomputer software company—aiming to achieve influence comparable to IBM and Microsoft in shaping the personal computing industry. Following this effort, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with the actual market penetration presumably higher due to sublicensing arrangements. A wide array of manufacturers offered CP/M-based systems across various sectors; 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 machines—contrasting with the 6502 CPU segment, which lacked a similar universal standard. This widespread adoption was largely driven by CP/M’s vast catalog of software. The Xerox 820 implemented CP/M to take advantage of its extensive program library, although Digital Research’s user documentation was often criticized for its shortcomings, leading Xerox to supply a third-party manual alongside the system.
By 1984, Columbia University had utilized CP/M’s source code to develop Kermit executables for over a dozen CP/M platforms, as well as generic versions compatible with multiple systems. The operating system served effectively as a "software bus", facilitating standardized communication between applications and hardware components. Programs developed for CP/M were generally portable across different machines, requiring primarily adaptations in terminal and printer control codes. This cross-platform compatibility significantly contributed to CP/M’s widespread acceptance and encouraged broader software development compared to operating systems limited to single hardware brands. However, some constraints existed: certain applications depended on the Z80 processor’s extended instruction set, limiting them to Z80-based systems and excluding 8080/8085 CPUs; additionally, some programs employed hardware-specific graphics routines that bypassed the OS to enhance performance.
Bill Gates highlighted the Apple II equipped with a Z-80 SoftCard as the most prevalent CP/M hardware configuration. By 1982, Digital Research claimed that CP/M had been licensed for more than 450 distinct computer models. Notable machines running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and various MSX systems. Among these, the Amstrad PCW was arguably the top-selling CP/M-capable device. In the United Kingdom, CP/M was available on educational computers from Research Machines (which provided published source code), the BBC Micro outfitted with a Z80 co-processor, and was also supported by models such as the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. CP/M 3 operated on the NIAT handheld computer used internally by A. C. Nielsen, which featured 1 MB of solid-state disk storage.
Multi-user Versions
Digital Research introduced MP/M in 1979, a multi-user variant of CP/M designed to allow several terminals to connect simultaneously to a single computer system, each presenting an independent user session. Subsequent iterations extended support to 16-bit processor architectures.
CP/M Plus
Released in 1983, CP/M Plus (version 3) represented the last iteration of the 8-bit CP/M series, featuring a BDOS developed by David K. Brown. It incorporated MP/M's bank switching memory management into a single-user operating system compatible with CP/M 2.2 software, allowing access to memory beyond 64 KB on 8080 or Z80 processors. Enhancements included file date stamping and integrated development utilities such as a relocating assembler and linker. CP/M Plus was aimed at advanced 8-bit platforms like the Amstrad PCW and CPC, ZX Spectrum +3, Commodore 128, MSX machines, and the TRS-80 Model 4.
16-bit versions
Digital Research created CP/M variants for 16-bit processors, beginning with CP/M-86 for the Intel 8086 CPU, launched in November 1981 under the oversight of Kathryn Strutynski. To differentiate it, the original 8-bit CP/M was renamed CP/M-80.
Although CP/M-86 was initially anticipated to be the IBM PC’s default operating system, unsuccessful licensing discussions led IBM to select Microsoft’s PC DOS, which was based on 86-DOS. Even after Digital Research’s legal actions resulted in CP/M-86 becoming an alternative option, it failed to capture significant market share due to IBM pricing it substantially higher ($240 compared to $40 for PC DOS).
The DEC Rainbow 100 offered versatility by supporting CP/M-80 on a Z80 processor, as well as CP/M-86 or MS-DOS on an 8088 CPU. It also featured a dual-processor setup permitting simultaneous operation of both chips. This design safeguarded users’ investments by enabling legacy 8-bit applications alongside newer 16-bit software. Comparable dual-CPU systems included CompuPro System 816’s CP/M 8-16 and Zenith Z-100’s CP/M-86 implementations supporting both processors.
Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 series. Originally developed using Pascal/MT+68k and later ported to C, this version ran on EXORmacs hardware and was considered for Atari ST systems before Atari selected GEMDOS instead. CP/M-68K was also utilized on SORD M68 and M68MX machines.
In that same year, a C-language port named CP/M-8000 was produced for the Zilog Z8000 CPU used in the Olivetti M20.
These 16-bit editions necessitated recompilation of applications; however, Digital Research supplied tools such as XLT86 to automate conversion of Intel 8080 assembly code into Intel 8086 assembly language, optimizing for instruction size and calling conventions. XLT86 supported migration from CP/M-80 and MP/M-80 environments to their respective 16-bit versions and was available on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications had been developed for CP/M, which was widely expected to become the dominant operating system for 16-bit computers. In 1980, IBM approached Digital Research—encouraged by Bill Gates—to license CP/M for its upcoming IBM PC. However, when IBM failed to obtain a signed non-disclosure agreement from Digital Research, it turned instead to Microsoft for an OS solution.
MS-DOS retained many foundational elements from CP/M such as file management structures and drive letter assignments (A:, B:). Its principal advancement was introducing the FAT file system, simplifying the porting process of popular CP/M applications like WordStar and dBase. MS-DOS capitalized on IBM PCs’ typically larger memory capacities (64 KB or more), allowing more extensive built-in commands within its command interpreter and enhancing usability on floppy disk-based systems.
While early hardware expansions like the Baby Blue card allowed running CP/M software on IBM PCs, industry media rapidly embraced MS-DOS. For instance, BYTE magazine in 1982 praised MS-DOS as "more user-friendly, faster, with many advantages," whereas InfoWorld attributed CP/M's failure to penetrate home computing markets largely to its cost. By 1986, manufacturers such as Kaypro had discontinued producing CP/M-compatible machines in favor of MS-DOS-based platforms. As the IBM PC ecosystem grew dominant, CP/M's market presence dwindled quickly and major trade publications ceased covering it by the late 1980s.
Subsequent releases of CP/M-86 enhanced performance and compatibility with MS-DOS environments, eventually evolving into products rebranded as DOS Plus and later DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the standard console command processor (CCP) provided by Digital Research. This project was created by a collective of enthusiasts called "The CCP Group," headed by Richard Conn. The initial release, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey.
The subsequent version, ZCPR2, was made available on 14 February 1983 through ten SIG/M disks and included an 8080-compatible code variant to support systems based on 8080 and 8085 processors. Richard Conn and Frank Gaude established Echelon Inc. to commercialize the following iteration while continuing free distribution. ZCPR3 was introduced on 14 July 1984 via nine SIG/M disks; it featured a compiler for 8080 platforms with some limitations. Enhancements in ZCPR3 encompassed command shells, aliasing, input/output redirection, flow control mechanisms, named directory support, search path functionality, customizable menus, password protection, and integrated online help.
In January 1987, development by Conn halted, prompting Echelon to recruit Jay Sage to advance the project further, culminating in ZCPR 3.3. This release eliminated support for the 8080 processor and incorporated the most comprehensive set of features and utilities within the ZCPR lineage. Although it garnered considerable backing from CP/M users, ZCPR was unable to halt the overall decline of the CP/M operating system.
Hardware model
A basic CP/M system built around an 8-bit architecture required the following components:
- A computer terminal utilizing ASCII character encoding
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- NEC V20/V30 processors offered 8080 emulation capabilities to run CP/M on PC-DOS/MS-DOS compatible machines; PC clones could operate CP/M-86
- Minimum of 16 KB RAM starting at memory address zero
- A bootstrap loader to initialize from the first sector of a disk
- At least one floppy disk drive
Digital Research’s official CP/M distribution supported only the Intel 8080 Development System hardware; however, various manufacturers adapted CP/M to fit their specific configurations. Because of its compatibility with 8080 machine code, many systems based on the Z80 processor ran CP/M; numerous BIOS implementations and applications leveraged unique Z80 instructions.
Digital Research collaborated with Zilog and American Microsystems to create Personal CP/M, a ROM-based operating system designed for affordable machines lacking disk drives. This OS first appeared in Sharp MZ-800 models that primarily used cassette tapes but offered optional disk storage. Personal CP/M utilized enhanced Z80 instructions rather than maintaining strict portability across platforms. The American Microsystems S83 microprocessor integrated an 8 KB ROM containing OS/BIOS code alongside logic for dynamic RAM interfacing; it was priced at approximately $32 per unit in bulk quantities.
Most hardware employed a minimal ROM bootloader that used techniques like bank switching or bus injection to provide boot code at memory address zero. Some systems required users to manually input memory configurations via front-panel switches during startup.
CP/M utilized a 7-bit ASCII character set; extended 8-bit characters were not standardized and differed among manufacturers—for instance, Kaypro machines used them for Greek alphabet characters, Osborne systems indicated underlining through the eighth bit, and WordStar employed it as an end-of-word marker. International editions often adhered to ISO 646 standards by substituting certain ASCII characters rather than extending beyond seven bits.
Components
When loaded into memory during operation, the CP/M operating system consists of three main parts:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
Both BIOS and BDOS remain resident in memory continuously; the CCP also stays loaded unless temporarily replaced by an application program—in which case it automatically reloads afterward. Standard utility commands are stored as transient executable files with a .COM extension on disk.
The BIOS is responsible for managing hardware devices except for the CPU and main memory; its duties include character input/output and disk sector access. BDOS handles file system management and abstracts input/output operations such as redirection. The CCP interprets user commands—executing internal commands like DIR or ERA or launching transient executables such as PIP.COM for file copying. Third-party software designed for CP/M operates as transient commands within this framework.
While BDOS, CCP, and typical transient commands remain consistent across CP/M versions, BIOS implementations are tailored specifically to each hardware platform.
To expand available memory for applications, CP/M must be reinstalled so that programs can utilize additional space. The utility MOVCPM modifies system code by adjusting absolute jump and call addresses to relocate it within new memory areas. This patched version can then be saved back to disk, enabling applications to access expanded memory regions. The OS components reside in reserved sectors on disk used during booting; a bootloader—commonly stored in ROM—loads the operating system from drive A: at startup.
By contemporary standards, CP/M appears rudimentary due to limitations such as program size restrictions. Early versions did not detect disk changes automatically, risking data corruption if disks were swapped without refreshing directory information. Starting with version 1.1, attempting to write to a changed disk before updating its directory results in a fatal error that prevents overwriting but necessitates rebooting.
The majority of system complexity lies within BDOS; CCP and transient commands contain fewer functions. By porting BIOS routines to new hardware platforms, the entire operating system could function effectively—significantly reducing development time and contributing greatly to CP/M’s widespread adoption. This layered hardware abstraction strategy was innovative at the time since most contemporary operating systems targeted single hardware platforms without employing such modular designs.
Console Command Processor
The Console Command Processor (CCP) is responsible for managing keyboard inputs and displaying output on the terminal. CP/M can operate using either printing or video terminals, presenting the A> prompt to signify the currently selected default disk drive. Users may switch the default drive by entering a drive letter followed by a colon (for example, B:), which updates the prompt to reflect the change.
The command-line interface in CP/M draws inspiration from Digital Equipment Corporation’s Concise Command Language, as implemented in systems such as RT-11 and OS/8. Commands are composed of a keyword accompanied by parameters. Internal commands are processed directly by the CCP, whereas unrecognized commands prompt the CCP to load and execute transient programs from the disk and user area. This mechanism allows transient programs to utilize additional memory by temporarily replacing the CCP.
Several command names are inherited from legacy utilities; for instance, PIP (Peripheral Interchange Program) is used for copying files. Parameter conventions differ among programs, as there is no uniform standard for option characters.
Among the built-in CCP commands are DIR, ERA, REN, SAVE, TYPE, and USER. 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 include DIRSYS/DIRS for system file management, ERASE/ERASE for file deletion, RENAME/REN for renaming files, TYPE/TYP for file content display, and USER/USE for changing user numbers. This version also allows abbreviation of built-in commands. The set of transient commands was extended to 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 functions such as file handling, console output management, and printing operations. Applications access BDOS services by loading specific operation codes and parameters into processor registers before invoking a fixed memory address. This standardized interface guarantees software compatibility across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) manages the lowest-level operations required by the operating system, including character input/output and reading or writing disk sectors. While BDOS handles buffering of disk data, BIOS deals with hardware-specific tasks such as sector size management and buffering techniques tailored to different disk formats like 5.25-inch disks with larger sectors.
Due to the variety of hardware configurations—ranging from integrated video terminals to standalone units—and differing serial port designs, BIOS customization is critical. It provides a uniform set of entry points that abstract these hardware differences for CP/M services. Because BIOS often offers limited or no support for serial communications, many CP/M applications incorporate user-supplied overlays to enable modem functionality adapted to particular hardware environments.
Applications
CP/M served as the initial platform for several groundbreaking business applications, including the word processor WordStar and the database system dBase. Early outlining software such as KAMAS and Out-Think were originally developed for CP/M before moving on to MS-DOS environments. Programming environments like Turbo Pascal—the forerunner to Borland Delphi—and spreadsheet tools like Multiplan, which preceded Microsoft Excel, first appeared on CP/M. The pioneering spreadsheet VisiCalc and Sorcim’s dominant SuperCalc were also accessible on CP/M, with SuperCalc later entering the MS-DOS competition. Additionally, Autodesk introduced its CAD program AutoCAD on this platform.
A wide range of compilers and interpreters for languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I were offered, many of which were among Microsoft’s earliest software releases.
To facilitate cross-hardware compatibility, CP/M applications commonly included installers capable of converting programs for different machines. For instance, Kaypro II users adapted software formatted for Xerox 820 disks to their own systems. BASIC source code was frequently distributed openly, and copy protection measures were largely ineffective due to CP/M’s uniform disk format standard that ensured broad interoperability.
Although limited graphical capabilities restricted the development of video games, many text-based titles—including Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction series like Zork and Colossal Cave Adventure—were ported to CP/M. Infocom routinely published games compatible with CP/M. Lifeboat Associates released user-created utilities such as XMODEM, which enabled dependable file transfers over modems. The outline processor KAMAS was another significant native application on the platform.
Transient Program Area
In the original CP/M implementations for the 8080, 8085, and Z80 processors, the memory region from hexadecimal address 0100 up to just before the BDOS entry point at 0006H is designated as the Transient Program Area (TPA), reserved for executing application programs. Although these CPUs could address up to 64 KB of memory, the actual size of the TPA depended on system architecture because portions of address space were often allocated to BIOS ROM or video memory. To increase available TPA, bank switching techniques were employed to swap out ROM or display memory segments. CP/M 3.0 further enhanced this by permitting parts of the BDOS to be located within bank-switched memory areas.
Debugging application
Included with CP/M was a Dynamic Debugging Tool (DDT) that allowed users to inspect and modify memory contents and program modules interactively. DDT also supported single-step execution for detailed program analysis.
Resident programs
Initially, CP/M did not support terminate-and-stay-resident (TSR) utilities as DOS did. Nonetheless, developers found ways to intercept operating system calls to extend functionality, enabling add-on desk accessories like SmartKey, a keyboard customization utility. With CP/M 3, support was introduced for dynamically loadable Resident System Extensions (RSX), permitting the Command Processor (CCP) to load RSXs without launching transient programs by using a "null command file." Additionally, third-party solutions such as Resident System Modules (RSMs) were adapted to work with CP/M 2.2 systems to provide similar capabilities.
Software installation
CP/M offered hardware abstraction for disk and console input/output operations, yet it required tailored installation for each application to enable support for peripherals such as printers and terminals. Control of devices frequently depended on proprietary escape codes provided by the manufacturers, for instance, to activate bold printing. Installation utilities permitted users to choose or modify these sequences for their specific hardware. Because CP/M lacked a unified operating system service to manage devices, this configuration needed to be performed individually for every program.
Programs contained printer initialization codes embedded within their software. To operate applications like WordStar with different printers—such as a high-speed dot-matrix versus a slower daisy wheel—distinct program versions had to be maintained and loaded depending on the printer connected.
Disk formats
The 128-byte sector, single-density, single-sided floppy disk format from IBM System/34 and IBM 3740 established the standard 8-inch disk format for CP/M systems. No universal 5.25-inch disk format existed under CP/M; manufacturers including Kaypro, Morrow Designs, Osborne, and others developed proprietary formats. Software distribution commonly utilized the Xerox 820 format, compatible with devices like the Kaypro II, but by 1981 approximately twenty different disk formats were prevalent enough that software developers had to accommodate multiple disk types to reach broader audiences. For example, JRT Pascal was available on various 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain systems, along with an 8-inch version. Ellis Computing supported both Heath formats plus sixteen additional 5.25-inch variants including TRS-80 CP/M adaptations. Distributors such as Lifetree converted CP/M applications across different platforms.
Disk format selection was influenced by system architecture and hardware specifics. CP/M permitted customization of reserved areas, directory structures, and logical-to-physical sector mapping; however, no standardized mechanism existed to load disk parameters consistently across diverse machines.
Most CP/M computers equipped with 8-inch drives could read the IBM single-sided, single-density format. Nonetheless, compatibility with other disk formats largely depended on the particular drive and controller due to variations in floppy disk characteristics—8-inch and 5.25-inch disks differed in sectoring methods (hard versus soft), recording density (single or double), number of sides (single or double), track count (ranging from 35 to 80), sector organization, size, and interleave patterns. Disk translation utilities enabled access to some foreign formats when hardware compatibility allowed. By 1982, soft-sector, single-sided 40-track 5.25-inch disks emerged as the leading distribution medium for CP/M software on popular consumer platforms including Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. For instance, the Kaypro II could read disks formatted for TRS-80, Osborne, IBM PC, and Epson QX-10; however, certain formats such as 80-track or hard-sectored disks remained incompatible. Apple II users were restricted to Apple's GCR format and thus had to obtain CP/M software accordingly or transfer files via serial connections.
This diversity in disk formats compelled distributors either to stock multiple versions of software disks or invest in equipment capable of duplicating various formats—an important factor contributing to CP/M’s swift decline after 1981 when compared with the more standardized IBM PC disk formats.
One of the final notable computers supporting CP/M was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. Operating CP/M on this machine required a 1571 or 1581 drive capable of reading soft-sector 40-track MFM disks.
The earliest computer featuring a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems that supported CP/M on 3.5-inch floppy disks 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 accommodated 3.5-inch disks as well as RAM disks via memory expansion cards. Initially, the Amstrad PCW utilized 3-inch floppy drives before transitioning to the more common 3.5-inch drives.
File system
File naming followed the 8.3 convention, allowing up to eight characters for the name, followed by a period and a three-character extension that indicated the file type (for instance, .COM denoted executables, while .TXT identified text files). When typed at the command prompt, filenames were automatically converted to uppercase; however, some applications, such as MBASIC, could generate lowercase filenames that were not easily accessible via the command line.
Disk drives were designated by letters (e.g., A, B), and files on a particular drive were referenced by prefixing the drive letter and a colon (for example, A:FILE.TXT). If no drive letter was specified, the system defaulted to the current drive.
File sizes were expressed in 128-byte records, which corresponded to disk sectors, as precise byte counts were generally unsupported. The file length was maintained within its File Control Block (FCB). Conventionally, text files ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file; inserting this character within a file would truncate any data beyond it.
The advent of larger removable and fixed disk drives introduced disk de-blocking schemes that increased the number of disk blocks per allocation unit. This enabled support for bigger files but also raised the minimum allocation size from 1 KB on single-density disks up to 32 KB on higher-density drives, resulting in inefficient space usage when handling numerous small files.
CP/M 2.2 did not include file modification timestamps, though these features were optionally available in MP/M and CP/M 3.0.
While CP/M 2.2 lacked support for subdirectories, it provided 16 numbered user areas to organize files. Switching between user areas was achieved by entering "User X" at the prompt. This functionality was designed to simulate multi-user environments like MP/M on single-user systems. Files stored in USER 0 were accessible universally, whereas those in other user areas remained isolated. Although limited on small floppy disks, user areas proved useful for organizing files on systems equipped with hard drives—allowing separation of tasks such as data entry and billing without mixing files.
Graphics
Despite early availability of graphics-capable S-100 systems, CP/M did not have standardized graphics support until 1982 with the introduction of GSX. Due to constrained memory resources, graphics usage was uncommon on 8-bit CP/M machines, which mostly displayed simple ASCII art or employed custom character sets. Certain models like the Kaypro series and the TRS-80 Model 4 offered block graphics accessible to programmers using assembler or BASIC. The Model 4 could achieve high-resolution graphics at 640×240 pixels with an optional expansion board.
Official
Several companies developed official CP/M enhancements based on Digital Research’s original source code. For instance, IMDOS for the IMSAI 8080, a clone of the Altair 8800, represented an authorized derivative.
Compatible
A variety of independently created CP/M-compatible operating systems existed without incorporating Digital Research code, including:
- Cromemco CDOS by Cromemco
- MSX-DOS, which maintained compatibility with CP/M and could execute its programs
- The Epson QX-10, offering either CP/M or TPM-II/III
- British ZX Spectrum compatible SAM Coupé featuring an optional CP/M-2.2 compatible Pro-DOS
- Amstrad/Schneider CPC and PCW series distributed with CP/M disk packs
- The Husky (computer), running DEMOS—a ROM-based loader supporting many CP/M applications
- ZSDOS, a replacement BDOS for CP/M-80 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free and open-source CP/M 2.2-compatible OS originally developed without Digital Research code; since 2022 it has incorporated original DR CP/M components under permission from Lineo president Bryan Sparks
- LokiOS, publicly released in 2023 by David Kitson as a CP/M 2.2 compatible system including BIOS, BDOS, CLI source code along with original DR source code and modular OS components for the Open Spectrum Project
- IS-DOS for the Enterprise, developed by Intelligent Software
- VT-DOS for the Videoton TV Computer, also produced by Intelligent Software
Improvements
Certain CP/M-compatible operating systems notably enhanced its functionality, 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, MICRODOS, among others. Additionally, CP/M-86 versions like SCP1700, CP/K, and K8918-OS were created. These operating systems were manufactured by East German firms including VEB Robotron.
Enduring Influence
Microsoft Windows demonstrates several traits inherited through backward compatibility with MS-DOS, which itself retained many CP/M characteristics. Examples include the use of drive letters (A and B for floppy drives; C for hard disks), the 8.3 filename format, wildcard symbols (?, *), reserved device names (such as "PRN:" and "CON:"), and control characters like ^Z signaling end-of-file. Commands in DOS such as DIR, REN/RENAME, TYPE, and ERA/ERASE were modeled after their CP/M equivalents. File extensions like .TXT and .COM continue to be prevalent.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries and source code under an open source license, facilitating redistribution and modification through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—holder of Digital Research’s assets—revised the licensing terms. To commemorate its 40th anniversary in October 2014, the Computer History Museum published early CP/M source code.
As of 2018, enthusiasts in vintage computing circles along with niche commercial ventures persist in developing and maintaining systems primarily running CP/M 2.2.
Related Topics
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently derived OS 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
Additional 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)
- Computer History Museum, IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, 2014
- PBS, Triumph of the Nerds (explores 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 Resources
- The Unofficial CP/M Web site (established by Tim Olmstead) – contains source code
- Gaby Chaudry's Homepage for CP/M and Computer History – offers ZCPR documentation
- CP/M Main Page – John C. Elliott’s technical resource site
- MaxFrame's Digital Research CP/M page (archived)