CP/M-MIC
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
Key people | Gary Kildall, Kathryn Strutynski, Dorothy McEwen |
| Products | CP/M, PL/M compiler |
CP/M, an acronym initially representing Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely adopted operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. Designed as a disk operating system, CP/M manages file organization on magnetic disks and facilitates program loading from these storage devices. Although its early versions supported only single-tasking on 8-bit processors with a maximum of 64 kilobytes of memory, subsequent releases introduced multi-user functionality and compatibility with 16-bit processor architectures.
The fundamental elements of CP/M consist of the Basic Input/Output System (BIOS), responsible for hardware and device driver management; the Basic Disk Operating System (BDOS), which oversees the file system and application-level services; and the Console Command Processor (CCP), functioning as the command-line interpreter equipped with built-in commands.
CP/M established itself as the de facto standard operating system for microcomputers, particularly prevalent on S-100 bus hardware, dominating business use from the late 1970s until the mid-1980s. By enabling easier application portability across different manufacturers’ hardware, it broadened both hardware and software markets. The affordability of CP/M-based microcomputers spurred software development innovation, with independent programmers frequently exchanging applications within user communities. However, CP/M’s dominance waned following the 1981 introduction of the IBM PC, which propelled the widespread 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 a Shugart Associates 8-inch floppy-disk drive paired with a custom controller. The system was programmed in Kildall’s proprietary language, PL/M. The design of CP/M drew inspiration from the DECsystem-10's TOPS-10 OS, which Kildall had employed during his development work.
CP/M was compatible with numerous machines based on the 8080 and Z80 processors. One of its earliest licensees was Gnat Computers, which acquired rights to CP/M version 1.0 for $90 in 1977. Rapidly increasing demand enabled Digital Research to raise licensing fees significantly within a year, reaching amounts in the tens of thousands of dollars.
Under Kildall’s guidance, John Pierce spearheaded development of CP/M 2.0 in 1978. Kathryn Strutynski, who had been a colleague at the Naval Postgraduate School, joined Digital Research as its fourth employee in early 1979, initially focusing on debugging CP/M 2.0 before making substantial contributions to CP/M 2.2 and CP/M Plus. Other key early contributors included Robert Silberstein and David K. Brown.
Originally named "Control Program/Monitor," CP/M’s title was changed to "Control Program for Microcomputers" during its commercial debut in November 1977. This renaming aligned with similar naming patterns like Kildall’s PL/M and Prime Computer’s PL/P, reflecting IBM’s influence on industry terminology. The rebranding was part of strategic efforts by Kildall, his wife, and business partner Dorothy McEwen to commercialize both CP/M and the PL/M compiler under the Digital Research name. Their objective was to position Digital Research as synonymous with "microcomputer," akin to how IBM and Microsoft later branded themselves. Consequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses; however, InfoWorld suggested the actual market size was probably larger due to sublicensing agreements. A variety of manufacturers developed CP/M-based machines aimed at different sectors, solidifying CP/M's position as the definitive operating system for small computers. Companies that offered proprietary operating systems, such as Heath/Zenith with HDOS, also provided CP/M as an option on 8080/Z80 hardware, a contrast to the 6502 CPU segment, which lacked a similar universal OS.[1] The extensive software ecosystem was a key factor behind this widespread adoption. For instance, the Xerox 820 utilized CP/M specifically to access its large application library.[2] To offset Digital Research’s inadequate documentation—which InfoWorld criticized for being incomplete and poorly organized—Xerox included a Howard W. Sams CP/M manual with their systems.[3] By 1984, Columbia University had employed the same source code to compile Kermit binaries across more than a dozen CP/M platforms.[4]
CP/M was often characterized as a "software bus",[5][6] providing a standardized interface through which multiple applications could communicate with hardware.[7] Applications were typically portable between different machines, needing only adjustments for terminal and printer controls. This cross-platform compatibility contributed significantly to CP/M’s popularity and its extensive software catalog compared to operating systems that were hardware-specific. However, some limitations existed: certain programs leveraged Z80-specific instructions that did not function on 8080/8085 CPUs, and graphics routines were often tailored to individual machines due to direct hardware manipulation for performance reasons.
Bill Gates pointed out that the Apple II equipped with a Z-80 SoftCard was the leading platform for running CP/M.[8] By 1982, Digital Research announced that CP/M had been licensed for use on over 450 different computer models.[9] Prominent systems utilizing CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The most widely sold CP/M-capable device was probably the Amstrad PCW. Within the UK market, CP/M was accessible on Research Machines educational computers—with source code released for instructional purposes—on the BBC Micro outfitted with a Z80 co-processor, as well as on platforms like the Amstrad CPC, Commodore 128, TRS-80, and later models of the ZX Spectrum. Additionally, CP/M 3 served as the operating system for the NIAT handheld computer designed for A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Versions
In 1979, Digital Research introduced MP/M, a multi-user variant derived from CP/M. This version enabled several users to access a single machine simultaneously through individual terminals, each equipped with its own display and keyboard. Subsequent releases expanded support to include 16-bit processors.
CP/M Plus
The last iteration of the 8-bit CP/M series, known as CP/M 3 or CP/M Plus, was introduced in 1983 featuring a BDOS created by David K. Brown. This version incorporated MP/M's bank switching memory management techniques into a single-user operating system that remained compatible with CP/M 2.2 programs, thus enabling access to memory beyond 64 KB on 8080 or Z80 processors. Enhancements included file date stamping along with integrated relocating assembler and linker utilities. CP/M 3 was designed for advanced 8-bit machines like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.
16-bit versions
Digital Research expanded CP/M to support 16-bit processors, beginning with CP/M-86 for the Intel 8086 CPU released in November 1981. The development and management of the CP/M-86 product line were overseen by Kathryn Strutynski. The original 8-bit CP/M system was subsequently designated as CP/M-80.
Although CP/M-86 was anticipated to become the standard operating system for the IBM PC, unsuccessful licensing talks prompted IBM to select Microsoft's PC DOS, which was derived from 86-DOS. Despite later availability as an alternative following legal intervention, CP/M-86 never achieved widespread adoption compared to PC DOS, partly due to IBM pricing CP/M-86 at $240 while PC DOS retailed for $40.
The Digital Equipment Corporation Rainbow 100 featured support for running CP/M-80 on a Z80 processor, as well as CP/M-86 or MS-DOS on an 8088 CPU, either separately or simultaneously—allowing users to maintain their existing 8-bit software investments during the transition to 16-bit platforms. Similar dual-CPU configurations were found in systems such as CompuPro System 816 with its CP/M 8-16 and the Zenith Z-100 running a variant of CP/M-86 capable of addressing both processors.
Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 processor. Initially developed using Pascal/MT+68k and later rewritten in C, this version operated on Motorola EXORmacs hardware and was considered by Atari for its ST line before Atari selected GEMDOS instead. It was also implemented on SORD M68 and M68MX machines.
Also released in 1982 was CP/M-8000, written in C for the Zilog Z8000 processor and utilized on the Olivetti M20 computer.
All these 16-bit variants of CP/M required programs to be recompiled for compatibility. Certain assembly language applications could be converted automatically using tools like Digital Research’s XLT86, which translated Intel 8080 .ASM files into Intel 8086 .A86 code. This process optimized executable size and adjusted calling conventions to facilitate migration from CP/M-80/MP/M-80 environments to CP/M-86/MP/M-86 systems. XLT86 was developed in PL/I-80 and was operable on both CP/M-80 and VAX/VMS platforms.
Displacement by MS-DOS
By the early part of the 1980s, approximately two thousand applications existed for CP/M, positioning it as the expected dominant OS for emerging 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license CP/M for use on its forthcoming IBM Personal Computer. However, failure to secure a signed non-disclosure agreement led IBM to contract Microsoft instead for an operating system solution.
MS-DOS borrowed heavily from CP/M’s architecture, including file management schemes and drive letter assignments (A:, B:, etc.). Its principal advancement was the introduction of the FAT file system, which simplified porting widely used CP/M software such as WordStar and dBase. Additionally, MS-DOS could utilize more memory (generally at least 64 KB compared to CP/M’s minimum of 16 KB), allowing a richer set of built-in commands within its command interpreter and delivering improved responsiveness on floppy disk-based PCs.
Early IBM PC add-ons like the Baby Blue card enabled running legacy 8-bit CP/M applications; however, by 1982 industry reviews favored MS-DOS for its superior speed, ease of use, and fewer limitations. Attempts throughout the early 1980s to establish CP/M in the home computing market largely faltered due to high software expenses. By 1986, manufacturers such as Kaypro had discontinued producing machines based on CP/M in favor of those compatible with MS-DOS. As personal computing gravitated toward IBM-compatible architectures, CP/M rapidly declined in market presence and media coverage diminished significantly.
Subsequent releases of CP/M-86 enhanced compatibility and performance relative to MS-DOS, eventually leading to rebranding under names like 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 Digital Research's console command processor (CCP). It originated from "The CCP Group," a collective of enthusiasts led by Richard Conn, with members including Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias.
The initial version, ZCPR1, appeared on a SIG/M (Special Interest Group/Microcomputers) disk. Subsequently, ZCPR2 was released on 14 February 1983 as a set of ten SIG/M disks, later upgraded to version 2.3 and adapted into 8080 machine code to support a wider range of CPUs.
Richard Conn and Frank Gaude established Echelon Inc. to commercialize ZCPR while preserving its free availability. The release of ZCPR3 occurred on 14 July 1984 via nine SIG/M disks, accompanied by a streamlined 8080-compatible edition. By this stage, the system incorporated features such as command shells, aliasing, input/output redirection, flow control mechanisms, named directory support, search path functionality, customizable menus, password protection, and integrated online help.
Development halted in January 1987 when Conn stepped back; Echelon then engaged Jay Sage to advance the project further. This collaboration produced ZCPR 3.3, which discontinued 8080 compatibility and introduced numerous enhancements and additional utilities. Despite widespread enthusiasm from CP/M users, ZCPR alone could not halt the decline of CP/M’s market presence.
Hardware model
A basic 8-bit CP/M setup required the following components:
- A terminal compatible with ASCII
- A microprocessor such as the Intel 8080/8085 or the Zilog Z80
- NEC V20 and V30 processors supported 8080 emulation, enabling CP/M operation on PC-DOS/MS-DOS hardware; similarly, PC clones could run CP/M-86
- A minimum of 16 KB RAM starting 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; other vendors adapted CP/M to fit their specific hardware configurations. Although CP/M’s core avoided using instructions unique to the Z80 processor, many Z80-based machines implemented those instructions within their BIOS and application software.
Digital Research collaborated with Zilog and American Microsystems to create Personal CP/M—a ROM-based operating system designed for low-cost computers lacking disk drives. This OS first appeared in the Sharp MZ-800 (a cassette-driven system with optional disk support) and favored advanced Z80 instructions over maintaining compatibility with the 8080 architecture. American Microsystems released the S83 microprocessor featuring an 8 KB ROM containing OS and BIOS code plus circuitry for dynamic RAM interfacing; it was priced at $32 per unit in volume production.
Most systems utilized a minimal ROM bootloader combined with bank switching or bus injection techniques to load CP/M at address zero; some machines required manual input through front-panel controls.
CP/M employed the standard 7-bit ASCII character set; however, its extended 8-bit range was not standardized and varied among manufacturers—for instance, Kaypro used it for Greek letters, Osborne applied it for underlining characters, and WordStar designated it as an end-of-word marker. International versions frequently adopted ISO 646 standards by substituting certain ASCII characters rather than extending beyond the basic 7-bit set.
Components
The CP/M operating system loaded into memory during execution comprises three primary 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 stays resident unless replaced by an application program—in which case it reloads automatically afterward. Transient commands corresponding to standard utilities reside as .COM files on disk storage.
The BIOS manages hardware functions external to the CPU and memory, including character input/output and reading or writing disk sectors. The BDOS oversees file system operations and input/output abstractions such as redirection; it operates atop the BIOS layer. The CCP parses user commands, executing built-in commands (e.g., DIR or ERA) or invoking executable transient programs (e.g., PIP.COM for copying files). Third-party software typically functions as transient commands.
While BDOS, CCP, and standard transient utilities remain consistent across various CP/M versions, BIOS implementations are tailored specifically for each hardware platform.
Expanding available memory necessitates reinstalling CP/M so that transient programs can access the additional space. The MOVCPM utility modifies object code by adjusting absolute jump and subroutine addresses to relocate programs within expanded memory areas. The modified OS image is saved back to disk allowing applications to exploit increased memory capacity. Operating system components reside in reserved disk sectors used during booting; startup loads the OS from drive A: utilizing a bootloader generally embedded in ROM firmware.
From a contemporary perspective, CP/M appears primitive due to stringent limits on program size. Early releases lacked detection of disk changes which risked data corruption if disks were swapped without reloading directory information. Later versions introduced fatal error checks to prevent overwriting but required system reboot afterward.
The core complexity of CP/M lies mainly within BDOS and partially in CCP and transient commands. Porting BIOS routines to new hardware platforms enabled rapid deployment of the OS across diverse machines—fueling CP/M’s widespread adoption. This innovative hardware abstraction layer concept contrasted with other operating systems of that era which were typically confined to single hardware platforms.
Console Command Processor
The Console Command Processor (CCP) is responsible for processing keyboard inputs and displaying output on the terminal. CP/M functions with both printing and video terminals, requiring all commands to be entered through the command line. The prompt, commonly shown as A>, reflects the current default disk drive. Users can switch this default by entering the drive letter followed by a colon (for example, B:), which then updates the prompt accordingly.
Inspired by Digital Equipment's Concise Command Language—used in systems like RT-11 and OS/8—CP/M commands consist of a keyword followed by optional parameters. Commands internal to CCP are executed immediately; otherwise, CCP loads executable "transient" programs from disk, forwarding any parameters. Upon completion, BDOS may reload CCP to free memory for these transient applications.
Certain commands retain legacy or less common names; for instance, file copying is performed with PIP (Peripheral Interchange Program), a utility derived from DEC systems. Parameter syntax varies between programs, as there is no universal option character convention.
Examples of built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass ASM, DDT, DUMP, ED, PIP, and SYSGEN.
In CP/M Plus (Version 3), the built-in command set is enhanced with additions such as DIR (excluding SYS files), DIRSYS, ERASE, RENAME, TYPE, and USER commands, which also support abbreviation of built-in names. The transient command list expands to include utilities like COPYSYS, DATE, DEVICE, HELP, LINK, PIP, SET, among others, enabling more advanced system management capabilities.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees fundamental tasks such as file management, console output, and printing operations. Applications interact with BDOS by loading specific function codes and parameters into processor registers before invoking a fixed memory address. This standardized interface guarantees that software remains compatible across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers essential low-level services including character input/output and reading or writing disk sectors. While BDOS manages certain aspects of disk buffering, BIOS handles device-specific operations like managing sector sizes and buffer allocations, which differ depending on the hardware.
Because hardware configurations vary widely—from integrated video displays to standalone terminals, different UART chips for serial communication, and diverse I/O address mappings—BIOS customization is required. It provides uniform entry points for CP/M services that abstract these hardware differences. Since BIOS offers limited or no modem support, CP/M applications often incorporate user-supplied overlays to facilitate serial communication functions.
Applications
CP/M served as the foundational environment for several prominent software titles, including WordStar (word processing), dBase (database management), KAMAS and Out-Think (outliners), Turbo Pascal (the forerunner of Borland Delphi), Multiplan (which evolved into Microsoft Excel), and VisiCalc (recognized as the pioneering spreadsheet). Sorcim’s SuperCalc rose to prominence as the leading spreadsheet on CP/M and later vied for dominance in the MS-DOS arena. Autodesk launched AutoCAD initially on the CP/M platform. The operating system supported a broad spectrum of programming languages, offering compilers and interpreters for BASIC, FORTRAN, PL/I, alongside early Microsoft-developed tools.
CP/M applications frequently included installation utilities designed to adapt software across various hardware configurations. For instance, Kaypro II owners could convert programs from Xerox 820 disk formats to their native disk structure. BASIC source code was commonly distributed openly, and copy protection mechanisms were generally ineffective due to CP/M’s standardized disk formats that ensured interoperability among different software.
The limited graphical capabilities restricted the development of video games; nevertheless, numerous text-based games such as Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction classics like Zork and Colossal Cave Adventure were ported to CP/M. Infocom consistently released titles compatible with this OS. Lifeboat Associates distributed a variety of user-generated freeware, including XMODEM, which facilitated reliable file transfers over modems. KAMAS stood out as a noteworthy native outliner application developed specifically for CP/M.
Transient Program Area
In the initial implementations of CP/M for processors like the 8080, 8085, and Z80, the memory region designated for application programs—called the Transient Program Area (TPA)—spanned from address 0100 hexadecimal up to just below 0006H (the starting address of BDOS). Although these CPUs could access up to 64 KB of memory, the actual TPA size depended heavily on system architecture. Some machines reserved substantial portions of address space for BIOS ROMs or video memory buffers, thereby reducing available TPA. To counter this limitation, bank switching techniques were employed to swap out ROM or video memory segments dynamically, increasing usable TPA size. With CP/M 3.0, this concept was extended by allowing parts of BDOS to reside within bank-switched memory regions.
Debugging application
CP/M featured a Dynamic Debugging Tool (DDT), which provided capabilities to inspect and modify memory contents and program modules interactively, as well as to execute programs incrementally for detailed analysis.
Resident programs
Initially, CP/M did not support terminate-and-stay-resident (TSR) programs comparable to those in DOS. Nonetheless, developers devised methods to intercept operating system calls to augment functionality, resulting in auxiliary desk accessories such as SmartKey—a keyboard utility that mapped predefined strings to specific keys. CP/M 3 introduced Resident System Extensions (RSX), which could be loaded dynamically without relying on transient programs. Additionally, third-party solutions like Resident System Modules (RSMs) were retrofitted into CP/M 2.2 systems to provide similar extendable features.
Software installation
Although CP/M abstracted hardware interactions for disk and console input/output operations, most applications required installation procedures to enable support for device-specific features such as printers and terminals. These peripherals were commonly controlled through escape sequences that varied significantly between manufacturers and models. Installation utilities allowed users to select their devices or customize escape codes according to functional requirements. Because no centralized operating system service managed these devices uniformly, this setup process had to be repeated individually for each program.
Printer initialization commands were embedded directly within application software. For example, running WordStar with different printer types—such as dot-matrix versus daisy wheel—necessitated distinct versions tailored for each printer model. Consequently, users had to exit and reload the software when switching between printer hardware.
Disk formats
The 128-byte-per-sector, single-density, single-sided disk format used by the IBM System/34 and IBM 3740 became the standard 8-inch floppy disk format for CP/M. In contrast, no universal 5.25-inch disk format existed within the CP/M ecosystem; manufacturers like Kaypro, Morrow Designs, Osborne, and others each implemented their unique versions. Among these, certain formats gained wider acceptance—most notably, the Xerox 820 format was common and compatible with systems such as the Kaypro II. Nevertheless, InfoWorld reported in 1981 that approximately two dozen disk formats were sufficiently prevalent that software developers needed to support multiple to reach a broad audience. For example, JRT Pascal was distributed on several 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard- and soft-sector), and Superbrain machines, along with a separate 8-inch version. Ellis Computing accommodated both Heath formats plus sixteen additional 5.25-inch variants, including modifications for TRS-80 CP/M. Other vendors like Lifetree also adapted CP/M applications to various hardware platforms.
Disk formats differed significantly depending on system architecture and disk physical traits. While CP/M allowed users to configure reserved sectors, directory size, and logical-to-physical sector assignments, it did not provide a standardized mechanism to import formatting parameters from disks created on different systems.
Nearly all CP/M computers equipped with 8-inch drives could read IBM’s single-sided, single-density disks. However, compatibility with other disk formats was influenced by the specific drive and controller hardware due to the wide range of floppy disk types—hard- or soft-sectored; single or double density; single or double sided—with track counts varying from 35 up to 80 tracks. By 1982, the dominant distribution medium for CP/M software on popular consumer platforms such as Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC was the soft-sector, single-sided 40-track 5.25-inch disk. Utilities existed to translate between similar formats; for instance, the Kaypro II could read disks formatted for TRS-80, Osborne, IBM PC, and Epson QX-10 systems. Nevertheless, certain disk types—like 80-track or hard-sectored disks—remained unsupported. Apple II users were limited to Apple’s GCR encoding format and had to acquire CP/M software on Apple-compatible disks or transfer data via serial connections.
This diversity in disk formats compelled distributors either to maintain inventories of multiple disk types or invest in multi-format duplication hardware—a stark contrast to the more uniform IBM PC disk standards—and was a contributing factor in CP/M’s rapid decline post-1981.
Among the last significant machines supporting CP/M was the Commodore 128 (released in 1985), which featured a Z80 processor dedicated to CP/M compatibility alongside its native CPU. This machine required either a 1571 or 1581 drive capable of handling soft-sector 40-track MFM disks.
The earliest computer incorporating 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 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 product for the Apple II also enabled use of both 3.5-inch floppy disks and RAM disks through memory expansion cards. The Amstrad PCW initially utilized 3-inch floppies before transitioning to 3.5-inch drives.
File system
File naming followed the 8.3 convention, allowing up to eight characters before a period and a three-character extension indicating the file type (for example, .COM for executable files, .TXT for text documents). When typed at the command line, filenames were automatically converted to uppercase; however, certain applications—most notably MBASIC—could generate lowercase filenames, which complicated command-line operations.
Disk drives were designated by letters such as A: or B:. To reference files on a particular drive, the drive letter and colon were prefixed to the filename (e.g., A:FILE.TXT). If no drive letter was specified, the system defaulted to the current drive.
File size was recorded in units called records, each consisting of 128 bytes corresponding to disk sectors. The system did not support exact byte-level sizing. Size information was maintained within the File Control Block (FCB). Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, allowing programs to process files as sequences of characters. Introducing a control-Z character mid-file would truncate any subsequent data.
With the introduction of larger removable and fixed disks, disk de-blocking techniques increased the number of disk blocks per allocation block. This enabled support for larger files but also raised the minimum allocation size—from 1 KB on single-density disks up to 32 KB on more advanced drives—leading to inefficient storage when handling numerous small files.
Timestamping for file modifications was not present in CP/M versions up to 2.2 but became optionally available in MP/M and CP/M 3.0.
CP/M 2.2 did not support subdirectories; instead, it provided 16 numbered user areas for organizing files. Users switched between these areas by entering "User X" at the command prompt. Security measures were minimal, reflecting its design for personal computer environments. The user areas served as a bridge between single-user CP/M and multi-user MP/M systems. Files saved within one user area were isolated from others except for USER 0, which was accessible across all users but required explicit path specification. This structure allowed distinct task or user separation on systems equipped with hard drives—for instance, separating data entry files from billing records—without intermingling.
Graphics
While some early S-100 systems supported graphics capabilities, CP/M itself lacked standardized graphics functionality until 1982 with the release of GSX. Due to limited memory resources, graphical applications were uncommon on 8-bit CP/M machines and typically consisted of simple ASCII art or custom character sets. Certain models such as the Kaypro and TRS-80 Model 4 incorporated hardware enabling block graphics accessible via assembly language or BASIC's CHR$ function. The TRS-80 Model 4 could render graphics at a resolution of 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Some vendors released 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
Several commercially available operating systems compatible with CP/M but developed independently without Digital Research code include:
- Cromemco CDOS by Cromemco
- MSX-DOS, designed for MSX computers and compatible with CP/M software
- Epson QX-10 offering either CP/M or TPM-II/III compatibility
- The British ZX Spectrum-compatible SAM Coupé, which featured an optional Pro-DOS operating system compatible with CP/M-2.2
- Amstrad/Schneider CPC and PCW product lines bundled with CP/M disk software
- The Husky (computer) running DEMOS, a ROM-based loader supporting numerous CP/M applications
- ZSDOS, a BDOS replacement for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, an open-source operating system compatible with CP/M 2.2 initially developed without Digital Research components; since 2022 it has incorporated original DR code under license from Lineo’s president
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, offering compatibility with CP/M 2.2 including BIOS, BDOS, CLI source code along with original Digital Research code and modular OS features
- IS-DOS for the Enterprise (computer), developed by Intelligent Software
- VT-DOS for the Videoton TV-Computer, also created by Intelligent Software
Improvements
Certain CP/M-compatible operating systems introduced substantial enhancements beyond the original capabilities, including TurboDOS, which supported multi-processor configurations.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 clones were developed under various designations such as SCP, SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, and CP/L among others. For CP/M-86, versions like SCP1700, CP/K, and K8918-OS were produced. These adaptations were manufactured by East German firms including VEB Robotron and additional enterprises.
Influence and Legacy
Many elements of Microsoft Windows have roots in maintaining compatibility with MS-DOS, which itself inherited features from CP/M. The use of drive letters and the 8.3 filename format originated with CP/M. Wildcards (the ? and *) in Windows are derived from CP/M conventions, as are reserved device filenames such as "PRN:" and "CON:". In CP/M, floppy drives were assigned drive letters A and B; hard drives began at C—a practice that MS-DOS preserved with its C:\> prompt. The control character ^Z, used to signify the end of text files, also comes from CP/M. Several DOS commands like DIR, REN/RENAME, and TYPE were modeled after their CP/M counterparts. File extensions like .TXT and .COM continue to be widely utilized.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open-source license, allowing redistribution and modification of Digital Research’s CP/M and MP/M related files through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—then holding the rights—revised the licensing terms to broaden distribution permissions. To celebrate its 40th anniversary in October 2014, the Computer History Museum published early versions of CP/M source code.
As of , enthusiasts of vintage computing and certain small enterprises still maintain and develop systems primarily running CP/M 2.2 as their main 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 (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)
- CP/M FAQ at comp.os.cpm and Digital Research website
External links
- The Unofficial CP/M Web site – features source code
- Gaby Chaudry's Homepage for CP/M and Computer History – includes materials on ZCPR
- CP/M Main Page – technical resources by John C. Elliott
- MaxFrame's Digital Research CP/M page (archived)
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs 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. (1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
- ↑ Johnson, Herbert R. (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