CP/J 2.21
| Company type | Private |
|---|---|
| Industry | Software, Computer operating systems |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | (not specified) , (not specified) |
Key people | Gary Kildall, Dorothy McEwen, John Pierce, Kathryn Strutynski, Robert Silberstein, David K. Brown |
| Products | CP/M, MP/M, CP/M Plus, CP/M-86, CP/M-68K, CP/M-8000 |
CP/M, an acronym initially meaning Control Program/Monitor and later revised to 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. This disk operating system was designed to manage files on magnetic disks and execute software directly from disk storage. While the earliest editions supported only single-tasking on 8-bit processors with a maximum of 64 kilobyte memory, subsequent releases introduced multi-user capabilities and transitioned to 16-bit processor architectures.
The fundamental elements of CP/M consist of the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for interfacing with hardware drivers, the BDOS oversees file management and system-level services, and the CCP functions as the command-line interpreter, offering built-in command execution.
During its peak, CP/M established itself as the de facto standard operating system for microcomputers, particularly prevalent on S-100 bus systems that were extensively utilized in commercial environments from the late 1970s through the mid-1980s. By facilitating easier application portability across different manufacturers' hardware, CP/M significantly broadened both hardware and software markets. The affordability of CP/M-compatible microcomputers encouraged innovation among independent developers and user communities. Nevertheless, CP/M's dominance declined after the introduction of DOS with the arrival of the IBM PC in 1981.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates paired with a custom-designed controller.[1] The system was coded in Kildall's proprietary language, PL/M (Programming Language for Microcomputers).[2] CP/M drew conceptual inspiration from the TOPS-10 operating system used on the DECsystem-10 mainframe computers, which Kildall had experience with.[3]
CP/M became compatible with numerous machines powered by the 8080 and Z80 processors. One of its earliest licensees was Gnat Computers, based in San Diego, which acquired rights to CP/M version 1.0 in 1977 for $90. Rapidly increasing demand allowed Digital Research to escalate licensing fees to several tens of thousands of dollars.[4]
John Pierce spearheaded development of CP/M 2.0 under Kildall’s guidance in 1978. Early in 1979, Kathryn Strutynski joined Digital Research to assist with debugging CP/M 2.0 and later contributed significantly to CP/M 2.2 and CP/M Plus. Additional early team members included Robert "Bob" Silberstein and David "Dave" K. Brown.[5][6]
Originally abbreviated as "Control Program/Monitor",[7] the term was officially changed during commercialization efforts to "Control Program for Microcomputers", as documented in trademark filings from November 1977.[8] This renaming aligned with naming conventions such as Kildall’s own PL/M language and IBM’s CP/CMS system, marking a transition from a personal project to a commercial product. Kildall, alongside his spouse and business partner Dorothy McEwen, sought to position Digital Research as synonymous with "microcomputer," a status later achieved by companies like IBM and Microsoft.[9] Subsequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[9]
Early Achievements
By September 1981, Digital Research had distributed more than 250,000 licenses for CP/M, with the actual user base likely higher due to sublicensing arrangements. A wide array of manufacturers developed CP/M-based computers targeting various sectors, solidifying CP/M’s role as the leading operating system for small computers. Even companies that maintained their own proprietary operating systems, such as Heath/Zenith with HDOS, offered CP/M as an alternative on their 8080/Z80 machines—a contrast to the 6502 CPU market, which lacked a similar standard. This widespread adoption was largely fueled by CP/M’s vast software ecosystem. For instance, the Xerox 820 integrated CP/M specifically to access thousands of existing applications. To offset Digital Research’s notoriously poor documentation, Xerox provided a Howard W. Sams CP/M manual; InfoWorld characterized the official documentation as both inadequate and incomplete.
By 1984, Columbia University had successfully compiled Kermit binaries for more than a dozen CP/M platforms using a single source code base. CP/M was frequently described as a "software bus", facilitating standardized communication between diverse hardware devices and multiple software applications. Programs written for CP/M typically required only minimal modification—usually limited to terminal and printer control sequences—to run across different machines. This cross-platform compatibility significantly enhanced CP/M’s appeal and software availability compared to operating systems restricted to individual hardware lines. However, some constraints existed, such as reliance on the Z80’s extended instruction set and hardware-specific graphics routines that bypassed the operating system to improve performance.
Bill Gates observed that the Apple II equipped with a Z-80 SoftCard represented the most widely used CP/M hardware setup. By 1982, Digital Research reported that CP/M had been licensed for over 450 distinct computer models. Prominent systems running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggables, and various MSX machines. Among these, the Amstrad PCW was likely the highest-selling CP/M-compatible device. In the United Kingdom, CP/M was available on educational computers from Research Machines, whose source code was published for instructional purposes, as well as on the BBC Micro via a Z80 co-processor. Additional platforms supporting CP/M included the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. The NIAT handheld computer developed for A. C. Nielsen also operated on CP/M 3 and featured 1 MB of solid-state storage.
Multi-user Versions
Digital Research introduced MP/M in 1979, an iteration of CP/M designed to support multiple users simultaneously. MP/M allowed several users to access a single computer through multiple terminals, each equipped with its own display and keyboard. Subsequent releases expanded compatibility to include 16-bit processors.
CP/M Plus
Released in 1983, CP/M Plus (version 3) was the last iteration of 8-bit CP/M, featuring a BDOS developed by David K. Brown. This version incorporated MP/M's bank switching memory management into a single-user, single-task operating system that maintained compatibility with CP/M 2.2 programs and enabled utilization of memory beyond 64 KB on 8080 or Z80 processors. Enhancements included file date stamps and integrated developer utilities such as a relocating assembler and linker. CP/M Plus was primarily designed for advanced 8-bit computer systems including the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, and the TRS-80 Model 4.
16-bit versions
Digital Research expanded the CP/M family to support 16-bit processors beginning with CP/M-86 for the Intel 8086, released in November 1981 under the direction of Kathryn Strutynski. To differentiate it from its predecessor, the original CP/M was renamed CP/M-80 retroactively.
CP/M-86 was initially expected to become the IBM PC’s default operating system; however, disagreements over licensing led IBM to select Microsoft’s PC DOS, derived from 86-DOS. Although CP/M-86 was later offered as an option on IBM PCs following legal intervention, it failed to challenge PC DOS’s dominance due to its substantially higher price—IBM priced CP/M-86 at $240 compared to PC DOS’s $40.
The Digital Equipment Corporation Rainbow 100 provided versatility by supporting CP/M-80 through a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or simultaneous operation of both CPUs via CP/M-86/80. This dual-processor design allowed users to continue using their existing 8-bit software while transitioning to the newer 16-bit MS-DOS environment. Comparable multiprocessing solutions included the CompuPro System 816’s CP/M 8-16 and the Zenith Z-100’s dual CPU configuration.
Following CP/M-86, Digital Research introduced CP/M-68K for Motorola 68000-based machines in 1982. Initially developed with Pascal/MT+68k and later ported to C, CP/M-68K was considered for Atari ST but ultimately lost out to GEMDOS; it found application on systems like EXORmacs and SORD M68 models.
In the same year, CP/M was adapted to run on the Zilog Z8000 processor for the Olivetti M20 under the name CP/M-8000, implemented in C.
These 16-bit variants necessitated recompiling software applications. To facilitate this process, Digital Research provided XLT86—a source code translator that converted Intel 8080 assembly files (.ASM) into Intel 8086 assembly (.A86), optimizing for code size and adjusting calling conventions. XLT86 was available on both CP/M-80 and VAX/VMS platforms, simplifying migration from CP/M-80/MP-M80 systems to their CP/M-86/MP-M86 counterparts.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications had been developed for CP/M, positioning it as the anticipated standard operating system for emerging 16-bit computers. In 1980, IBM approached Digital Research to license CP/M for its forthcoming IBM Personal Computer; however, negotiations collapsed due to disagreements over a non-disclosure agreement. Subsequently, IBM turned to Microsoft for an operating system solution.
MS-DOS incorporated many foundational elements familiar from CP/M, such as file management structures and drive letter assignments (A:, B:, etc.). Its major advancement was implementing the FAT file system, which facilitated easier porting of popular CP/M applications like WordStar and dBase. Additionally, MS-DOS exploited greater memory capacity—commonly up to 64 KB on IBM PCs compared to CP/M’s minimum of 16 KB—enabling more extensive built-in command-line features and enhanced performance on floppy disk systems.
Although early IBM PC add-ons like the Baby Blue card allowed running legacy 8-bit CP/M software, by 1982 industry reviews recognized MS-DOS as more intuitive and faster. By mid-decade, attempts to establish CP/M in home computing largely faltered due to expensive software prices. By 1986, manufacturers such as Kaypro discontinued producing CP/M-based machines in favor of MS-DOS platforms. As IBM-compatible systems gained traction, CP/M’s market presence rapidly declined with major publications ceasing coverage before decade’s end.
Subsequent releases of CP/M-86 improved speed and compatibility relative to MS-DOS and were eventually rebranded as DOS Plus before evolving into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was unveiled on 2 February 1982 as a direct substitute for the standard console command processor (CCP) developed by Digital Research. The initial development was carried out by a group of enthusiasts called "The CCP Group," comprising Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, with Richard Conn serving as the project leader.
The first iteration, ZCPR1, appeared on a disk distributed by SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was released on 14 February 1983 as a collection of ten disks from SIG/M. This version was later enhanced to 2.3 and adapted into 8080 machine code, allowing compatibility with both 8080 and 8085 processors.
To commercialize the forthcoming version while maintaining free availability, Richard Conn and Frank Gaude established Echelon Inc. On 14 July 1984, ZCPR3 was introduced via nine disks from SIG/M; this edition also provided a compiled variant for non-Z80 platforms. Its feature set included command shells, aliasing capabilities, input/output redirection, flow control mechanisms, named directory support, search paths, customizable menus, password protection, and integrated online assistance. After Conn ended his involvement in January 1987, Jay Sage assumed responsibility for development and issued ZCPR 3.3. This update incorporated additional utilities and expanded features but discontinued support for the 8080 processor family. Although ZCPR enjoyed significant popularity among CP/M users, it ultimately could not prevent the operating system’s gradual obsolescence.
Hardware model
A basic CP/M system based on an 8-bit architecture required the following components:
- An ASCII-compatible computer terminal
- A microprocessor such as the Intel 8080/8085 or the Zilog Z80
- NEC’s V20 and V30 processors offered 8080 emulation enabling CP/M operation on PC-DOS/MS-DOS machines; any compatible PC clone could execute CP/M-86
- A minimum of 16 KB RAM mapped beginning at address zero
- A bootstrap mechanism to load the initial disk sector
- At least one floppy disk drive
Officially, Digital Research’s CP/M supported only the Intel 8080 Development System hardware; however, other manufacturers adapted CP/M to fit their specific configurations. The Z80’s backward compatibility with 8080 instructions allowed numerous Z80-based machines to run CP/M by utilizing BIOS code and applications tailored specifically for the Z80.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-resident operating system designed for cost-effective systems that might lack disk drives. This OS first appeared in Sharp’s cassette-driven MZ-800 model with optional disk support and exploited advanced Z80 instructions rather than maintaining full portability across platforms. American Microsystems launched the S83 microprocessor featuring embedded ROM containing OS and BIOS along with integrated DRAM interface logic; this chip was priced at $32 per unit in volume quantities.
Most systems implemented a minimal ROM bootloader combined with techniques such as bank switching or bus injection to load code at address zero (a requirement of the 8080 architecture), though some systems necessitated manual bootstrap input through front-panel controls.
CP/M utilized the standard 7-bit ASCII character set; however, extended characters varied depending on manufacturer implementations—for example, Kaypro machines employed them to represent Greek letters, Osborne computers used the eighth bit to denote underlining, and WordStar marked word endings similarly. International editions frequently replaced certain ASCII characters according to ISO 646 standards instead of extending beyond seven bits.
Components
During execution, the CP/M operating system loaded into RAM is composed of three main parts:
- the Basic Input/Output System (BIOS),
- the Basic Disk Operating System (BDOS),
- and the Console Command Processor (CCP).
The BIOS and BDOS remain resident in memory, whereas the CCP stays resident until replaced by an application, after which it automatically reloads. Standard utilities are available as transient commands stored as .COM files on disk.
The BIOS is responsible for controlling hardware components aside from the CPU and main memory, managing tasks such as character input/output and disk sector operations. The BDOS provides the CP/M file system along with I/O abstractions like redirection. The CCP interprets user commands, executing internal commands (for example, DIR or ERA) or loading executable transient commands (such as PIP.COM or STAT.COM). Third-party software runs as transient commands.
Although BDOS, CCP, and the standard transient commands remain uniform across different CP/M installations of the same version, the BIOS is tailored specifically for each hardware platform.
To utilize additional memory space for transient applications, CP/M must be reinstalled to accommodate expanded memory. The MOVCPM tool facilitates this by relocating system code to new memory addresses through modification of absolute jump and call instructions. The modified OS can then be saved on disk, allowing programs to take advantage of the enlarged memory area. The OS components reside in reserved disk sectors for boot purposes; a bootloader embedded in ROM loads the operating system from drive A: during startup.
By contemporary standards, CP/M appears rudimentary due to its stringent program size constraints. Early versions lacked automatic detection of disk changes, which could lead to data corruption if disks were swapped without refreshing directory information. Subsequent releases introduced error notifications to prevent overwriting but still required a system reboot.
The bulk of CP/M’s complexity lies within BDOS and, to a lesser degree, in CCP and transient commands. This modular architecture enabled swift adaptation to new hardware platforms by modifying only the BIOS component, greatly accelerating development cycles and contributing to CP/M’s widespread adoption. This approach represented an early implementation of a hardware abstraction layer at a time when most operating systems were monolithic and platform-dependent.
Console Command Processor
The Console Command Processor (CCP) manages input from the keyboard and outputs responses to terminals, supporting both printing devices and video displays. Commands are entered via the command line, typically following a prompt that shows the current default disk drive (e.g., A>). Users can switch the default drive by typing its letter followed by a colon, such as B:, which updates the prompt accordingly.
CP/M’s command-line interface was inspired by Digital Equipment Corporation’s Concise Command Language used in systems like RT-11 and OS/8. Commands consist of keywords followed by parameters separated by spaces or special delimiters. Internal commands are executed directly by the CCP; if not recognized internally, it searches for executable "transient" programs on the current disk and user area. Upon completion, BDOS reloads the CCP if necessary to free memory for running applications.
Some command names reflect legacy DEC terminology—for instance, PIP (Peripheral Interchange Program) is used for file copying. Parameter syntax varies between programs without a unified option character standard.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands were enhanced to include DIR (excluding SYS attribute files), DIRSYS/DIRS for listing SYS files, along with ERASE/ERA, RENAME/REN, TYPE/TYP, and USER/USE featuring abbreviation support. The set of transient commands expanded to incorporate utilities such as COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PIP, SET, SHOW, SUBMIT, among others—facilitating more advanced system administration and software development processes.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees tasks such as file manipulation, console output, and printer management. Applications interact with BDOS by placing operation codes and parameters into processor registers, then executing a call to a designated memory location. This uniform method guarantees software operates consistently across various hardware environments.
Basic Input Output System
The Basic Input Output System (BIOS) delivers fundamental hardware-level functions for CP/M, including character input/output and disk sector read/write operations. While BDOS manages certain disk buffering responsibilities, BIOS is responsible for device-specific operations like sector sizing and disk buffering, adjusting to different hardware setups.
Given the diversity of hardware designs—ranging from built-in video displays to external terminals, assorted UART chips for serial communication, and varying I/O addressing schemes—customization is necessary. BIOS standardizes these variations through defined entry points, allowing CP/M to function on multiple platforms. Because BIOS provides minimal or no support for modem serial communications, CP/M applications frequently incorporate user-installed overlays to access serial ports.
Applications
CP/M served as the initial environment for many significant business software products. WordStar was one of the earliest widely embraced word processors; dBase established itself as a pioneering database management system on microcomputers. Early outlining tools like KAMAS and Out-Think originated on CP/M before migrating to MS-DOS.
Programming utilities such as Turbo Pascal—which later evolved into Borland Delphi—and Multiplan—a forerunner of Microsoft Excel—were first introduced on CP/M. The earliest spreadsheet applications, including VisiCalc and Sorcim's leading SuperCalc, were initially available on CP/M prior to their MS-DOS versions. Autodesk debuted its CAD program AutoCAD on this platform as well.
CP/M supported a wide range of compilers and interpreters covering languages like BASIC, Turbo Pascal, FORTRAN, and PL/I, with early Microsoft tools among them.
Software distribution commonly included installers that adapted programs to various hardware models; for instance, Kaypro II users converted software originally designed for Xerox 820 systems. BASIC source code was often provided openly, and copy protection measures were generally ineffective due to CP/M’s transparent file compatibility standards.
Although limited graphical capabilities restricted games to text-based formats, popular titles such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction series like Zork and Colossal Cave Adventure were ported to CP/M. Infocom regularly released its text adventures supporting this operating system.
Lifeboat Associates distributed community-developed freeware, including the innovative file transfer protocol XMODEM. The outline processor 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 extending from address 0100 hexadecimal up to just before the address stored at 0006H (which indicates the lowest BDOS address) is designated as the Transient Program Area (TPA), allocated for application use. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system architecture. Certain machines reserved substantial portions of address space for BIOS ROM or video memory, thereby reducing available TPA. Employing bank switching techniques enabled larger TPAs by temporarily replacing ROM or video memory segments. CP/M 3.0 enhanced this approach by permitting parts of BDOS to reside within bank-switched memory areas.
Application debugging
CP/M featured a Dynamic Debugging Tool, commonly 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
Initially, CP/M did not offer native support for terminate-and-stay-resident (TSR) programs as found in DOS. Nonetheless, developers could hook into operating system calls to enhance capabilities, resulting in accessory utilities like SmartKey, a keyboard macro tool that mapped strings to keys. With the release of CP/M 3, the system gained the ability to load Resident System Extensions (RSX) dynamically. The use of a null command file permitted the Command Console Processor (CCP) to load an RSX without running a transient program. Comparable approaches such as Resident System Modules (RSMs) were backported to CP/M 2.2 by third-party vendors.
Installing software
Although CP/M abstracted hardware interactions for disk and console input/output, many applications required installation procedures to fully support peripherals like printers and terminals. Control of these devices relied on escape sequences that differed widely among manufacturers and models—for instance, commands for printer bold text varied substantially. Installation utilities enabled users to select or modify these sequences for each device, but no unified operating system service managed them centrally. As a result, individual programs embedded specific initialization codes tailored to each printer type. Running software such as Wordstar on multiple printers necessitated distinct versions customized per device, requiring users to reload the appropriate version when switching between printers.
Disk formats
The standard 8-inch floppy disk format for CP/M was based on the IBM System/34 and IBM 3740 layout, featuring 128-byte sectors, single density, and single-sided recording. In contrast, no uniform 5.25-inch floppy format existed within CP/M; manufacturers including Kaypro, Morrow Designs, and Osborne implemented proprietary disk layouts. Most commercial software was distributed using the Xerox 820 format, compatible with machines like the Kaypro II. However, InfoWorld observed in 1981 that roughly two dozen formats were sufficiently widespread that software developers needed to consider multiple disk types to reach a broad audience. For example, JRT Pascal was available on various 5.25-inch disk formats such as North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain, along with an 8-inch version. Ellis Computing supported both Heath variants plus sixteen additional 5.25-inch formats including TRS-80 CP/M derivatives. Distributors like Lifetree also adapted CP/M applications for diverse hardware platforms.
Variations in disk formats arose from differences in system design choices and hardware features. CP/M permitted customization of reserved sectors and directory areas as well as logical-to-physical sector translation; however, it lacked a standardized mechanism for loading formatting parameters from disks created on other systems.
Nearly all CP/M machines equipped with 8-inch drives could read the IBM single-sided, single-density format. Nonetheless, compatibility with other formats depended heavily on the specific disk drive and controller employed due to the wide variety of floppy disks—covering both 8-inch and 5.25-inch sizes—with differences including hard versus soft sectoring, single or double density/sidedness, and track counts ranging from 35 to 80 tracks. By 1982, the prevailing distribution medium for CP/M software on consumer-level computers such as Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC became soft-sectored, single-sided 40-track 5.25-inch disks. Conversion utilities allowed reading disks formatted in similar layouts; for instance, the Kaypro II could access media from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. However, some disk types—such as those with 80 tracks or hard sectoring—remained incompatible across different platforms. Apple II users were confined to Apple's GCR format and had to acquire CP/M software distributed on Apple-specific disks or transfer data via serial connections.
The fragmented nature of the CP/M ecosystem compelled software distributors to maintain inventories of numerous disk formats or invest in equipment capable of duplicating multiple formats simultaneously. This complexity contrasted sharply with the more uniform IBM PC disk standards and contributed significantly to CP/M’s rapid market decline after 1981.
An interesting exception was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU mode. This system required either a Commodore 1571 or 1581 disk drive capable of handling soft-sectored 40-track MFM-formatted disks.
The Sony SMC-70 was the first computer equipped with a 3.5-inch floppy drive running CP/M version 2.2. Other systems supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX machines, and TRS-80 Model 4 (using Montezuma’s CP/M 2.2). Applied Engineering’s CP/AM enabled Apple II users to utilize both 3.5-inch floppy disks and RAM disks through memory expansion cards. The Amstrad PCW initially employed proprietary 3-inch floppies before transitioning later to standard 3.5-inch drives.
File system
File naming conventions adhered to the 8.3 format, allowing up to eight characters for the filename, followed by a period and a three-character extension indicating the file type (for instance, .COM denoted executable files, while .TXT identified text files). When entered at the command line, filenames were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase filenames, which complicated their accessibility via the command prompt.
Disk storage devices were designated by drive letters (e.g., A, B), with file references prefixed by the drive letter and a colon (for example, A:FILE.TXT). If no drive letter was specified, the system defaulted to the active drive.
File size was measured in 128-byte records, corresponding to disk sectors on 8-inch drives, and this information was stored within the file's File Control Block (FCB). Text files traditionally concluded with a control-Z character (ASCII SUB, hex 1A) to signify the end-of-file; inserting this character mid-file would truncate subsequent data. The introduction of larger disk drives brought about disk de-blocking techniques that increased allocation block sizes from 1 KB up to 32 KB for small files, often resulting in inefficient space usage when managing numerous small files.
Timestamps indicating file modification were not supported in CP/M versions up to 2.2 but became optional features 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 could switch between these areas using the "User X" command, with user 0 set as the default. Files stored in user areas were isolated from each other except those in user 0, which could be accessed across different users through explicit path references. Although limited on floppy disk systems, this approach facilitated file management on machines equipped with hard drives by enabling task separation—for example, allowing both secretarial and billing functions to operate on the same computer without file conflicts.
Graphics
While some early S-100 systems possessed graphics capabilities, CP/M did not include standardized graphics support until 1982 with the introduction of GSX. Due to memory constraints, graphical applications were rare on 8-bit CP/M platforms. Most systems could only render basic ASCII art visuals within text mode or through customized character sets. Certain models, such as those from the Kaypro series and the TRS-80 Model 4, incorporated video hardware that supported block graphics accessible to programmers using assembler or BASIC via CHR$. The TRS-80 Model 4 was capable of displaying graphics at a resolution of 640×240 pixels when paired with an optional high-resolution graphics board.
Official
Several companies produced officially sanctioned CP/M variants derived from Digital Research's original source code. An example is IMDOS, developed for the IMSAI 8080, itself a clone of the Altair 8800.
Compatible
A number of independently developed operating systems compatible with CP/M emerged without incorporating Digital Research's codebase. These include:
- Cromemco CDOS from Cromemco
- MSX-DOS, designed for MSX computers and compatible with CP/M software
- The Epson QX-10, which offered either CP/M or TPM-II/TPM-III-compatible environments
- The British ZX Spectrum-compatible SAM Coupé, optionally equipped with Pro-DOS (compatible with CP/M-2.2)
- Amstrad/Schneider CPC and PCW product lines bundled with CP/M disk sets
- The Husky (computer), featuring 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 OS compatible with CP/M 2.2 initially developed without Digital Research code; since 2022 it has incorporated original DR components after receiving authorization from Lineo's president
- 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, and utilities that facilitate dynamic replacement of OS components
- IS-DOS for the Enterprise, developed by Intelligent Software
- VT-DOS for the Videoton TV Computer, also created by Intelligent Software
Improvements
Certain CP/M-compatible systems notably expanded upon the original capabilities, with examples like TurboDOS, which supported multi-processor configurations.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 versions were developed under various designations such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, among others. Additionally, there were CP/M-86 variants including SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by entities like the East German VEB Robotron.
Enduring Impact
A significant portion of Microsoft Windows functionality is derived from maintaining compatibility with MS-DOS, which itself incorporated many elements from CP/M. This lineage is evident in features such as drive letter conventions (assigning A and B to floppy drives and C to hard disks), the 8.3 filename format, and the use of wildcard characters (? and *). Device redirection reserved names like "PRN:" and "CON:" also originate from CP/M traditions. The use of the control character ^Z to signify end-of-file in text documents traces back to CP/M as well. Commands in DOS such as DIR, REN/RENAME, and TYPE were modeled after their CP/M equivalents, while file extensions like .TXT and .COM continue to be prevalent.
During 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open source license, permitting redistribution and modification through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo, which had acquired Digital Research’s assets, revised the licensing terms to broaden distribution rights. In October 2014, the Computer History Museum commemorated CP/M's 40th anniversary by releasing early versions of its source code.
As of recent years, a dedicated community of vintage computing enthusiasts and certain niche businesses persist in developing and maintaining systems that operate on CP/M platforms, predominantly version 2.2.
Related Topics
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently developed OS derived from CP/M
- Eagle Computer
- IMDOS
- List of machines running CP/M
- MP/M
- MP/NET and MP/NOS
- Multiuser DOS
- Pascal/MT+
- SpeedStart CP/M
- 86-DOS
- Kenbak-1
Additional Reading
- Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
- Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
- "Z-System Corner: Tenth Anniversary of ZCPR", The Computer Journal, Issue 54
- "The origin of CP/M's name"
- 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 (documenting IBM’s selection of Microsoft DOS over Digital Research’s CP/M for the IBM PC)
- CP/M FAQ at comp.os.cpm and Digital Research website
External Links
- The Unofficial CP/M Web site (established by Tim Olmstead) – Contains source code archives
- Gaby Chaudry's Homepage for CP/M and Computer History – Features ZCPR resources
- CP/M Main Page – John C. Elliott’s technical resource site
- 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 - ↑ Freiberger, Paul; Michael Swaine (2000). Fire in the Valley: The Making of the Personal Computer. McGraw-Hill. p. 175. ISBN 0071358927 – via the Internet Archive.
- ↑ 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 namedCPM.NYT83 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1993 - ↑ 9.0 9.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall.NYT