SCP/M
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M operating system |
CP/M, an acronym initially standing for Control Program/Monitor and subsequently redefined as Control Program for Microcomputers, is a widely adopted operating system introduced 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 execution from these storage media. Originally, CP/M supported single-task operations on 8-bit processors with a maximum of 64 kilobytes of memory, but later iterations incorporated multi-user capabilities and transitioned to 16-bit processor architectures.
The fundamental architecture of CP/M consists of three main modules: the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for hardware interfacing and device driver management, BDOS oversees file system operations and core system services, while the CCP functions as the command-line interpreter providing built-in command execution.
Throughout its prominence, CP/M established itself as the de facto standard operating system for microcomputers, particularly dominating on S-100 bus systems extensively utilized in commercial environments from the late 1970s through the mid-1980s. By simplifying software portability across diverse hardware vendors, CP/M significantly broadened both hardware adoption and software development markets. The emergence of cost-effective CP/M-compatible machines encouraged software innovation among independent programmers who distributed applications through user communities. However, CP/M's dominance waned with the advent of DOS following the introduction of the IBM PC in 1981.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for an Intel Intellec-8 development platform equipped with a Shugart Associates 8-inch floppy-disk drive and a custom controller.[1] The system was programmed using Kildall’s own language, PL/M (Programming Language for Microcomputers).[2] CP/M’s design drew inspiration from the TOPS-10 operating system running on the DECsystem-10, which Kildall had experience using.[3]
CP/M was compatible with a variety of machines powered by the 8080 and Z80 processors. In 1977, early licensee Gnat Computers acquired rights to CP/M version 1.0 for $90, with licensing fees escalating to tens of thousands of dollars due to increasing demand.[4]
The development of CP/M 2.0 occurred primarily under John Pierce’s direction in 1978 at Digital Research. Kathryn Strutynski joined the company in 1979, initially focusing on debugging CP/M 2.0 before making substantial contributions to CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert Silberstein and David K. Brown.[5][6]
While originally named "Control Program/Monitor," the registered trademark filed in 1977 defined CP/M as "Control Program for Microcomputers".[7] This adjustment aligned with naming trends exemplified by Kildall’s PL/M and IBM’s CP/CMS products. The rebranding effort was driven by Kildall alongside his wife and business associate Dorothy McEwen, aiming to transform CP/M from a personal initiative into a commercially recognized product under Digital Research, Inc., positioning it as a leading brand within the microcomputer industry akin to how IBM and Microsoft later branded personal computers.[8]
Early achievements
By September 1981, Digital Research had distributed more than CP/M licenses; however, InfoWorld suggested the true market size was probably larger due to sublicensing arrangements. Numerous manufacturers developed CP/M-based computers targeting various sectors, solidifying CP/M's position as the definitive operating system for small computers. Even companies with their own proprietary systems, such as Heath/Zenith (HDOS), offered CP/M as an option on their 8080/Z80 machines, since no comparable standard existed for widely used 6502 CPU platforms.[9] The broad software ecosystem fueled CP/M's support. For instance, the Xerox 820 adopted CP/M to take advantage of the vast selection of available applications.[10] Due to Digital Research's inadequate documentation, Xerox included a Howard W. Sams CP/M manual; InfoWorld criticized this manual for being incomplete and poorly organized.[11]
By 1984, Columbia University utilized CP/M source code to compile Kermit executables for more than a dozen CP/M variants along with two generic versions.[12] CP/M was characterized as a "software bus",[13][14] facilitating communication between diverse applications and hardware components through standardized interfaces.[15] Software generally maintained portability across various machines, requiring only configuration for terminal and printer controls. This adaptability contributed to CP/M’s widespread adoption and extensive software catalog compared to operating systems limited to a single manufacturer. However, some limitations existed: certain applications utilized the Z80’s extended instruction set, which was incompatible with 8080/8085 CPUs, and many games and graphics programs relied on hardware-specific graphics routines.[9]
Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware platform for CP/M.[16] By 1982, Digital Research announced that CP/M had been licensed for over 450 distinct computer models.[17] Prominent systems running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. Among these, the best-selling CP/M-capable device was likely the Amstrad PCW. In the United Kingdom, CP/M operated on educational computers from Research Machines (with source code released for educational purposes), the BBC Micro enhanced by a Z80 co-processor, the Amstrad CPC line, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 was implemented on the NIAT handheld computer created for A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user versions
Digital Research launched MP/M in 1979, a multi-user adaptation of CP/M that allowed several terminals to connect simultaneously to one computer system, each providing separate user sessions. Subsequent releases expanded support to include 16-bit processors.
CP/M Plus
The last iteration of the 8-bit CP/M series was version 3, commonly called CP/M Plus, which debuted in 1983. Created by David K. Brown, its BDOS incorporated MP/M's bank switching memory management into a single-user, single-task operating system compatible with CP/M 2.2 software. This enhancement enabled the use of memory exceeding 64 KB on 8080 or Z80 processors and introduced new capabilities such as file date stamping. The package also featured a relocating assembler and linker. CP/M Plus was aimed at advanced 8-bit platforms like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX systems, and Radio Shack’s TRS-80 Model 4.
16-bit versions
CP/M extended its reach into the 16-bit processor domain with releases tailored for CPUs such as the Intel 8086.
The initial release in this category was CP/M-86, launched in November 1981 under the leadership of project manager Kathryn Strutynski. To differentiate it from the original, that earlier OS was renamed CP/M-80. Although CP/M-86 was anticipated to become IBM PC’s default operating system, negotiations between Digital Research and IBM over licensing failed. Consequently, IBM aligned with Microsoft, which provided PC DOS based on 86-DOS. Even though CP/M-86 was eventually made available for IBM PCs following legal pressure, it struggled in the market due to IBM pricing it at $240 compared to PC DOS’s $40.
Digital Equipment Corporation’s Rainbow 100 offered multiple operating system choices: CP/M-80 running on a Z80 chip, CP/M-86 or MS-DOS on an 8088 processor, or both simultaneously via CP/M-86/80—allowing users to maintain their investment in 8-bit CP/M applications while transitioning to a 16-bit MS-DOS environment. Likewise, the CompuPro System 816 employed a dual-processor configuration called CP/M 8-16, and the Zenith Z-100 supported software execution across both its processors.
Following CP/M-86, Digital Research introduced CP/M-68K for Motorola’s 68000 CPU in 1982. Originally developed using Pascal/MT+68k and later ported to C, it operated on Motorola EXORmacs hardware and was considered for Atari ST before Atari selected GEMDOS instead. This version also ran on SORD M68 and M68MX computer models.
In the same year, CP/M was adapted for the Zilog Z8000 CPU found in the Olivetti M20 under the name CP/M-8000, written in C.
These 16-bit variants required applications to be recompiled. To facilitate this process, Digital Research provided tools such as XLT86—an assembler source code translator that converted Intel 8080 assembly into optimized Intel 8086 instructions—enabling automated porting of CP/M-80 and MP/M-80 programs to their respective 16-bit versions. XLT86 was implemented in PL/I-80 and operated under both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications existed for CP/M, positioning it as the expected standard OS for 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for their upcoming IBM PC. However, after failing to obtain a signed non-disclosure agreement from Digital Research, IBM instead contracted Microsoft to supply an operating system.
MS-DOS shared numerous foundational elements with CP/M, including file management structures and drive letter assignments (A:, B:, etc.). Its principal advancement was the adoption of the File Allocation Table (FAT) file system, which simplified porting popular CP/M software such as WordStar and dBase. Unlike CP/M’s use of separate user file areas, MS-DOS leveraged access to larger memory spaces (typically starting at 64 KB), enabling more comprehensive built-in command-line utilities that enhanced performance and usability on floppy disk–based PCs.
Early peripherals for the IBM PC included expansion cards like Baby Blue that allowed execution of 8-bit CP/M programs on the new hardware. Despite this compatibility option, by 1982 BYTE magazine characterized MS-DOS as "far more user-friendly, faster, with many additional benefits." InfoWorld reported in 1984 that CP/M faced challenges in home computing due to elevated software prices. By 1986, manufacturers such as Kaypro had discontinued production of CP/M-based machines to concentrate on MS-DOS–compatible products. As industry momentum shifted toward IBM-compatible platforms, CP/M rapidly lost market presence and ceased receiving coverage in major publications like Byte magazine by the late 1980s.
Subsequent versions of CP/M-86 enhanced compatibility and performance relative to MS-DOS, eventually being rebranded 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 Digital Research's console command processor (CCP). The development team, known as "The CCP Group," was headed by Richard Conn and included contributors such as Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias.
The initial release, 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 introduced on 14 February 1983 across ten SIG/M disks; this version was later upgraded to 2.3 and also ported to 8080 machine code to accommodate both 8080 and 8085 processors.
To commercialize later iterations while maintaining free availability, Conn partnered with Frank Gaude to establish Echelon Inc. On 14 July 1984, ZCPR3 was issued via nine SIG/M disks, incorporating advanced features such as shell environments, alias commands, input/output redirection, flow control mechanisms, named directory support, search path capabilities, customizable menus, password protection, and integrated online help. Although ZCPR3 could be compiled for 8080 CPUs with limited functionality, support for the 8080 architecture was eventually discontinued in subsequent versions.
Richard Conn ended his involvement in January 1987; thereafter, Echelon contracted Jay Sage to continue product enhancement. The release of ZCPR 3.3 brought numerous new functionalities and utilities; however, despite enthusiastic user adoption, it was insufficient to halt the diminishing market presence of CP/M.
Hardware model
A basic CP/M system operating on an 8-bit architecture required the following components:
- A computer terminal capable of ASCII communication
- A microprocessor from the Intel 8080/8085 series or the Zilog Z80
- NEC V20 and V30 CPUs provided 8080 emulation modes enabling CP/M operation on PC-DOS/MS-DOS platforms
- Minimum memory of 16 KB RAM starting at address zero
- A bootstrap mechanism for loading the initial disk sector
- At least one floppy disk drive
While Digital Research officially supported only the Intel 8080 Development System hardware, numerous manufacturers adapted CP/M to suit their specific machines. The Z80’s backward compatibility with the 8080 allowed extensive deployment of CP/M on Z80-based computers; often BIOS and application software exploited Z80-specific instructions for enhanced performance.
Collaborations between Digital Research, Zilog, and American Microsystems produced Personal CP/M—a ROM-resident variant aimed at cost-effective systems lacking disk drives—first implemented in the Sharp MZ-800 cassette system with optional disk storage. Personal CP/M leveraged advanced Z80 instructions rather than preserving full compatibility with the original 8080 instruction set.
American Microsystems introduced the S83 processor—a Z80-compatible chip featuring an integrated 8 KB ROM containing OS and BIOS code along with logic for interfacing dynamic RAM devices—priced around $32 per unit in volume quantities.
Most CP/M systems utilized a minimal ROM-based bootloader combined with techniques like bank switching or bus injection to load executable code at address zero. This approach was necessary because the 8080 CPU mandates boot code at this location while CP/M requires RAM there during operation. Certain systems necessitated manual bootstrap entry via front-panel controls during startup sequences.
CP/M employed a standard 7-bit ASCII character encoding; however, manufacturers varied in their use of the eighth bit for extended characters—for example, Kaypro incorporated Greek letters, Osborne used it to indicate underlining, and WordStar employed it to mark word endings. International editions often substituted specific ASCII characters according to ISO 646 standards rather than adding new eighth-bit characters.
Components
When CP/M is active in memory, it consists of three main parts:[18][19][20][21][22]
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
BIOS and BDOS remain resident in memory, whereas the CCP stays loaded until an application replaces it, after which it automatically reloads. Standard utility commands are transient and stored as .COM files on disk.
The BIOS manages hardware peripherals other than the CPU and main memory, overseeing tasks such as character input/output and reading or writing disk sectors. BDOS operates above BIOS, providing file system management and input/output abstractions. The CCP interprets user commands, executing built-in commands like DIR and ERA or launching executable transient programs such as PIP.COM and STAT.COM. Third-party software for CP/M functions as transient commands.
While BDOS, CCP, and typical transient utilities remain uniform across different installations of a given CP/M version, the BIOS is specifically tailored to the hardware platform.
To utilize additional memory, CP/M must be reinstalled so transient applications can access the expanded space. The MOVCPM tool relocates object code by modifying absolute jump and subroutine addresses to fit new memory locations. This patched OS image is saved on disk, enabling applications to benefit from the increased memory. After installation, BIOS, BDOS, and CCP occupy dedicated disk areas used during system boot. Typically, a bootloader stored in ROM firmware initiates loading of the operating system from drive A:.
By contemporary standards, CP/M is relatively simple due to stringent program size restrictions. Early releases lacked automatic detection of disk changes, which could cause data corruption if disks were swapped without refreshing directory information. Later editions introduced error notifications when writes occurred before directory updates, preventing overwrites but necessitating a reboot.
The bulk of system complexity lies within BDOS and, to a lesser degree, CCP and transient commands. Porting minimal BIOS routines to new hardware allowed the entire OS to operate with minimal effort, accelerating development and contributing to CP/M’s widespread use. This layered hardware abstraction was pioneering at the time; most operating systems then were designed for single platforms without such modular architectures.
Console Command Processor
The Console Command Processor (CCP) manages user keyboard input and displays output on terminals. CP/M supports both printing and video terminals and shows the A> prompt to indicate the current default disk drive. Users can switch drives by entering 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 systems like RT-11 and OS/8. Commands begin with keywords followed by parameters separated by spaces or special characters. Internal commands are executed directly by the CCP; unrecognized commands cause loading of executable "transient" programs from disk. After these programs finish, the CCP reloads to free memory.
Some command names derive from legacy utilities—for instance, PIP stands for Peripheral Interchange Program used for copying files. Parameter syntax varies between programs without a unified option character.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Common transient commands consist of ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands are enhanced with DIR, DIRSYS/DIRS, ERASE/ERA, RENAME/REN, TYPE/TYP, and USER/USE supporting abbreviations. Transient commands available in CP/M 3 include 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) is responsible for managing tasks such as file operations, console display, and printing functions. Programs interact with BDOS by placing function identifiers and relevant parameters into processor registers, followed by invoking a predetermined memory location. This uniform method guarantees software interoperability across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) oversees the fundamental hardware interactions within CP/M, including character input/output and reading or writing disk sectors. While BDOS handles disk data buffering, BIOS takes care of device-specific characteristics like sector dimensions, which differ between 8-inch and 5.25-inch floppy disks.
Because of the wide range of hardware configurations—such as integrated video units versus separate terminals, different UART chips managing serial communication, and diverse I/O address mappings—BIOS requires customization. This layer of abstraction allows CP/M to operate on multiple machines without modifying higher-level software for hardware differences. Modem functionality is either limited or nonexistent in BIOS; thus, CP/M applications that utilize modems often rely on user-installed overlays to access serial ports.
Applications
CP/M was the platform for several groundbreaking business software products. WordStar, one of the earliest widely embraced word processors, along with dBase, a well-known database system for microcomputers, were first created for CP/M. Early outlining tools such as KAMAS and its successor Out-Think also originated on CP/M before being ported to MS-DOS.
Development tools like Turbo Pascal—the precursor to Borland Delphi—and Multiplan, which later evolved into Microsoft Excel, initially appeared on CP/M before their MS-DOS counterparts. The pioneering spreadsheet VisiCalc and Sorcim’s leading SuperCalc were also aimed at CP/M users. Autodesk’s CAD software AutoCAD debuted on this platform as well. A variety of compilers and interpreters supporting languages such as BASIC, FORTRAN, PL/I, along with early Microsoft programming tools, were available.
CP/M programs frequently included installation utilities to adapt software between different hardware formats; for example, Kaypro II owners could convert applications from Xerox 820 disk formats to their native system. The widespread availability of BASIC source code and weak copy protection contributed to broad compatibility; disks that could not be read were typically incompatible with CP/M standards.
The lack of standardized graphics limited video game development on CP/M; however, text-based games like Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction titles such as the Zork series and Colossal Cave Adventure were ported successfully. Infocom consistently released titles in CP/M format. Lifeboat Associates distributed user-generated freeware like XMODEM, which provided reliable file transfers over modems. The outlining program KAMAS was another notable native application.
Transient Program Area
In the original CP/M versions for the 8080, 8085, and Z80 processors, the read/write memory region spanning from address 0100 hexadecimal up to just before the BDOS entry point at 0006H was designated as the Transient Program Area (TPA), reserved for application use. Although these CPUs supported addressing up to 64 KB of memory, the TPA size depended on system architecture. Certain systems allocated significant portions of address space to BIOS ROMs or video memory, thereby decreasing available TPA size. To expand TPA capacity, bank switching was often employed by swapping out ROM or video memory segments. Additionally, CP/M 3.0 introduced the capability for sections of BDOS to reside within bank-switched memory areas.
Application Debugging
CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and alter memory and program components, as well as execute programs one instruction at a time.
Resident Utilities
At first, CP/M did not support terminate-and-stay-resident (TSR) programs like those found in DOS. Nevertheless, developers could intercept operating system calls to enhance capabilities, enabling add-on utilities such as SmartKey, a keyboard enhancement tool. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, which could be loaded without requiring a transient program by using a null command file. Additionally, third-party solutions like Resident System Modules (RSMs) were adapted for CP/M 2.2 to provide similar functionality.
Installation of Software
Although CP/M abstracted hardware for disk and console input/output operations, most applications needed installation procedures to accommodate device-specific features like printers and terminals. These peripherals often utilized proprietary escape sequences for functions such as bold text printing. Installation utilities permitted users to select devices or tailor escape sequences; however, this configuration was necessary for each individual application since there was no unified OS-level service managing these devices.
Printer initialization codes were embedded directly within application software. For instance, Wordstar required distinct versions customized for different printers (such as dot-matrix versus daisy wheel), compelling users to load the appropriate version when changing printers.
Disk Formats
The standard 8-inch floppy disk format for CP/M is based on the IBM System/34 and IBM 3740’s 128-byte sector, single-density, single-sided design. No universal 5.25-inch floppy format exists for CP/M; instead, manufacturers like Kaypro, Morrow Designs, Osborne, and others each implemented their own formats. Certain formats gained wider acceptance—most software was distributed in the Xerox 820 format, compatible with systems such as the Kaypro II—but in 1981 InfoWorld reported that approximately two dozen disk formats were sufficiently popular that software developers needed to support them to maximize market reach. For example, JRT Pascal was available on multiple 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), and Superbrain systems, along with an 8-inch version. Ellis Computing supported both Heath formats and sixteen additional 5.25-inch variants including TRS-80 CP/M types. Lifetree and other distributors also converted CP/M applications across various platforms.
CP/M allows customization of reserved and directory areas on disks as well as the mapping between logical and physical sectors, facilitating system-specific disk layouts. However, there is no standardized method for loading configuration parameters from disks formatted by different systems.
Nearly all CP/M machines equipped with 8-inch drives can read the IBM single-sided single-density format; nonetheless, compatibility with other disk formats depends heavily on the type of drive and controller due to the wide variety of floppy disk standards in both 8- and 5.25-inch sizes. Disks differed in sectoring methods (hard or soft), density levels (single or double), number of sides (single or double), track counts (35, 40, 77, or 80), sector arrangements, size, and interleave patterns. Translation utilities enabled reading some cross-format disks; for example, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. However, certain disks such as those with 80 tracks or hard sectoring were incompatible. Apple II users were confined to Apple's GCR format and required Apple-specific disks or serial transfer methods.
The fragmented nature of the CP/M disk ecosystem compelled distributors to maintain inventories of multiple disk formats or invest in multiformat duplication equipment. This lack of standardization compared to IBM PC disk formats played a major role in CP/M’s rapid decline after 1981.
Among the final noteworthy CP/M-compatible computers was the Commodore 128 released in 1985, which included a Z80 processor dedicated to running CP/M alongside its native CPU. Operating CP/M on this system required either a 1571 or 1581 disk drive capable of handling soft-sector 40-track MFM formatted disks.
The first machine equipped with a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also supported both 3.5-inch floppy drives and RAM disks. The Amstrad PCW initially employed 3-inch floppy drives before transitioning to 3.5-inch media.
File system
File naming followed the 8.3 convention, allowing up to eight characters, followed by a period and a three-letter extension denoting the file type (for instance, .COM for executable files or .TXT for text documents). When entered at the command line, filenames were automatically converted to uppercase; however, some applications such as MBASIC could generate lowercase filenames that were not easily accessible via the command prompt.
Disk drives were designated by letters (e.g., A, B), and files were referenced by prefixing the drive letter and colon, like A:FILE.TXT. If no drive letter was specified, the system defaulted to using the current drive.
File sizes were recorded in units of 128-byte records, equivalent to disk sectors. Precise byte counts were generally unsupported; instead, file size was maintained within the file's File Control Block (FCB). Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, which affected how file editing and truncation operated.
The introduction of larger removable and fixed disk drives brought about disk de-blocking, which expanded logical file allocation units from 1 KB on single-density media up to 32 KB on higher-density disks. Although this enabled handling bigger files, it also increased the minimum allocation size, resulting in less efficient use of disk space for numerous small files.
Prior to CP/M 3.0, file modification timestamps were not supported but became optional features in MP/M and CP/M 3.0.
CP/M version 2.2 did not include subdirectories, but it provided 16 numbered user areas for organizing files. Users could switch between these areas using the "User X" command (where X ranges from 0 to 15), with USER 0 as the default setting. This mechanism allowed basic multi-user file separation without security controls—files stored in USER 0 were accessible to all users, whereas other user areas isolated files per user. While this feature offered limited benefit on small floppy disks, it proved useful on systems equipped with hard drives by facilitating task separation and preventing file mixing—for example, enabling separate data entry and billing operations on a single PC.
Graphics
Although S-100 systems with graphics capabilities existed early on, CP/M did not standardize graphics support until 1982 with the release of GSX. Due to memory constraints on 8-bit CP/M machines, graphics usage was rare; these systems typically displayed simple ASCII art or relied on custom character sets. Certain models, such as the Kaypro series and the TRS-80 Model 4, supported block graphics accessible through assembler programming or BASIC's CHR$ function. The TRS-80 Model 4 could achieve resolutions up to 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Several companies developed official CP/M enhancements derived from Digital Research’s source code, including IMDOS for the IMSAI 8080, which was a clone of the Altair 8800.
Compatible
A variety of independently developed CP/M-compatible operating systems emerged without relying on Digital Research code, such as:
- Cromemco CDOS by Cromemco
- MSX-DOS, designed for MSX computers and compatible with CP/M software
- Epson QX-10 providing either CP/M or TPM-II/III-compatible operating systems
- The British ZX Spectrum-compatible SAM Coupé, which offered Pro-DOS—a CP/M-2.2-compatible OS option
- Amstrad/Schneider CPC and PCW models shipped with CP/M disk packs
- The Husky (computer) utilized DEMOS, a ROM-based loader supporting many CP/M applications
- ZSDOS, a BDOS replacement for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free OS compatible with CP/M 2.2 originally developed without DR code; it is currently being updated with original Digital Research components following permission granted by Lineo’s president in 2022
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible system incorporating original DR source code alongside hot-swap utilities for OS modules
- IS-DOS for the Enterprise, developed by Intelligent Software
- VT-DOS for the Videoton TV Computer, also created by Intelligent Software
Enhancements
Certain CP/M-compatible operating systems notably broadened capabilities, including TurboDOS, which supported multi-processor configurations.
Eastern bloc
In the former Eastern Bloc, multiple CP/M-80 variants were developed under various names such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, and CP/L. Additionally, CP/M-86 versions like SCP1700, CP/K, and K8918-OS were manufactured by companies including the East German VEB Robotron.
Legacy
Many features found in Microsoft Windows are derived from its MS-DOS heritage, which in turn was influenced by CP/M. Examples include the assignment of drive letters (A and B for floppy drives, C for hard disks), the 8.3 filename format, wildcard symbols (? and *), and reserved device identifiers such as "PRN:" and "CON:". The use of the control character ^Z to signify end-of-file in text files also traces back to CP/M. Commands like DIR, REN/RENAME, and TYPE as well as common file extensions such as .TXT and .COM originated within the CP/M environment.
Between 1997 and 1998, Caldera made CP/M 2.2 binaries and source code available under an open source license. This permitted redistribution and modification of Digital Research’s CP/M and MP/M files through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo, then custodian of these assets, updated and expanded the licensing terms.
To mark its 40th anniversary in October 2014, the Computer History Museum published early CP/M source code.
As of 2018, enthusiasts of vintage computing alongside some niche commercial entities continue to develop and maintain systems primarily running CP/M 2.2.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently derived OS based on CP/M
- Eagle Computer
- IMDOS
- List of machines running CP/M
- MP/M
- MP/NET and MP/NOS
- Multiuser DOS
- Pascal/MT+
- SpeedStart CP/M
- 86-DOS
- Kenbak-1
Further reading
- Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
- Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
- Z-System Corner: Tenth Anniversary of ZCPR, The Computer Journal, Issue 54
- The origin of CP/M's name (archived)
- Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013 (archived)
- Computer History Museum, IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, 2014
- PBS, Triumph of the Nerds (details IBM's choice of Microsoft DOS over Digital Research's CP/M for IBM PC)
- CP/M FAQ, comp.os.cpm
External links
- The Unofficial CP/M Web site – Contains source code
- Gaby Chaudry's Homepage for CP/M and Computer History – Features ZCPR resources
- CP/M Main Page – John C. Elliott’s technical resource
- MaxFrame's Digital Research CP/M page
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1980_CPM - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1975_BDOS - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedjohnson - ↑ ...
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedBrown-Strutynski-Wharton_1983 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedStrutynski_2010 - ↑ 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 - ↑ 9.0 9.1 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 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