CP/M-85
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M operating system |
CP/M, initially an acronym for Control Program/Monitor and subsequently reinterpreted as 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. Designed as a disk operating system, CP/M organizes files on magnetic disk storage and facilitates program loading from these disks. Early iterations supported single-task operations on 8-bit processors with memory capacities up to 64 kilobytes, while later releases introduced multi-user capabilities and transitioned to 16-bit processor architectures.
The fundamental architecture of CP/M consists of three main modules: the Basic Input/Output System (BIOS), which controls hardware interactions; the Basic Disk Operating System (BDOS), responsible for file management and system-level functions; and the Console Command Processor (CCP), which interprets command-line inputs and executes internal commands.
Throughout the late 1970s to mid-1980s, CP/M established itself as the de facto operating system standard for microcomputers utilizing the S-100 bus, gaining extensive adoption in commercial environments. By enabling easier application portability across hardware from various manufacturers, CP/M significantly expanded both software and hardware markets. The emergence of cost-effective CP/M-compatible microcomputers also fostered a vibrant software development community, with independent programmers sharing innovations via user groups. However, CP/M's dominance waned following the introduction of DOS alongside the 1981 release of the IBM PC.
Early history
The inception of CP/M traces back to 1974 when Gary Kildall created it as an operating system tailored for the Intel Intellec-8 development platform, which incorporated a Shugart Associates 8-inch floppy-disk drive equipped with a proprietary controller. The system was programmed in Kildall’s proprietary language, PL/M (Programming Language for Microcomputers), drawing conceptual inspiration from the TOPS-10 operating environment on the DECsystem-10 mainframe.
CP/M was compatible with a wide range of computers powered by the 8080 and Z80 microprocessors. One of its earliest adopters was Gnat Computers, which acquired licenses for CP/M version 1.0 in 1977 at a cost of $90 per unit. As demand surged rapidly, Digital Research increased licensing fees substantially, reaching amounts in the tens of thousands.
The evolution of CP/M 2.0 was overseen by John Pierce in 1978 under Kildall’s direction. Kathryn Strutynski joined Digital Research in 1979 to debug CP/M 2.0 and played a pivotal role in developing subsequent versions such as CP/M 2.2 and CP/M Plus. Other notable contributors included Robert Silberstein and David K. Brown.
Originally termed "Control Program/Monitor," the name CP/M was officially redefined to "Control Program for Microcomputers" during its commercial rollout in 1977. This renaming aligned with naming trends of that era, paralleling Kildall’s PL/M language and IBM’s CP/CMS systems. The rebranding initiative, led by Kildall along with his wife and business associate Dorothy McEwen, aimed to establish Digital Research as a premier software company for microcomputers, aspiring to achieve market prominence comparable to what IBM and Microsoft later accomplished with personal computing terminology. Concurrently, the company changed its name from Intergalactic Digital Research, Inc. to Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than 250,000 CP/M licenses, with sublicensing arrangements indicating an even broader reach. A variety of manufacturers developed CP/M-based computers catering to different market segments; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Even companies with their own proprietary platforms, such as Heath/Zenith (which used HDOS), provided CP/M as an option for their 8080/Z80-based devices, a flexibility not seen in systems built around the 6502 CPU.[1] The widespread adoption of CP/M was largely fueled by its vast software ecosystem. For instance, the Xerox 820 integrated CP/M to take advantage of thousands of existing applications, with Xerox supplementing Digital Research’s limited documentation by including a Howard W. Sams CP/M manual.[2][3][4]
By 1984, Columbia University had compiled source code to create Kermit executables for over a dozen distinct CP/M variants, along with two generic versions.[5] CP/M was often characterized as a "software bus",[6][7] allowing various applications to communicate with hardware through a unified interface.[8] Software generally maintained portability across different machines, with only terminal and printer control codes needing adjustment. This cross-platform capability significantly contributed to CP/M’s popularity and the extensive software library it amassed compared to operating systems tied to single manufacturers. However, some drawbacks existed, such as programs utilizing Z80-specific instructions that were incompatible with 8080 or 8085 CPUs and graphics routines that directly accessed hardware components, which limited portability.[4]
Bill Gates identified the combination of the Apple II and the Z-80 SoftCard as the leading hardware setup for running CP/M.[9] By 1982, Digital Research announced that CP/M had been licensed for use on more than 450 distinct computer models.[10] Prominent CP/M systems included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. Among these, the best-selling CP/M-compatible device was probably the Amstrad PCW. In the United Kingdom, CP/M operated on educational computers from Research Machines (whose source code was made publicly available as a learning tool), the BBC Micro equipped with a Z80 co-processor, and popular models such as the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 was implemented on the NIAT handheld computer developed for A. C. Nielsen, which featured 1 MB of solid-state storage.
Multi-user
In 1979, Digital Research introduced MP/M, a multi-user extension of CP/M that enabled multiple terminals to connect to a single computer, each providing independent screens and keyboards for individual users. Subsequent editions expanded support to 16-bit processors.
CP/M Plus
Released in 1983, CP/M 3, also known as CP/M Plus, represented the final iteration of the 8-bit CP/M series, featuring a BDOS designed by David K. Brown. This version incorporated MP/M’s bank switching memory management into a single-user operating system compatible with CP/M 2.2 applications, allowing access to memory beyond 64 KB on 8080 or Z80 CPUs. Enhancements included file date stamps and integrated relocating assembler and linker utilities. CP/M 3 was aimed at advanced 8-bit platforms such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX devices, and the TRS-80 Model 4.
16-bit versions
Digital Research developed multiple CP/M variants targeting 16-bit architectures.
The initial release was CP/M-86 for the Intel 8086 processor, launched in November 1981 under the leadership of project manager Kathryn Strutynski. To differentiate it from the original, the earlier 8-bit version became known as CP/M-80. Although intended as the IBM PC’s primary operating system, CP/M-86 lost out due to licensing conflicts between Digital Research and IBM. IBM instead partnered with Microsoft to supply PC DOS based on 86-DOS. While CP/M-86 was eventually offered as an alternative following legal pressure, its significantly higher price (approximately $240 compared to PC DOS’s $40) limited its market penetration.
The Digital Equipment Corporation Rainbow 100 supported running CP/M-80 on a Z80 processor, CP/M-86 or MS-DOS on an 8088 chip, or both concurrently—enabling users to operate legacy 8-bit software alongside newer programs. Similarly, the CompuPro System 816 implemented a dual-processor variant named CP/M 8-16. The Zenith Z-100 also featured dual CPU support with compatibility for CP/M-86.
Following this, CP/M-68K was developed in 1982 for the Motorola 68000 CPU. Initially coded in Pascal/MT+68k and later ported to C, it operated on Motorola EXORmacs systems and was intended for Atari ST machines before Atari selected GEMDOS instead. It was also deployed on SORD M68 and M68MX computers.
That same year saw the release of CP/M-8000, a C language port of CP/M-68K tailored for the Zilog Z8000 processor on the Olivetti M20.
Applications needed recompilation to run on these 16-bit variants. To assist migration from CP/M-80 and MP/M-80 platforms to their 16-bit counterparts CP/M-86 and MP/M-86, Digital Research provided tools such as XLT86, which translated Intel 8080 assembly source code into optimized Intel 8086 assembly. XLT86 was accessible on both CP/M-80 and VAX/VMS environments.
Displacement by MS-DOS
By the early 1980s, approximately 2,000 applications were available for CP/M, leading to expectations that it would become the standard operating system for 16-bit computers. In 1980, IBM approached Digital Research to license a version of CP/M for its new IBM PC; however, negotiations failed due to an unsigned non-disclosure agreement. Consequently, IBM contracted Microsoft to supply an operating system.
MS-DOS shared numerous design elements with CP/M—including file management structures and drive letter assignments—but introduced the FAT file system as a key innovation. This facilitated easier porting of popular CP/M programs such as WordStar and dBase. MS-DOS also utilized more memory (commonly at least 64 KB) compared to CP/M’s minimum requirement of 16 KB, enabling a richer set of built-in commands in its command-line interface and enhancing usability on floppy disk-based systems.
Although early hardware solutions like the Baby Blue expansion card allowed running CP/M software on IBM PCs, industry reviews quickly favored MS-DOS. In 1982, BYTE magazine described MS-DOS as "more user-friendly, faster, with many advantages," while InfoWorld highlighted CP/M’s challenges in home computing markets due to costly software options. By 1986, manufacturers such as Kaypro had discontinued production of their 8-bit CP/M models in favor of MS-DOS compatible machines. As IBM-compatible systems gained dominance, CP/M’s market share dwindled rapidly and major technology publications ceased covering it by the late 1980s.
Subsequent iterations of CP/M-86 enhanced compatibility and performance relative to MS-DOS under the new name DOS Plus, which eventually evolved into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for Digital Research's original console command processor (CCP). The project originated from a collective of enthusiasts named "The CCP Group," which included Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, and was spearheaded by Richard Conn.
The initial version, ZCPR1, appeared on a disk distributed by SIG/M (Special Interest Group/Microcomputers), affiliated with the New Jersey Amateur Computer Club. Subsequently, ZCPR2 was released on 14 February 1983 as a set of ten SIG/M disks. This version evolved into 2.3 and was adapted into 8080 machine code, permitting operation on both 8080 and 8085 processors.
To commercialize ZCPR while preserving free availability, Richard Conn and Frank Gaude established Echelon Inc. On 14 July 1984, ZCPR3 was introduced via nine SIG/M disks and provided a compilable edition for 8080-based systems lacking the Z80 CPU. This iteration brought in sophisticated capabilities such as command shells, aliasing, input/output redirection, flow control mechanisms, named directory support, search path functionality, customizable menus, password protection, and integrated online help.
Following Conn’s departure from development in January 1987, Echelon engaged Jay Sage to further enhance the software, culminating in ZCPR 3.3. This update discontinued support for the 8080 processor and incorporated numerous new features and utilities. Although the CP/M user base embraced ZCPR enthusiastically, it ultimately could not prevent the gradual fading of the CP/M platform.
Hardware model
A basic CP/M setup based on an 8-bit architecture required these components:
- An ASCII-compatible computer terminal
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- NEC V20 and V30 CPUs offered 8080 emulation enabling CP/M to run on PC-DOS/MS-DOS hardware; meanwhile, any PC clone could execute CP/M-86
- A minimum of 16 KB RAM starting at address zero
- A mechanism to load the initial disk sector (bootstrap)
- At least one floppy disk drive
Digital Research officially endorsed only the Intel 8080 Development System for CP/M deployment; hardware manufacturers often tailored parts of the operating system to suit their devices. Due to compatibility with 8080 instructions, CP/M also operated on Z80-based machines. Although Digital Research’s core OS avoided using Z80-specific commands, many BIOS implementations and applications on Z80 systems did utilize them.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant designed for cost-effective computers without disk drives. This version first appeared in Sharp’s MZ-800 system which used cassettes but offered optional floppy storage. Personal CP/M exploited enhanced Z80 instructions rather than maintaining full compatibility with the original 8080 instruction set.
American Microsystems released the S83 microprocessor compatible with the Z80 architecture; it integrated an 8 KB ROM containing OS and BIOS code along with dynamic RAM interface logic. The S83 was priced at approximately $32 per unit when ordered in quantities of one thousand.
Most systems utilized a minimal ROM bootstrap combined with either bank switching or bus code injection techniques to provide startup instructions at address zero—a requirement for the 8080 CPU—while allowing CP/M to load into RAM memory. Certain machines demanded manual bootstrap code entry through front panel switches at power-up.
CP/M employed a 7-bit ASCII character encoding scheme; however, the upper half of each byte was left undefined across implementations. Manufacturers applied these additional bits differently—for instance, Kaypro used them for Greek characters; Osborne employed them for underlining text; WordStar used them to indicate word boundaries. International editions generally followed ISO 646 standards by substituting some ASCII characters with localized variants instead of extending beyond seven bits.
Components
When CP/M is active, the operating system 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 remain resident in memory continuously, while the CCP stays resident unless an application temporarily replaces it, after which it is automatically restored. Standard utility commands that are not built-in exist as transient .COM files stored on disk.
The BIOS manages hardware peripherals beyond the CPU and memory, including character input/output and disk sector operations. The BDOS oversees the CP/M file system along with input/output abstractions such as redirection, functioning above the BIOS layer. The CCP interprets user commands, executing internal functions like DIR or ERA or launching transient command executables such as PIP.COM for file copying. Third-party applications designed for CP/M operate as transient commands as well.
While BDOS, CCP, and standard transient commands remain largely unchanged across different CP/M versions, the BIOS is tailored specifically for each hardware platform.
To utilize additional memory after an upgrade, CP/M must be reinstalled to accommodate the expanded space. This is accomplished using the MOVCPM utility, which adjusts absolute instruction addresses to relocate system code within new memory areas. The modified system image is then saved back to disk, allowing applications to access the increased memory capacity. The operating system components reside in reserved disk sectors dedicated to booting; a ROM-resident bootloader loads CP/M from drive A: during startup.
By contemporary standards, CP/M is considered rudimentary due to its stringent size constraints. Early releases lacked mechanisms to detect disk changes, risking data corruption if disks were swapped without refreshing directory information. Subsequent versions introduced error notifications to prevent overwriting but still required a system reboot to recover.
The bulk of CP/M's complexity lies within BDOS, with comparatively simpler functionality in CCP and transient commands. Rapid deployment across various hardware was enabled by porting BIOS routines for each platform—this modularity was instrumental in CP/M’s widespread adoption. This early example of a hardware abstraction layer was innovative at a time when most operating systems were designed for single hardware configurations without layered architectures.
Console Command Processor
The Console Command Processor (CCP) is responsible for handling keyboard input and displaying output on terminals. CP/M supports both printing and video terminal types, requiring all user interactions to be entered via the command line. Typically, the prompt displays the current default disk drive (e.g., A>) followed by a blinking cursor on video terminals. 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 draws inspiration from Digital Equipment Corporation’s command languages found in systems like RT-11 and OS/8. Commands consist of 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 disk storage. Upon completion of these programs, BDOS reloads the CCP to free memory for other applications.
Some command names retain legacy terminology—for example, PIP (Peripheral Interchange Program) for file copying—reflecting origins from DEC systems. Parameter conventions differ across utilities without a unified standard for option characters.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Common transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands were enhanced with additions such as DIRSYS and permitted abbreviated command entry. The suite of transient commands expanded to include utilities like COPYSYS, DATE, DEVICE, HELP, LINK, among others—facilitating more sophisticated system administration and software development capabilities.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) is responsible for essential operations like managing files, handling console output, and controlling printing tasks. Applications interact with BDOS by placing function codes and parameters into processor registers before invoking a predetermined memory location. This uniform method ensures software compatibility across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) provides fundamental hardware-level services required by the operating system, such as character input/output and disk sector operations. While BDOS handles certain disk buffering functions, versions before CP/M 3.0 assumed a fixed sector size of 128 bytes, which was standard for single-density 8-inch floppy disks. Because most 5.25-inch disks utilized larger sectors, BIOS incorporated device-specific routines to manage buffering and sector handling.
Due to the diversity in hardware architectures—ranging from integrated video displays to terminal setups, different UART chips for serial communication, and memory-mapped I/O instead of conventional 8080 ports—BIOS needed customization. It masks these variations by providing standardized entry points for functions like character input/output and disk access. Serial port support within BIOS was limited or sometimes nonexistent; consequently, CP/M applications often relied on user-installed overlays to enable modem communication via serial ports.
Applications
CP/M served as the platform for groundbreaking business applications including WordStar for word processing and dBase for database management. Early outliner tools such as KAMAS and Out-Think were initially created on CP/M before moving to MS-DOS. Both Turbo Pascal and Multiplan launched on CP/M ahead of their MS-DOS releases. The first spreadsheet program, VisiCalc, was available on CP/M, alongside Sorcim’s SuperCalc, which dominated the spreadsheet market on this platform before entering competition under MS-DOS. Autodesk’s AutoCAD also originated on CP/M. A wide range of compilers and interpreters—including BASIC, Turbo Pascal, FORTRAN, and PL/I—were offered; many represented some of Microsoft’s earliest software products.
CP/M applications commonly included installation utilities designed to adapt software to different hardware environments. For instance, Kaypro II users could convert software formatted for Xerox 820 disks into their own disk format. BASIC source code was often distributed openly, and copy protection measures were generally ineffective due to CP/M’s uniform disk formats that facilitated cross-software compatibility.
The limited graphical capabilities restricted video game development; however, numerous text-based games such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction titles like Zork and Colossal Cave Adventure were ported to CP/M. Infocom consistently released its games in CP/M format. Lifeboat Associates distributed user-developed freeware including XMODEM, which provided dependable file transfers over modems. The outline processor KAMAS was another prominent native program within the CP/M ecosystem.
Transient Program Area
In the original CP/M implementations for the 8080, 8085, and Z80 processors, the read/write memory region from address 0100 hexadecimal up to just below the address stored at 0006H (which indicates the lowest BDOS entry point) is designated as the Transient Program Area (TPA), reserved for application execution. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system configuration since some systems allocated portions of address space for BIOS ROM or video memory. To increase TPA size, bank switching was frequently employed by swapping out ROM or video memory segments. Additionally, CP/M 3.0 introduced the capability for parts of BDOS to reside within bank-switched memory areas.
Application Debugging
CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory and program components, as well as execute programs one instruction at a time.
Resident Software
In its initial versions, CP/M did not support terminate-and-stay-resident (TSR) utilities similar to those found in DOS. Nevertheless, developers could intercept operating system calls to enhance functionality, resulting in add-on desk accessories such as SmartKey, a keyboard utility. With the introduction of CP/M 3, the system gained the ability to load Resident System Extensions (RSX) dynamically, enabling extensions to run without relying on transient programs. Additionally, third-party solutions like Resident System Modules (RSMs) were backported to CP/M 2.2 to provide comparable capabilities.
Installation of Software
Although CP/M abstracted hardware access for disk and console input/output, applications generally needed installation procedures to operate printers and terminals effectively. Device control often depended on manufacturer-specific escape codes—for instance, sequences that activated bold printing on certain printers. Installation utilities permitted users to select or tailor these codes for their particular devices. Since no centralized operating system service managed hardware devices, this setup process had to be repeated individually for each application.
Printer initialization codes were embedded within software titles. For example, when using WordStar with different printers—such as a rapid dot-matrix printer versus a slower daisy wheel model—distinct program versions were required. Users had to reload the appropriate version corresponding to the printer in use.
Disk Formats
CP/M’s standard 8-inch floppy disk format is based on the IBM System/34 and IBM 3740 specifications, featuring 128-byte sectors in single-density, single-sided configuration. Unlike the 8-inch disks, there was no uniform 5.25-inch disk format for CP/M; manufacturers like Kaypro, Morrow Designs, Osborne, and others each implemented their own variants. Among these, some formats gained wider acceptance: most software was distributed on the Xerox 820 format compatible with systems such as the Kaypro II. However, InfoWorld estimated in September 1981 that approximately two dozen formats were sufficiently prevalent that software developers needed to consider them to maximize market reach. JRT Pascal offered multiple 5.25-inch disk versions for platforms including North Star, Osborne, Apple, Heath/Zenith (both hard- and soft-sector), and Superbrain, along with an 8-inch edition. Ellis Computing provided software supporting both Heath formats plus sixteen additional 5.25-inch variants including TRS-80 CP/M derivatives. Companies like Lifetree facilitated cross-system CP/M application conversions.
The choice of disk format was influenced by system architecture and disk media properties. CP/M allowed customization of reserved areas, directory sizes, and logical-to-physical sector mappings tailored per system; however, no standardized method existed for importing these parameters from disks formatted on different machines.
Nearly all CP/M systems equipped with 8-inch drives can read IBM’s single-sided, single-density disks; nonetheless, compatibility across CP/M computers varies due to differing floppy drives and controllers supporting various floppy types in both 8-inch and 5.25-inch sizes. Disk characteristics such as sectoring method (hard or soft), density level, number of sides, track count (ranging from 35 to 80), sector arrangement, size, and interleave patterns differ significantly. Translation utilities enable reading disks from other systems with similar formats—for instance, the Kaypro II can access disks from TRS-80, Osborne, IBM PC, and Epson machines. However, certain formats like 80-track or hard-sectored disks remain unreadable. Double-sided disks can only be partially accessed due to CP/M’s sequential track reading approach. Apple II users are restricted to Apple's GCR format and must acquire CP/M software on Apple-compatible disks or transfer data via serial connections.
The fragmented nature of CP/M disk formats compelled distributors to maintain inventories of multiple disk types or invest in multiformat duplication hardware. This complexity contrasted sharply with the more uniform IBM PC disk standards and contributed significantly to CP/M’s swift decline after 1981.
Among the final notable machines supporting CP/M was the Commodore 128 (released in 1985), which incorporated a Z80 processor alongside its native CPU specifically for running CP/M. Operating CP/M on this system required a 1571 or 1581 drive capable of handling soft-sector 40-track MFM-formatted disks.
The first computer equipped with a 3.5-inch floppy drive—the Sony SMC-70—ran CP/M 2.2. Other systems supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also supported both 3.5-inch floppy drives and RAM disks via compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to 3.5-inch units.
File system
File names adhered to the 8.3 convention, allowing up to eight characters followed by a period and a three-character extension that denoted the file type (for instance, .COM represented executables, while .TXT indicated text files). When entered at the command prompt, filenames were automatically converted to uppercase; however, certain applications, especially MBASIC, generated lowercase filenames, which complicated command-line referencing.
Disk drives were designated by drive letters such as A or B. Files were accessed by prefixing the filename with the drive letter and a colon (e.g., A:FILE.TXT). If no drive letter was specified, commands defaulted to the currently active drive.
File size was expressed in units of 128-byte records, corresponding to disk sectors on 8-inch drives, and this information was stored within the file's File Control Block (FCB). Precise byte counts were generally not supported. Text files typically terminated with a control-Z character (ASCII SUB, hex 1A) to indicate end-of-file; inserting this character prematurely would truncate the file at that point.
With the introduction of larger removable and fixed disks, disk de-blocking enabled multiple disk blocks per allocation block. This allowed for handling bigger files but also increased the minimum allocation size from 1 KB (for single-density disks) up to 32 KB for small files, which could result in inefficient disk space usage when storing many small files.
File modification timestamps were not available 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 but provided 16 numbered user areas for organizing files. Users could switch between these areas by entering "User X" at the prompt. Security measures were minimal, reflecting its design for personal computers. These user areas aimed to replicate multi-user environments found in MP/M; files stored in one user area were isolated from others except for USER 0, which was accessible to all users via explicit paths. While this feature offered limited benefit on small floppy disks, it proved advantageous on systems equipped with hard drives by enabling task separation—for example, allowing different employees like secretaries and billing clerks to share a machine without mixing their files.
Graphics
Although S-100 systems with graphics capabilities existed from early on, CP/M itself lacked standardized graphics support until 1982 with the release of GSX. Due to constrained memory resources, graphics usage was uncommon on 8-bit CP/M machines, which mostly displayed simple ASCII art or utilized custom character sets. Certain models such as the Kaypro series and the TRS-80 Model 4 provided block graphics accessible through assembler and BASIC programming. The TRS-80 Model 4 even supported 640×240 pixel graphics when equipped with an optional high-resolution graphics board.
Official
Several companies produced official CP/M enhancements derived from Digital Research’s source code. An example is IMDOS, developed for the IMSAI 8080, a clone of the Altair 8800.
Compatible
Numerous independent operating systems compatible with CP/M appeared that did not incorporate Digital Research code, including:
- Cromemco CDOS, created by Cromemco
- MSX-DOS, which maintained compatibility with CP/M and could execute its software
- The Epson QX-10, offering either CP/M or compatible TPM-II/TPM-III environments
- The British ZX Spectrum-compatible SAM Coupé, featuring optional Pro-DOS (compatible with CP/M-2.2)
- Amstrad/Schneider CPC and PCW product lines bundled with CP/M disk software
- The Husky (computer), running DEMOS—a ROM-based loader supporting numerous CP/M applications
- ZSDOS, a replacement BDOS 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 code; since 2022 it has incorporated original DR CP/M components under permission from Lineo's president
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, providing compatibility with CP/M 2.2 and including source code for BIOS, BDOS, CLI as well as original Digital Research source code and hot-swappable OS modules
- IS-DOS for the Enterprise, developed by Intelligent Software
- VT-DOS for the Videoton TV Computer, also created by Intelligent Software
Feature Improvements
Certain CP/M-compatible operating systems introduced notable enhancements, including the multi-processor support found in TurboDOS.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 derivatives appeared under a range of designations such as SCP, SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, and CP/L among others. East German manufacturers like VEB Robotron developed CP/M-86 versions including SCP1700, CP/K, and K8918-OS. The precise nature of these systems’ development—whether through modified binaries, adapted source code, or entirely new implementations—remains uncertain.
Enduring Impact
A significant portion of Microsoft Windows functionality originates from compatibility with MS-DOS, which itself inherited many conventions from CP/M. These elements include drive letter assignments (A and B for floppy disks; C for hard drives), the 8.3 filename scheme, wildcard characters (?, *), and reserved device names such as "PRN:" and "CON:". The use of control character ^Z to signify end-of-file, along with commands like DIR, REN/RENAME, and TYPE, also trace their roots back to CP/M. Common file extensions such as .TXT and .COM continue to be widely utilized.
Between 1997 and 1998, Caldera made CP/M 2.2 binaries and source code available under an open source license, facilitating distribution via Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo, the holder of Digital Research’s intellectual property, revised the licensing terms to maintain community support. In October 2014, the Computer History Museum commemorated CP/M’s 40th anniversary by releasing early versions of its source code.
As of 2018, dedicated vintage computing enthusiasts and specialized enterprises persist in developing and maintaining CP/M-based systems, predominantly focusing on version 2.2.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently developed OS inspired by 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 instead of Digital Research's CP/M for the IBM PC)
- CP/M FAQ available at comp.os.cpm newsgroup and Digital Research official site
External links
- The Unofficial CP/M Web site (established by Tim Olmstead) – features source code
- Gaby Chaudry's CP/M and Computer History Homepage – contains ZCPR documentation
- CP/M Main Page – technical resources by John C. Elliott
- MaxFrame’s Digital Research CP/M resource page
- ↑ 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 - ↑ 4.0 4.1 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". Archived from the original on 2021-06-29. Retrieved 2021-06-29.
- ↑ 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