CCP.COM
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M, MP/M, CP/M Plus, CP/M-86, CP/M-68K, CP/M-8000 |
CP/M, which initially stood for Control Program/Monitor and was later redefined as Control Program for Microcomputers, is a widely-used operating system introduced in 1974 by Gary Kildall of Digital Research, Inc for microcomputers based on the Intel 8080 and 85 processors. As a disk operating system, CP/M was developed to manage files stored on magnetic disks and to load software from these storage devices. While early versions operated as single-tasking systems on 8-bit processor platforms with a maximum of 64 kilobytes of memory, subsequent updates incorporated multi-user support and compatibility with 16-bit processor architectures.
The architecture of CP/M is composed of three main elements: the Basic Input/Output System (BIOS), which controls hardware-specific functions; the Basic Disk Operating System (BDOS), responsible for file management and system-level services; and the Console Command Processor (CCP), which acts as the command interpreter providing a set of internal commands.
During its peak, CP/M became the de facto operating system standard for microcomputers utilizing the S-100 bus, achieving widespread adoption in commercial environments from the late 1970s through the mid-1980s. By simplifying the process of adapting software across different hardware platforms, CP/M played a crucial role in expanding both hardware and software markets. The availability of cost-effective CP/M-compatible microcomputers encouraged innovation within software development communities and user groups. Ultimately, CP/M's dominance waned following the introduction of DOS alongside the 1981 debut of the IBM PC.
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 manufactured by Shugart Associates with a customized controller. The system was programmed in Kildall's proprietary language, PL/M. CP/M’s design drew inspiration from the TOPS-10 operating system used on the DECsystem-10 mainframe computers, which Kildall had experience with.
CP/M was compatible with numerous machines powered by both the 8080 and Z80 CPUs. One of its earliest licensees was Gnat Computers, who acquired rights to use CP/M version 1.0 for $90 in 1977. Within a year, demand escalated dramatically, allowing Digital Research to increase licensing fees to amounts reaching tens of thousands of dollars.
Under Kildall’s guidance, John Pierce spearheaded development efforts resulting in CP/M 2.0 in 1978. In early 1979, Kathryn Strutynski joined Digital Research as its fourth employee, initially focusing on debugging CP/M 2.0 before playing a major role in advancing CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert Silberstein and David K. Brown.
Originally, the acronym CP/M stood for "Control Program/Monitor," reflecting its function as a resident monitor that preceded full operating systems. However, trademark documentation filed in November 1977 identified it as "Control Program for Microcomputers." This renaming aligned with naming trends at the time—such as Kildall’s PL/M language and IBM’s CP/CMS operating system—and was influenced by IBM’s PL/I language naming conventions. The change also formed part of an initiative by Kildall, his wife, and business partner Dorothy McEwen to commercialize both CP/M and the PL/M compiler. Their objective was to establish Digital Research as a prominent microcomputer brand, anticipating similar market-defining roles later achieved by IBM and Microsoft in personal computing. The company initially known as Intergalactic Digital Research, Inc. was subsequently renamed Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses; however, InfoWorld suggested the actual number was probably higher due to sublicensing agreements. A variety of manufacturers developed CP/M-based computers targeting different sectors, with the publication remarking that "CP/M is rapidly becoming recognized as the operating system for small computers." Even companies with their own proprietary operating systems, such as Heath/Zenith (HDOS), provided CP/M as an alternative for their 8080/Z80 platforms, since no equivalent standard existed for widely used 6502 processor machines.[1] The broad software ecosystem supporting CP/M was a key factor in its adoption. For instance, the Xerox 820 utilized CP/M specifically because of its vast library of compatible applications; Xerox supplemented Digital Research's criticized manuals with a Howard W. Sams CP/M guide.[2][3][4] By 1984, Columbia University leveraged the same source code base to compile Kermit executables for more than a dozen CP/M variants alongside generic versions.[5] The operating system was characterized as a "software bus",[6][7] enabling consistent communication between software and hardware components.[8] Applications generally maintained portability across different machines, requiring only adjustments to terminal and printer control sequences. This cross-platform compatibility contributed significantly to CP/M’s widespread use and extensive software availability compared to operating systems limited to specific hardware brands. However, some drawbacks included programs that employed Z80-exclusive instructions incompatible with 8080/8085 CPUs and graphics routines tailored to particular hardware that bypassed the OS to enhance performance.[1]
Bill Gates identified the combination of the Apple II with a Z-80 SoftCard as the leading platform for running CP/M.[9] By 1982, Digital Research announced that CP/M had been licensed for over 450 distinct computer models.[10] Prominent systems utilizing CP/M encompassed the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. Among these, the best-selling CP/M-compatible device was probably the Amstrad PCW. In the United Kingdom, CP/M was accessible on educational machines from Research Machines (with source code published as an educational tool), on the BBC Micro equipped with a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and subsequent models of the ZX Spectrum. Additionally, CP/M 3 was implemented on the NIAT handheld computer created for A. C. Nielsen, which featured 1 MB of solid-state storage.
Multi-user
In 1979, Digital Research introduced MP/M, a multi-user variant derived from CP/M. This system allowed several users to connect to a single computer through distinct terminals, each equipped with its own display and keyboard. Subsequent iterations extended support to 16-bit processors.
CP/M Plus
Released in 1983, CP/M Plus (version 3) was the last iteration of the 8-bit CP/M line, featuring BDOS developed by David K. Brown. It incorporated MP/M's bank switching memory management into a single-user operating system compatible with CP/M 2.2 applications, enabling access to memory beyond the 64 KB limit on 8080 or Z80 CPUs. Enhancements included file date stamping and integrated relocating assembler and linker utilities. CP/M Plus was utilized on advanced 8-bit machines such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, 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 in November 1981. Kathryn Strutynski managed this project as the original 8-bit CP/M was renamed CP/M-80.
CP/M-86 was initially expected to become the IBM PC’s default operating system but lost out due to licensing disagreements between Digital Research and IBM. Instead, IBM selected Microsoft’s PC DOS, which was based on 86-DOS. Although CP/M-86 was later offered as an option on IBM PCs following legal pressure, it never achieved comparable market penetration, partly because IBM priced it at $240 compared to PC DOS’s $40.
The DEC Rainbow 100 provided versatility by running CP/M-80 on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously—allowing users to maintain their existing 8-bit software while adopting 16-bit environments. Similar dual-processor designs appeared in systems like the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.
Following this, Digital Research launched CP/M-68K in 1982 for the Motorola 68000 processor. Originally developed in Pascal/MT+68k and later rewritten in C, CP/M-68K operated on EXORmacs machines and was considered for Atari ST before Atari chose GEMDOS. It also ran on SORD M68 and M68MX computers.
That same year saw a C-language port of CP/M-68K adapted for the Zilog Z8000 processor used in the Olivetti M20, marketed as CP/M-8000.
These versions for 16-bit processors necessitated recompiling applications. To ease this process, Digital Research offered XLT86, a utility that converted Intel 8080 assembly code (.ASM) into Intel 8086 assembly (.A86), optimizing code size and adjusting calling conventions to support migration from CP/M-80/MP-M80 to CP/M-86/MP-M86 platforms. XLT86 was accessible on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications were available for CP/M, positioning it as the expected standard OS for 16-bit computers. In 1980, IBM approached Digital Research to license a version of CP/M for its forthcoming PC; however, negotiations faltered over a signed non-disclosure agreement. Consequently, IBM turned to Microsoft for an operating system solution.
MS-DOS borrowed many design elements from CP/M—including file management structures and drive letter assignments—but introduced the FAT file system as a significant advancement. This innovation made it easier to port popular CP/M software such as WordStar and dBase. Additionally, MS-DOS took advantage of increased memory capacity (often exceeding 64 KB on IBM PCs), allowing more commands within its command-line interface and enhancing speed and functionality compared to floppy-based systems.
Although early hardware like the Baby Blue expansion card enabled running CP/M software on IBM PCs, MS-DOS rapidly became dominant. By 1982, industry analysts recognized MS-DOS as more user-friendly and efficient than CP/M. Attempts to penetrate the home computer market with CP/M were largely unsuccessful due to high software prices. By 1986, manufacturers such as Kaypro had discontinued producing CP/M machines in favor of MS-DOS models. As microcomputing shifted toward IBM-compatible architectures, CP/M’s market presence dwindled significantly; major trade publications ceased covering it by the late 1980s.
Subsequent releases of CP/M-86 enhanced performance and compatibility with MS-DOS under the new name DOS Plus, which ultimately evolved into DR-DOS.
ZCPR
ZCPR (Z80 Command Processor Replacement) was launched on 2 February 1982 as a direct substitute for the standard console command processor (CCP) provided by Digital Research. This project originated from "The CCP Group," a collective of computer enthusiasts spearheaded by Richard Conn, which also included Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias.
The initial version, ZCPR1, appeared on a SIG/M disk affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was released on 14 February 1983 as a collection of ten disks distributed by SIG/M and later enhanced to version 2.3. An 8080-compatible code variant was introduced, allowing operation on systems using the 8080 and 8085 processors.
Richard Conn and Frank Gaude established Echelon Inc. to commercially publish future releases while preserving free access to the software. On 14 July 1984, ZCPR3 was issued as nine disks from SIG/M. This edition could be compiled for the 8080 with limited features, enabling functionality on non-Z80 platforms. Its capabilities included command shells, aliases, input/output redirection, flow control constructs, named directories, search path support, customizable menus, password protection, and integrated online help.
In January 1987, Conn ended his involvement in development; Echelon then engaged Jay Sage to continue advancing the project, resulting in ZCPR 3.3. This iteration removed support for the 8080 processor but added numerous new features and utilities. Despite considerable endorsement from CP/M users, ZCPR was unable to halt the overall decline of the CP/M operating system.
Hardware model
A basic CP/M system based on an 8-bit architecture required:
- A computer terminal utilizing ASCII character encoding
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- NEC V20 and V30 processors supported emulation of the 8080 instruction set to run CP/M on PC-DOS/MS-DOS hardware; PC-compatible machines could execute CP/M-86
- A minimum of 16 KB RAM beginning at address zero
- A bootstrap mechanism for loading the first sector of a disk
- At least one floppy disk drive
Officially, Digital Research’s CP/M supported only the Intel 8080 Development System; however, hardware manufacturers adapted CP/M to fit their specific configurations. The Z80’s backward compatibility with the 8080 enabled numerous systems to operate CP/M using BIOS modifications and tailored software.
Digital Research collaborated with Zilog and American Microsystems to produce Personal CP/M—a ROM-based operating system designed for more affordable machines lacking disk drives—first implemented in the Sharp MZ-800 cassette-based computer with optional disk support. Personal CP/M took advantage of enhanced Z80 instructions rather than maintaining full compatibility with the original 8080.
American Microsystems introduced the S83 microprocessor featuring integrated ROM containing OS and BIOS code alongside logic for DRAM interfacing; this chip was priced at approximately $32 per unit when purchased in bulk.
Most systems utilized a minimal ROM bootstrap loader combined with bank switching or bus injection techniques to load CP/M at memory address zero; some required manual entry via front-panel controls during startup.
CP/M employed a 7-bit ASCII character set; however, extended 8-bit characters varied across manufacturers—for example, Kaypro machines used Greek symbols in extended codes, Osborne computers indicated underlined text through the eighth bit, and WordStar marked word boundaries similarly. International versions typically adhered to ISO 646 standards for localized character sets.
Components
When running in memory, the CP/M operating system consists of three primary components:
- Basic Input/Output System (BIOS)
- Basic Disk Operating System (BDOS)
- Console Command Processor (CCP)
The BIOS and BDOS remain resident in memory continuously, whereas the CCP is resident unless temporarily replaced by an application; it reloads automatically afterward. Transient commands representing standard utilities reside as executable files with a .COM extension on disk.
The BIOS manages hardware elements other than the CPU and main memory, handling tasks such as character input/output and disk sector operations. BDOS oversees file system management and input/output abstractions like redirection layered upon BIOS services. The CCP interprets user commands by executing built-in commands (such as DIR or ERA) or loading executable transient commands (for example PIP.COM or STAT.COM). Third-party applications typically operate as transient commands within this framework.
While BDOS, CCP, and standard transient commands maintain consistency across different CP/M versions, the BIOS is customized individually for each hardware platform.
Expanding system memory necessitates reinstalling CP/M so that transient programs can access additional space. The MOVCPM utility facilitates relocating object code segments by adjusting addresses in jump and call instructions accordingly. This patched version is saved onto a new disk enabling applications to utilize expanded memory areas. The OS components—BIOS, BDOS, and CCP—are stored in reserved disk sectors used during booting; a bootloader embedded in ROM firmware loads the operating system from drive A: upon startup.
By contemporary standards, CP/M is rudimentary due to stringent program size limitations. Early releases (version 1.0) lacked detection for disk changes which risked data corruption if disks were swapped without reloading directory information. Subsequent versions (1.1/1.2) introduced fatal error notifications when writing to disks that had changed before directory refreshes occurred; this prevented accidental overwrites but required rebooting.
The majority of CP/M’s complexity resides within BDOS and to a lesser degree within CCP and transient commands. Porting simple BIOS routines onto new hardware allowed entire OS functionality with minimal effort—greatly accelerating support for new machines. This hardware abstraction innovation was pivotal for CP/M’s widespread adoption; nowadays such multilayered OS architectures are commonplace.
Console Command Processor
The Console Command Processor (CCP) is responsible for managing keyboard inputs and displaying output on the terminal. CP/M supports both printing and video terminals, requiring users to enter all commands at the command line. The prompt, typically shown as A>, reflects the current default disk drive. Users can switch the active drive by typing the drive letter followed by a colon, such as B:, which updates the prompt to match.
CP/M’s command-line interface was inspired by Digital Equipment Corporation’s Concise Command Language found in systems like RT-11 and OS/8. Commands are structured with a keyword followed by parameters, separated by spaces or special delimiters. Internal commands are processed directly by CCP; if not recognized internally, CCP loads external executable files known as "transient" programs from storage. Once these transient programs finish running, BDOS reloads CCP if it was overwritten, freeing up more memory for transient applications.
Some commands retain historical names; for instance, file copying uses PIP, which originates from an earlier DEC utility. Parameter syntax varies among programs, lacking a unified option character convention.
Core CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass tools such as ASM, DDT, DUMP, ED, among others.
With CP/M Plus (Version 3), built-in commands were extended to feature DIR (excluding SYS attribute files), DIRSYS/DIRS for listing SYS files, ERASE/ERA, RENAME/REN, TYPE/TYP, and USER/USE with support for abbreviated command names. New transient utilities included COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PIP, SET, SHOW, SUBMIT, and XREF, broadening system management capabilities and user options.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) delivers fundamental services like file handling, console output, and printing functions. Applications request BDOS services by loading specific function codes and parameters into processor registers before invoking a fixed memory address. This consistent interface guarantees application compatibility across varying hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) provides the essential low-level hardware routines required by the operating system, including character input/output and disk sector read/write operations. While BDOS handles some disk buffering tasks, it originally assumed a fixed sector size of 128 bytes typical of 8-inch floppy disks. Since most 5.25-inch floppy disks utilize larger sectors, BIOS incorporates device-specific code to manage buffering and disk control.
Due to the wide range of hardware architectures—from integrated video controllers to diverse serial port interfaces and memory-mapped I/O—BIOS must be tailored accordingly. It abstracts hardware differences through standardized entry points that CP/M uses for services such as character I/O and disk access. Modem support within BIOS is generally limited or nonexistent; consequently, many CP/M applications rely on user-installed overlays to provide serial communication functionality on particular systems.
Applications
CP/M served as the foundation for several pioneering business applications, including WordStar for word processing and dBase for database management. Early outlining tools such as KAMAS and Out-Think were initially created for CP/M before transitioning to MS-DOS. Programming environments like Turbo Pascal—precursor to Borland Delphi—and Multiplan, which evolved into Microsoft Excel, were first introduced on CP/M. The platform also hosted the debut of VisiCalc, recognized as the first spreadsheet, alongside Sorcim’s SuperCalc, which later gained significant market share. Autodesk’s AutoCAD was originally developed on CP/M as well. A wide array of compilers and interpreters for languages such as BASIC, FORTRAN, and PL/I were available, including early offerings from Microsoft.
Software designed for CP/M commonly incorporated installation utilities to facilitate adaptation across diverse hardware systems. For instance, Kaypro II users could convert software formatted for the Xerox 820 to their native disk format. Source code in BASIC was often accessible, and copy protection measures were generally ineffective because CP/M utilized standardized disk formats, promoting extensive file compatibility.
Although limited graphical capabilities restricted video game development on CP/M, numerous text-based games were ported to the platform. Titles like Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction classics such as Zork and Colossal Cave Adventure became available. Infocom regularly published their text adventures in CP/M format. Lifeboat Associates distributed user-created software including XMODEM for dependable modem file transfers and the KAMAS outlining processor.
Transient Program Area
In the original CP/M implementations for the 8080, 8085, and Z80 processors, the memory region between address 0100 hexadecimal and just before the BDOS start at 0006H is designated as the Transient Program Area (TPA), which application programs could utilize. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system architecture since portions of memory were reserved for BIOS ROMs or video display buffers. To enlarge the TPA, bank switching was frequently employed to replace ROM or video memory segments. CP/M 3.0 further enhanced flexibility by allowing parts of the BDOS to reside in bank-switched memory areas.
Debugging application
CP/M featured a Dynamic Debugging Tool known as DDT, which provided capabilities to inspect and manipulate memory and program components as well as execute programs stepwise for debugging purposes.
Resident programs
Initially, CP/M did not support terminate-and-stay-resident (TSR) utilities similar to those found in DOS. Nevertheless, developers created software that intercepted operating system calls to extend functionality, resulting in desk accessories like SmartKey, a keyboard utility tool. The release of CP/M 3 introduced native support for dynamically loadable Resident System Extensions (RSX), which could be loaded independently of transient programs using null command files. Additionally, third-party solutions such as Resident System Modules (RSMs) were retrofitted into CP/M 2.2 to provide comparable features.
Software installation
Although CP/M abstracted hardware access for disk and console input/output operations, most applications required an installation process to leverage device-specific functions like printers and terminals. These peripherals often depended on manufacturer-specific escape sequences—for instance, commands to enable bold printing varied among printer models. Installation utilities enabled users to select target devices or customize escape sequences tailored to each application. Due to the absence of centralized device management within the operating system, this setup needed repetition for every individual program.
Printer initialization codes were embedded directly into software packages. Consequently, when using applications like WordStar with multiple printers—such as a fast dot-matrix printer versus a high-quality daisy wheel model—distinct versions had to be maintained and loaded according to the printer selected by the user.
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 systems. Unlike the 8-inch disks, there was no universally accepted 5.25-inch CP/M disk format; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own unique versions. Among these, some formats gained greater traction, with the Xerox 820 format—compatible with machines like the Kaypro II—being a common choice for software distribution. Nevertheless, InfoWorld reported in 1981 that roughly two dozen disk formats were prevalent enough to warrant software support. For instance, JRT Pascal was distributed on several 5.25-inch disk formats alongside an 8-inch version. Ellis Computing accommodated both Heath formats plus sixteen additional 5.25-inch varieties, including those used by TRS-80 CP/M systems. Companies like Lifetree also facilitated cross-system CP/M application conversions.
The selection of disk formats was influenced by hardware specifics and designer decisions. While CP/M permitted customization of reserved areas, directory structures, and logical-to-physical sector mapping, it lacked a standardized procedure for loading formatting parameters from disks created on differing systems.
Nearly all CP/M machines equipped with 8-inch drives could read the IBM single-sided, single-density format. Compatibility with other formats hinged on the types of disk drives and controllers employed, given the diversity of floppy disk variants in both 8-inch and 5.25-inch sizes. Disks differed based on sectoring method (hard or soft), density (single or double), number of sides used, track count (ranging from 35 to 80), and sector layout patterns. Software utilities allowed reading of disks with similar formats; for example, the Kaypro II could access disks from TRS-80, Osborne 1, IBM PC, and Epson QX-10 systems. However, certain disk types such as hard-sectored or 80-track disks were incompatible across different platforms. Users of Apple II systems were confined to Apple's GCR format and had to either obtain CP/M software on Apple-formatted disks or transfer programs via serial connections.
Due to this fragmentation in CP/M disk formats, distributors often needed to maintain inventory in multiple formats or invest in equipment capable of duplicating various disk types. This complexity contributed to CP/M's swift decline after 1981 when compared to the more standardized disk formats adopted by IBM PC compatibles.
Among the final significant CP/M-capable computers was the Commodore 128 released in 1985, which included a Z80 processor dedicated to running CP/M alongside its primary CPU. This system required either a 1571 or 1581 floppy drive to handle soft-sector, 40-track MFM formatted disks.
The earliest computer to feature a 3.5-inch floppy drive was the Sony SMC-70, which operated under CP/M 2.2. Other CP/M-compatible machines supporting 3.5-inch disks included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 running Montezuma CP/M 2.2. Additionally, Applied Engineering’s CP/AM for Apple II supported both 3.5-inch floppy disks and RAM disks using compatible memory cards. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to the more common 3.5-inch format.
File system
CP/M file names adhered to the 8.3 convention: a maximum of eight characters for the name portion followed by a period and a three-character extension that indicated file type—for example .COM denoting executable files or .TXT for text documents. When entered at the command prompt, filenames were automatically converted to uppercase; however, some applications such as MBASIC could generate lowercase filenames that were not easily accessible via standard command-line referencing.
Disk drives were designated by letters (e.g., A, B), with files referenced by prefixing the drive letter and colon before the filename—for instance A:FILE.TXT. If no drive letter was specified, commands defaulted to operate on the current drive.
File sizes were measured in units called records, each consisting of 128 bytes matching a disk sector size; exact byte counts were not supported natively. The operating system tracked file size information within the File Control Block (FCB). Text files typically ended with a control-Z character (ASCII SUB, hex value 1A) signaling end-of-file since many programs processed files as streams of characters rather than fixed-length records. Inserting control-Z within a file effectively truncated visible content at that point.
As larger removable and fixed storage devices emerged, disk block allocation schemes evolved to increase blocks per allocation unit (de-blocking), enabling storage of bigger files but also increasing minimum allocation sizes—from as low as 1 KB on single-density disks up to around 32 KB on higher-density media—resulting in inefficient space usage when many small files were stored.
CP/M version 2.2 did not support file modification timestamps; however, this feature became optionally available in MP/M and CP/M version 3.0.
While CP/M 2.2 lacked support for subdirectories, it provided sixteen numbered user areas for file organization purposes. Users could switch between these areas using "User X" commands (where X ranges from 0 to 15), effectively isolating files by user number. User area 0 was the default and accessible by all users; other areas restricted access exclusively to their designated user numbers. This system enhanced file management on machines equipped with hard drives by segregating tasks—for example separating data entry from billing operations—though it offered limited benefit on smaller floppy-based systems.
Graphics
While S-100 systems with graphical capabilities appeared early, CP/M did not offer standardized graphics support until the introduction of GSX in 1982. Due to constrained memory resources, graphics integration was uncommon in 8-bit CP/M machines. Most systems could only render basic ASCII art visuals within text mode or through customized character set implementations. Certain models, such as the Kaypro series and the TRS-80 Model 4, included video hardware capable of block graphics accessible via assembler or BASIC's CHR$ function. Additionally, the Model 4 supported 640×240 pixel graphics when equipped with an optional high-resolution expansion board.
Official
Some manufacturers created authorized CP/M enhancements utilizing Digital Research's original source code, exemplified by IMDOS, designed for the IMSAI 8080, a clone of the Altair 8800.
Compatible
Numerous independently developed CP/M-compatible operating systems emerged without incorporating Digital Research code, including:
- Cromemco CDOS by Cromemco
- MSX-DOS, compatible with MSX hardware and capable of executing CP/M software
- The Epson QX-10, which provided either CP/M or TPM-II/TPM-III compatible options
- The British SAM Coupé, offering an optional CP/M-2.2 compatible OS named Pro-DOS
- Amstrad/Schneider CPC and PCW lines, distributed with CP/M disk collections
- The ROM-based DEMOS loader on the Husky (computer), supporting numerous CP/M programs
- ZSDOS, a BDOS replacement for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
- CPMish, an open-source CP/M 2.2-compatible OS initially developed without Digital Research components; since 2022, updated by David Given to include original DR elements following authorization from Lineo's president
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, providing source code for BIOS, BDOS, CLI alongside original DR code with dynamically replaceable OS modules
- IS-DOS for the Enterprise, created by Intelligent Software
- VT-DOS for the Videoton TV Computer, also from Intelligent Software
Enhancements
Certain CP/M-compatible systems significantly expanded on the original design, such as TurboDOS, which supported multi-processor configurations.
Eastern bloc
Various CP/M-80 derivatives circulated throughout the former Eastern Bloc under multiple designations including 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, there were CP/M-86 variants like SCP1700, CP/K, and K8918-OS. These versions were produced primarily by East German manufacturer VEB Robotron and other regional companies.
Legacy
Microsoft Windows inherited numerous conventions from MS-DOS, which in turn aimed to maintain compatibility with CP/M. Concepts such as drive letter assignments and the 8.3 filename format originated with CP/M. The use of wildcard characters (? and *) in Windows stems from CP/M's system design; similarly, reserved device names like "PRN:" for printers and "CON:" for the console trace back to it. Floppy drives in CP/M were designated as A: and B:, while hard drives were assigned C: upon their introduction—a practice still observed in MS-DOS and Windows command prompts. The control character ^Z, used to signify end-of-file in certain text files, also has its roots in CP/M. Commands including DIR, REN/RENAME, TYPE, and ERA/ERASE were modeled after their CP/M counterparts. File extensions such as .TXT and .COM remain prevalent across multiple operating systems.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open source license. This allowed redistribution and modification of Digital Research files related to both CP/M and MP/M via Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, control transferred to Lineo, which updated and broadened the licensing terms later that year. In October 2014, the Computer History Museum released early versions of CP/M source code commemorating its 40th anniversary.
As of 2018, enthusiasts within vintage computing circles alongside some niche commercial entities continue to develop and maintain platforms running primarily CP/M version 2.2 as their operating system environment.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an operating system independently developed 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
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 (covers IBM's selection of Microsoft DOS over Digital Research's CP/M for the IBM PC)
- CP/M FAQ, comp.os.cpm
External links
- The Unofficial CP/M Web site – contains source code
- Gaby Chaudry's Homepage for CP/M and Computer History – features ZCPR resources
- CP/M Main Page – John C. Elliott's technical information portal
- 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 namedmeyer19820614 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedInfoworld 1981 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs nameddacruz19840427 - ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press. ISBN 978-0905104188.
- ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedSwaine_1997_Entrepreneurship - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedbunnell19820203 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedlibes198206