Personal CP/M
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall, Dorothy McEwen |
| Headquarters | United States |
Key people | Gary Kildall, Kathryn Strutynski, John Pierce, Dorothy McEwen, Robert "Bob" Silberstein, David "Dave" K. Brown |
| Products | CP/M, PL/M compiler, MP/M, CP/M-86, CP/M Plus |
CP/M, initially known as Control Program/Monitor and later renamed Control Program for Microcomputers, is a widely distributed operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. As a disk operating system, CP/M was engineered to manage files on magnetic disks and execute programs directly from disk storage. While the first versions supported only single-tasking on 8-bit processors with a maximum of 64 kilobytes of RAM, subsequent releases introduced multi-user functionality and compatibility with 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 interfacing with hardware through device drivers, BDOS manages file operations and system services, and the CCP operates as the command-line shell providing built-in commands for user interaction.
CP/M established itself as the de facto operating system standard for microcomputers utilizing the S-100 bus, gaining widespread adoption in commercial environments from the late 1970s until the mid-1980s. By facilitating easier application portability between different hardware vendors, it expanded both hardware and software markets. The accessibility of cost-effective CP/M-based microcomputers encouraged software innovation, with independent programmers frequently exchanging applications within user communities. Eventually, CP/M's dominance declined following the introduction of DOS alongside the 1981 release of the IBM PC.
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 interface controller. The system was programmed using Kildall’s proprietary language, PL/M (Programming Language for Microcomputers). CP/M’s design was influenced by the TOPS-10 operating system running on the DECsystem-10, which Kildall had experience using.
CP/M supported numerous microcomputers based on both the 8080 and Z80 processors. In 1977, early licensee Gnat Computers obtained rights to distribute CP/M 1.0 at a rate of $90 per unit. The growing demand enabled Digital Research to raise licensing fees significantly within a year, reaching amounts in the tens of thousands.
Under Kildall’s direction, John Pierce developed CP/M version 2.0 in 1978. After joining Digital Research in early 1979, Kathryn Strutynski played a crucial role in debugging CP/M 2.0 and became a primary developer for later versions such as CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert "Bob" Silberstein and David "Dave" K. Brown.
The acronym CP/M originally stood for "Control Program/Monitor." However, in November 1977, it was officially registered as "Control Program for Microcomputers." This change aligned with naming conventions like Kildall’s own PL/M language and IBM’s CP/CMS operating system. The renaming was part of a strategic effort by Kildall, his wife, and business partner Dorothy McEwen to commercialize both CP/M and the PL/M compiler under the Digital Research brand. Their goal was to establish Digital Research as synonymous with "microcomputer," anticipating branding successes similar to those later achieved by IBM and Microsoft. Subsequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with InfoWorld suggesting the actual market size was larger due to sublicensing arrangements. A wide array of companies manufactured CP/M-compatible computers targeting various sectors, solidifying the operating system's reputation as the definitive choice for small computers. Even manufacturers that offered their own proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an option on their 8080/Z80 hardware—an advantage not shared by popular 6502 CPU platforms lacking a similar standard.[1] The extensive software catalog was a key reason for this support. For instance, the Xerox 820 adopted CP/M to leverage access to thousands of applications.[2] To compensate for Digital Research’s inadequate documentation, Xerox included a Howard W. Sams CP/M manual, which InfoWorld criticized for being incomplete and poorly organized.[3]
By 1984, Columbia University had utilized the same source code to compile Kermit binaries for over a dozen CP/M variants alongside two generic versions.[4] CP/M was characterized as a "software bus",[5][6] facilitating interaction between multiple applications and diverse hardware through a uniform interface.[7] Software generally maintained portability across different machines, requiring only adjustments to terminal and printer control codes. This cross-platform capability contributed significantly to CP/M’s widespread adoption and larger software ecosystem compared to operating systems restricted to specific hardware brands. However, certain drawbacks existed, such as programs using Z80-exclusive instructions that were incompatible with 8080/8085 CPUs, and graphics routines tailored to particular machines that bypassed the OS to enhance performance.[1]
Bill Gates identified the Apple II equipped with a Z-80 SoftCard as the most prevalent CP/M hardware platform.[8] By 1982, Digital Research stated that CP/M had been licensed for upwards of 450 different computer models.[9] Prominent systems running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The highest-selling CP/M-compatible system was probably the Amstrad PCW. In the United Kingdom, CP/M was available on educational devices from Research Machines (with source code openly published for academic use), the BBC Micro outfitted with a Z80 co-processor, the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 powered the NIAT handheld computer created for A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Capability
In 1979, Digital Research introduced MP/M, a multi-user adaptation of CP/M that enabled several terminals to connect simultaneously to a single computer system. Each terminal provided an independent display and keyboard for individual users. Subsequent versions expanded support to include 16-bit processors.
CP/M Plus
CP/M Plus (version 3), the last iteration of the 8-bit CP/M series, was introduced in 1983 with a BDOS developed by David K. Brown. This version integrated MP/M's bank-switching memory management into a single-user operating system compatible with CP/M 2.2 applications, allowing systems with 8080 or Z80 processors to access memory beyond the 64 KB limit. Enhancements included file date stamping and a suite of relocating assembler and linker utilities. CP/M Plus was designed for advanced 8-bit platforms such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.
16-bit versions
Digital Research created several CP/M variants tailored for 16-bit processors. The initial release was CP/M-86 for the Intel 8086, which launched in November 1981 under the leadership of project manager Kathryn Strutynski. To differentiate it from the original, the earlier 8-bit system became known as CP/M-80.
Although CP/M-86 was intended to be the primary operating system for IBM PCs, it lost out to Microsoft’s PC DOS due to unsuccessful licensing talks and IBM pricing CP/M-86 at $240 compared to PC DOS’s $40. Despite being offered later following legal pressure, CP/M-86 failed to capture a substantial share of the IBM PC market.
The Digital Equipment Corporation Rainbow 100 featured support for multiple operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously—facilitating compatibility with existing 8-bit software during the shift to 16-bit architectures. Similar dual-processor configurations were also found in systems like the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.
After CP/M-86, Digital Research introduced CP/M-68K in 1982 for Motorola 68000 processors. Originally developed in Pascal/MT+68k and later converted to C, this OS operated on EXORmacs machines and was considered for Atari ST before Atari opted for GEMDOS. It also ran on SORD M68 and M68MX models.
Contemporaneously, CP/M-8000 was adapted to the Zilog Z8000 CPU for use in Olivetti M20 computers, with its codebase written in C.
These 16-bit versions necessitated recompilation of software; however, some assembly language programs could be automatically translated using tools such as Digital Research's XLT86. This utility converted Intel 8080 .ASM source files into optimized Intel 8086 .A86 code while adjusting calling conventions. XLT86 was available on both CP/M-80 and VAX/VMS platforms.
Displacement by MS-DOS
By the early 1980s, approximately 2,000 applications existed for CP/M, positioning it as the anticipated standard OS for emerging 16-bit machines. In 1980, following Bill Gates’ recommendation, IBM approached Digital Research to license a version of CP/M for their new PC. However, negotiations faltered when Digital Research declined to sign a non-disclosure agreement, prompting IBM to contract Microsoft for an alternative operating system.
MS-DOS shared foundational concepts with CP/M such as file management structures and drive letter assignments (A:, B:, etc.). Its principal advancement was the introduction of the FAT file system, which simplified porting popular CP/M software like WordStar and dBase. MS-DOS leveraged more memory—typically at least 64 KB on IBM PCs compared to CP/M’s minimum of 16 KB—enabling a richer command set within its shell and improving performance on floppy disk-based systems.
Early IBM PC peripherals included devices like the Baby Blue card that allowed running 8-bit CP/M programs such as WordStar. Nonetheless, by 1982 industry observers regarded MS-DOS as faster and more user-friendly than CP/M. Attempts to establish CP/M within the home computer market largely faltered due to high software prices. By 1986, manufacturers such as Kaypro had discontinued CP/M-based hardware in favor of machines compatible with MS-DOS. The IBM PC-compatible platform quickly dominated microcomputing markets, causing rapid erosion of CP/M’s user base. Major industry publications like Byte gradually ceased coverage of CP/M products within a few years after the IBM PC's debut.
Subsequent updates to CP/M-86 enhanced its speed and compatibility with MS-DOS, leading to its rebranding as DOS Plus—a precursor to DR-DOS.
ZCPR
ZCPR (Z80 Command Processor Replacement) was launched on 2 February 1982 as a direct substitute for the default Digital Research console command processor (CCP). The initial development was carried out by a hobbyist collective named "The CCP Group," headed by Richard Conn.
The first version, ZCPR1, appeared on a disk distributed by SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. This was followed by ZCPR2 on 14 February 1983, provided as a set of ten disks from SIG/M and later enhanced to version 2.3, which included an 8080-compatible edition to support a wider range of hardware.
To commercialize subsequent versions while maintaining free availability, Conn and Frank Gaude established Echelon Inc. ZCPR3 was released on 14 July 1984 via nine disks from SIG/M, including a variant capable of operating on non-Z80 systems with limited functionality. This release introduced sophisticated capabilities such as command shells, aliasing, input/output redirection, flow control mechanisms, named directory shortcuts, search path support, customizable menus, password protection, and integrated online help.
Following Conn's departure from the project in January 1987, Echelon brought Jay Sage onboard to advance development, leading to ZCPR 3.3. This edition discontinued support for 8080 processors while greatly expanding its feature set and utility collection. Although it garnered considerable enthusiasm among CP/M users, ZCPR was unable to halt the overall decline in CP/M’s market presence.
Hardware model
A basic CP/M system running on 8-bit architecture typically required:
- A terminal supporting ASCII characters
- A microprocessor such as the Intel 8080/8085 or the Zilog Z80
- NEC’s V20 and V30 processors offered 8080 emulation capabilities allowing CP/M operation on PC-DOS/MS-DOS hardware; similarly, PC compatibles could execute CP/M-86
- A minimum of 16 KB RAM beginning at memory address zero
- A bootstrap mechanism to load the initial disk sector
- At least one floppy disk drive
Officially, Digital Research’s CP/M was designed for the Intel 8080 Development System; nonetheless, numerous manufacturers adapted CP/M to fit their specific hardware setups. The Z80’s backward compatibility with the 8080 enabled CP/M to run on Z80-based machines that often implemented BIOS code and applications tailored specifically for the Z80.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system targeted at economical systems lacking disk drives. It was utilized in products like Sharp’s MZ-800 cassette-based computer with optional disk storage and took advantage of enhanced instructions available on the Z80 rather than focusing solely on portability.
American Microsystems introduced the S83 microprocessor, a Z80-compatible chip integrating an 8 KB ROM containing OS and BIOS along with built-in logic for dynamic RAM interfacing. This chip was priced at approximately $32 in volume production.
Most platforms employed a minimal ROM bootstrap combined with techniques such as bank switching or bus injection to load CP/M into RAM starting at address zero; some required manual input through front-panel controls during startup.
CP/M utilized the standard 7-bit ASCII character encoding; however, extended 8-bit character sets varied depending on manufacturer and locale—for example, Kaypro systems incorporated Greek characters, Osborne computers used the eighth bit to indicate underlining, and WordStar designated it as an end-of-word marker. International versions commonly adopted ISO 646 standards by substituting certain ASCII characters rather than extending beyond seven bits.
Components
When CP/M is operating, the version loaded into memory consists of three main parts:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
Both the BIOS and BDOS stay resident in memory continuously, whereas the CCP remains resident until an application overwrites it, after which it automatically reloads. Temporary commands for common utilities exist as files with a .COM extension on the disk.
The BIOS manages hardware beyond the CPU and primary memory, overseeing tasks such as character input/output and disk sector handling. The BDOS is responsible for managing CP/M’s file system and abstracting input/output operations like redirection. The CCP interprets user commands—directly executing built-in commands such as DIR or ERA or loading executable transient commands like PIP.COM or STAT.COM. Third-party software typically operates as transient commands.
While BDOS, CCP, and standard transient commands remain consistent within a given CP/M version, the BIOS is tailored to the specific hardware platform.
Increasing available memory requires reinstalling CP/M so that transient programs can utilize the expanded space. The MOVCPM tool relocates object code to new memory locations by modifying absolute jump and call instructions. Once updated, the system can be saved back to disk, allowing applications to access the additional memory. The OS components reside in reserved disk sectors for boot purposes; a bootloader usually loads the operating system from drive A: during startup.
By today’s standards, CP/M is rudimentary due to strict program size constraints. Initial releases did not detect disk changes, which risked data corruption if disks were swapped without refreshing directory information. Starting with version 1.1, attempting to write to a changed disk without rereading its directory causes a critical error, preventing data overwrites but necessitating a reboot and resulting in data loss.
The bulk of CP/M’s complexity lies within BDOS, with less contained in CCP and transient commands. By porting minimal BIOS routines for new hardware, the entire OS could run on diverse platforms—significantly reducing development efforts and contributing to CP/M’s widespread adoption. This early form of hardware abstraction was innovative compared to typical single-platform operating systems of that time.
Console Command Processor
The Console Command Processor (CCP) handles keyboard input and terminal output in CP/M, supporting both video displays and printers. Commands are entered at the command line, where the prompt usually indicates the current default disk drive (for example, A>). Users can switch the default drive by typing its letter followed by a colon (e.g., B:), which updates the prompt accordingly.
CP/M’s command-line interface draws inspiration from Digital Equipment Corporation’s Concise Command Language used in systems like RT-11 and OS/8. Commands comprise a keyword followed by parameters separated by spaces or special characters. Internal commands are executed directly by the CCP; otherwise, it loads executable "transient" programs from the active disk drive and user area, passing along any parameters. Upon completion, BDOS reloads the CCP to free memory for other transient programs.
Several commands retain legacy names reflecting their DEC heritage—for example, PIP (Peripheral Interchange Program) is used for file copying. Parameter formats differ by program and do not adhere to standardized option characters.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Frequently used transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands were enhanced with additions such as DIRSYS/DIRS for listing system files, ERASE/ERASE for deleting files, RENAME/REN to rename files, TYPE/TYP to display ASCII content, and USER/USE for changing user numbers. This version also supports abbreviated forms of built-in commands. Its transient commands include COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PIP, SET, SHOW, SUBMIT, among others designed to extend system capabilities.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees fundamental tasks including file management, console display, and printer communication. Applications interact with BDOS by placing operation codes and associated parameters into processor registers before invoking a fixed memory location. This standardized method guarantees software interoperability across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers the essential low-level functions required by the operating system, such as character input/output and reading or writing disk sectors. While BDOS performs some buffering duties, it depends on BIOS to handle device-specific functions due to the diversity of hardware. For instance, BIOS controls disk sector dimensions, which differ between 8-inch and 5.25-inch floppy drives.
Because hardware components—like video adapters, serial interfaces, and memory-mapped input/output—vary significantly between manufacturers, BIOS customization is crucial. It provides a uniform interface through standard entry points that allow CP/M to run consistently on different machines. Since BIOS typically offers limited serial communication support, CP/M applications that utilize modems often require user-installed overlays to manage particular serial port operations.
Applications
CP/M served as the initial environment for many pivotal business software products. WordStar, one of the earliest widely used word processors, and dBase, a prominent database solution, both originated on CP/M. Early outlining tools such as KAMAS and its successor Out-Think were first developed for CP/M before moving to MS-DOS. Programming utilities like Turbo Pascal (the forerunner of Borland Delphi) and spreadsheet applications such as Multiplan (a precursor to Microsoft Excel) were initially released on CP/M prior to their MS-DOS versions.
Key business software including VisiCalc, recognized as the first spreadsheet application, and SuperCalc, which dominated the CP/M spreadsheet market, were created on this platform. Autodesk’s AutoCAD also made its debut under CP/M. A wide array of compilers and interpreters for languages like BASIC, FORTRAN, PL/I, and Turbo Pascal were available—many representing some of Microsoft’s earliest offerings.
CP/M programs frequently incorporated installers designed to adapt software for different hardware configurations—for example, Kaypro II users converted Xerox 820 disk formats for compatibility. Source code in BASIC was often provided, and most copy protection schemes were ineffective on CP/M because its standardized disk formats facilitated broad software interoperability.
Although limited graphical capabilities restricted video game development, numerous text-based titles were ported to CP/M, including Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction series such as Zork and Colossal Cave Adventure. Infocom consistently published games in CP/M format. Lifeboat Associates distributed user-developed utilities like XMODEM, which supported dependable file transfers via modem connections. The outlining program KAMAS remains another noteworthy native CP/M application.
Transient Program Area
In the initial CP/M versions designed for the 8080, 8085, and Z80 processors, the memory region designated for application programs was known as the Transient Program Area (TPA). This area spanned from address 0100 hexadecimal up to just before the location stored at 0006H, which indicated the lowest BDOS address. Although these CPUs could address up to 64 KB of memory, the size of the TPA differed depending on system architecture, as some systems reserved portions of memory for BIOS ROMs or video memory. To increase TPA capacity, bank switching was frequently employed to replace ROM or video memory segments. CP/M 3.0 advanced this approach by permitting segments of the BDOS to be placed within bank-switched memory.
Debugging application
CP/M featured a Dynamic Debugging Tool, commonly referred to as DDT, which allowed users to inspect and modify memory content and program modules, as well as perform step-by-step execution of programs.
Resident programs
Originally, CP/M did not support terminate-and-stay-resident (TSR) utilities like those found in DOS. Nevertheless, developers could intercept operating system calls to enhance functionality and implement auxiliary desk accessory programs such as SmartKey, a utility that assigned byte strings to keyboard keys. With CP/M 3, support was introduced for dynamically loadable Resident System Extensions (RSX), enabling the command processor (CCP) to load RSXs without involving transient programs by using "null command files." Additionally, third-party solutions like Resident System Modules (RSMs) were backported to CP/M 2.2 to provide similar capabilities.
Software installation
Although CP/M abstracted hardware details for disk and console input/output operations, applications generally required installation to leverage device-specific features such as printers and terminals. These peripherals often relied on manufacturer-specific escape sequences—for instance, printer commands to initiate bold text varied widely among models. Installation utilities enabled users to select their devices or tailor escape sequences for particular features. Since no centralized operating system service managed these devices, this configuration process had to be repeated individually for each application.
Printer initialization codes needed embedding within software itself. Consequently, when using programs like Wordstar with multiple printer types—such as a fast dot-matrix alongside a slower daisy wheel—distinct versions of the software were necessary for each printer model. Switching between printers required reloading the corresponding version.
Disk formats
The standard CP/M floppy disk format for 8-inch drives was based on IBM System/34 and IBM 3740 specifications featuring 128-byte sectors in single-density and single-sided configurations. No universal 5.25-inch disk format existed within CP/M; manufacturers like Kaypro, Morrow Designs, Osborne, and others each adopted proprietary formats. Some formats achieved greater popularity than others. For example, most software was distributed in the Xerox 820 format compatible with systems such as the Kaypro II; however, InfoWorld estimated in 1981 that approximately two dozen disk formats were sufficiently widespread that software producers needed to accommodate them to maximize market reach. JRT Pascal provided multiple versions on 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith hard sector and soft sector drives, plus an 8-inch version. Ellis Computing supported both Heath formats along with sixteen other 5.25-inch variants including TRS-80 CP/M versions. Lifetree and other companies also ported CP/M applications across various platforms.
Disk formats varied according to system design and disk characteristics. While CP/M allowed customization of reserved areas, directory sizes, and logical-to-physical sector mappings, there was no standardized mechanism for loading formatting parameters from disks created on different systems.
Nearly all CP/M machines equipped with 8-inch drives could read IBM’s single-sided single-density format. Compatibility with other disk formats depended heavily on drive and controller hardware due to wide variations in floppy disk size (8-inch versus 5.25-inch), density, sidedness, track count (ranging from 35 to 80), and sector arrangements. Conversion utilities facilitated reading disks from other systems; for instance, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 computers. Certain disk types such as 80-track or hard-sectored disks remained unreadable. Apple II users were confined to Apple’s GCR format and therefore had to use CP/M software distributed on Apple-formatted disks or transfer data via serial connections.
The fragmented nature of the CP/M ecosystem compelled distributors to maintain inventories of multiple disk formats or invest in multiformat duplication hardware—a stark contrast with the more uniform IBM PC disk standards—and this complexity contributed significantly to CP/M’s rapid decline after 1981.
One of the final notable computers supporting CP/M 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 machine required either a 1571 or 1581 disk drive capable of reading soft-sector 40-track MFM formatted disks.
The first system incorporating a 3.5-inch floppy drive was the Sony SMC-70, which ran CP/M version 2.2. Other machines 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 provided compatibility with both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to 3.5-inch models.
File system
File names adhered to the 8.3 convention, allowing up to eight characters before a period, followed by a three-character extension that indicated the file type (for instance, .COM for executable files and .TXT for text documents). When entered at the command prompt, filenames were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase filenames, which complicated access via the command line.
Disk drives were designated by letters (e.g., A:, B:). To specify a file on a particular drive, the drive letter and colon were prefixed to the filename, like A:FILE.TXT. If no drive letter was provided, the system defaulted to the current active drive.
File size was recorded in units called records, each consisting of 128 bytes corresponding to disk sectors. The system did not typically support precise byte counts. The File Control Block (FCB) stored file size information within the operating system. Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signal end-of-file, influencing how programs managed file truncation.
With the introduction of larger removable and fixed disk drives, disk de-blocking techniques increased logical allocation block sizes from 1 KB (single-density) up to 32 KB. This change allowed for larger maximum file sizes but often led to inefficient space consumption when storing numerous small files.
CP/M 2.2 did not include support for file modification timestamps; however, this feature was optionally available in MP/M and CP/M 3.0.
Instead of subdirectories, CP/M 2.2 provided 16 numbered user areas to organize files. Users could switch between these areas using the "USER X" command (where X ranged from 0 to 15). User area 0 was the default and accessible universally, while files in other user areas were isolated from one another. This arrangement helped facilitate multitasking on single-user systems by segregating files for different users or functions, particularly beneficial when using hard drives despite limited security controls.
Graphics
Although S-100 systems with graphics capabilities existed early on, CP/M did not offer standardized graphics support until 1982 with the introduction of the GSX. The limited memory available on 8-bit CP/M machines restricted graphical output mainly to simple ASCII art or custom character sets. Certain models such as the Kaypro series and the TRS-80 Model 4 included video hardware enabling block graphics accessible through assembler and BASIC programming. Notably, the Model 4 could display graphics at a resolution of 640x240 pixels when equipped with an optional high-resolution board.
Official
Several companies developed authorized CP/M enhancements derived from Digital Research’s original source code. For example, IMDOS—designed for the IMSAI 8080, a clone of the Altair 8800—represented an official variant.
Compatible
A variety of independently developed CP/M-compatible operating systems emerged without incorporating Digital Research’s codebase, including:
- Cromemco CDOS by Cromemco
- MSX-DOS, designed for MSX computers and compatible with existing CP/M applications
- Epson QX-10 provided either CP/M or TPM-II/TPM-III-compatible environments
- The British SAM Coupé offered an optional Pro-DOS OS compatible with CP/M-2.2
- Amstrad/Schneider CPC and PCW models shipped with CP/M disk packs
- The Husky (computer) featured DEMOS, a ROM-based loader supporting numerous CP/M programs
- ZSDOS, a replacement BDOS for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free OS compatible with CP/M 2.2 initially created without Digital Research code; following permission from Lineo's president in 2022, developer David Given is incorporating original DR components
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible system including source code for BIOS, BDOS, CLI along with original DR code and modular OS features
- IS-DOS for the Enterprise, produced by Intelligent Software
- VT-DOS for the Videoton TV Computer, also developed by Intelligent Software
Improvements
Certain operating systems compatible with CP/M considerably enhanced the original capabilities, exemplified by the multi-processor supported TurboDOS.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 adaptations were developed under a variety of names, such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM, DAC, HC among others. Additionally, CP/M-86 versions like SCP1700, CP/K, and K8918-OS were manufactured by entities including the East German VEB Robotron.
Enduring Influence
Several aspects of Microsoft Windows trace their origins to compatibility with MS-DOS, which itself was influenced by CP/M. The system of drive letters and the 8.3 filename format were initially introduced by CP/M. Wildcard symbols (?, *) and reserved device names used for output redirection in Windows (such as "PRN:" and "CON:") also have roots in CP/M. In CP/M, floppy drives were designated as A and B; hard drives received the letter C:, a convention that MS-DOS preserved. The control character ^Z signifying end-of-file in text documents is another carryover from CP/M. Numerous DOS commands—including DIR, REN/RENAME, and TYPE—were modeled after their CP/M counterparts. Common file extensions like .TXT and .COM continue to be widely utilized.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries and source code under an open source license and authorized redistribution of related Digital Research materials via Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo, then the rights holder, updated and broadened the licensing terms. To commemorate its 40th anniversary in October 2014, the Computer History Museum released early CP/M source code.
As of 2018, enthusiasts of vintage computing along with some niche businesses continue to maintain and develop systems operating on CP/M (primarily version 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
- Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013
- IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, Computer History Museum, 2014
- Triumph of the Nerds, PBS (details IBM's choice of Microsoft DOS over Digital Research's CP/M for IBM PC)
- CP/M FAQ, comp.os.cpm
External links
- The Unofficial CP/M Web site (founded by Tim Olmstead) – includes source code
- Gaby Chaudry's Homepage for CP/M and Computer History – includes ZCPR materials
- CP/M Main Page – John C. Elliott's technical information site
- MaxFrame's Digital Research CP/M page
- ↑ 1.0 1.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.
- ↑ 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