MICRODOS
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall, Dorothy McEwen |
| Headquarters | United States |
| Products | CP/M, PL/M compiler |
CP/M, an acronym initially for Control Program/Monitor and later redefined 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. As a disk operating system, CP/M was designed to manage files stored on magnetic media and facilitate program loading from disk drives. Originally, it operated as a single-tasking system on 8-bit processor architectures with memory limits up to 64 kilobytes, but subsequent iterations introduced multi-user support and compatibility with 16-bit processor systems.
The architecture of CP/M is composed of three primary modules: the Basic Input/Output System (BIOS), responsible for interfacing with hardware devices; the Basic Disk Operating System (BDOS), which oversees file management and system-level services; and the Console Command Processor (CCP), a command-line shell equipped with intrinsic commands.
During its peak, CP/M emerged as the de facto operating system standard for microcomputers utilizing the S-100 bus, becoming prevalent in commercial environments from the late 1970s through the mid-1980s. By streamlining software portability across various hardware vendors, CP/M played a pivotal role in expanding both hardware and software ecosystems. The availability of affordable CP/M-based systems encouraged innovation among independent programmers and user communities. Despite its dominance, CP/M's prominence diminished following the introduction of the IBM PC in 1981, which popularized DOS.
Early history
In 1974, Gary Kildall created CP/M to serve as an operating system for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates equipped with a specialized controller.[1] The system was programmed using 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, which Kildall had experience with.[3]
CP/M was compatible with numerous machines based on both the 8080 and Z80 processors. One of its earliest licensees was Gnat Computers, which acquired rights to distribute CP/M 1.0 for $90 in 1977. The rapid increase in demand soon enabled Digital Research to escalate licensing costs to several tens of thousands of dollars.[4]
John Pierce took a leading role in developing CP/M 2.0 under Kildall’s direction in 1978. In early 1979, Kathryn Strutynski joined Digital Research, initially focusing on debugging CP/M 2.0 before making significant contributions to versions 2.2 and CP/M Plus. Other notable contributors included Robert Silberstein and David K. Brown.[5][6]
The original meaning of CP/M was "Control Program/Monitor",[7] indicating a basic resident monitor function. However, trademark documentation filed in November 1977 redefined the acronym as "Control Program for Microcomputers".[8] This change aligned with naming conventions prevalent at the time, such as Kildall’s own PL/M language and IBM’s CP/CMS operating system, emphasizing its orientation toward microcomputer technology.
This rebranding effort was part of a strategic initiative by Kildall, his wife, and business partner Dorothy McEwen[9] to commercialize both CP/M and the PL/M compiler under the Digital Research label. Their objective was to establish Digital Research as synonymous with "microcomputer," a branding approach that anticipated similar strategies later employed by IBM and Microsoft. Subsequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[9]
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with sublicensing likely expanding the true market reach. A wide array of manufacturers developed CP/M-based computers targeting various sectors; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Even companies with their own proprietary OSes, such as Heath/Zenith (HDOS), offered CP/M as an alternative on their 8080/Z80 models—contrasting with the 6502 CPU segment, which lacked a similar dominant standard.[10] The extensive software ecosystem was a key reason for this support. The Xerox 820 integrated CP/M to leverage its broad software catalog, and Xerox supplemented Digital Research’s often criticized documentation by including a Howard W. Sams CP/M manual.[11][12][13] By 1984, Columbia University utilized the identical source code to compile Kermit executables compatible with over a dozen CP/M variants alongside generic builds.[14]
CP/M was characterized as a "software bus",[15][16] facilitating interaction among multiple applications across diverse hardware through a standardized interface.[17] Software was generally portable between different systems, requiring modifications primarily for terminal and printer control codes. This adaptability significantly contributed to CP/M’s widespread adoption and extensive software availability compared to operating systems limited to single hardware platforms. However, some drawbacks included incompatibilities caused by programs utilizing the Z80’s extended instruction set on 8080/8085 processors and graphics routines that were often hardware-specific due to direct device access optimized for performance.
Bill Gates identified the Apple II equipped with a Z-80 SoftCard as the leading CP/M hardware platform.[18] By 1982, Digital Research announced CP/M licensing on upwards of 450 different computer models.[19] Prominent CP/M systems encompassed the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. The Amstrad PCW was arguably the top-selling system compatible with CP/M. In the United Kingdom, CP/M was accessible on educational machines from Research Machines (with source code published for learning purposes), the BBC Micro outfitted with a Z80 co-processor, as well as the Amstrad CPC, Commodore 128, TRS-80, and subsequent ZX Spectrum versions. Additionally, CP/M 3 operated on NIAT handheld devices crafted for internal use by A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Versions
Digital Research introduced MP/M in 1979—a multi-user variant of CP/M that allowed several users to access a single computer simultaneously through multiple terminals, each equipped with its own display and keyboard. Subsequent releases extended support to include 16-bit processor architectures.
CP/M Plus
The last iteration of the 8-bit CP/M series was version 3, referred to as CP/M Plus, introduced in 1983. Created by David K. Brown, its BDOS integrated MP/M's bank-switching memory management into a single-user operating system that maintained compatibility with CP/M 2.2 programs, allowing access to memory beyond 64 KB on 8080 or Z80 CPUs. This version added features such as file date stamping and included tools like a relocating assembler and linker. CP/M Plus was aimed at advanced 8-bit machines including the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, and the TRS-80 Model 4.
16-bit versions
Digital Research created several CP/M variants tailored for 16-bit processors.
The initial release was CP/M-86, designed for the Intel 8086 and launched in November 1981 under the leadership of project manager Kathryn Strutynski. To differentiate it from the original 8-bit OS, that version became known as CP/M-80. CP/M-86 was anticipated to be the IBM PC’s primary operating system; however, licensing disagreements resulted in IBM choosing Microsoft's PC DOS instead. Although CP/M-86 was eventually made available for IBM PCs following legal pressure, it struggled to capture market share due to IBM pricing it much higher than PC DOS (US$240 compared to US$40).
When Digital Equipment Corporation released the Rainbow 100 to rival IBM, it offered support for CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or a dual-processor mode enabling simultaneous operation of both systems. This approach preserved users’ investments in existing 8-bit applications while facilitating a shift to 16-bit environments. Similar dual-processor configurations included CP/M 8-16 for the CompuPro System 816 and CP/M-86 for the Zenith Z-100.
Following CP/M-86, Digital Research introduced CP/M-68K for the Motorola 68000 processor in 1982. Originally developed using Pascal/MT+68k and later ported to C, CP/M-68K ran on EXORmacs hardware and was considered as an OS option for the Atari ST before Atari selected GEMDOS. It also operated on SORD M68 and M68MX machines.
Also in 1982, a C-based port named CP/M-8000 was created for the Zilog Z8000 processor utilized by the Olivetti M20.
These 16-bit CP/M variants necessitated recompiling applications. To facilitate this process, Digital Research provided utilities such as XLT86, which translated Intel 8080 assembly code into optimized Intel 8086 assembly language respecting size and calling conventions. This tool enabled automatic migration of CP/M-80 and MP/M-80 software to their CP/M-86 and MP/M-86 counterparts. XLT86 was implemented in PL/I-80 and available on both CP/M-80 and VAX/VMS platforms.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications existed for CP/M, positioning it as the expected standard OS for emerging 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license an updated CP/M version for its forthcoming PC. After failing to obtain a signed non-disclosure agreement from Digital Research, IBM turned to Microsoft to supply an operating system instead.
MS-DOS incorporated many fundamental ideas from CP/M, including file management structures and drive letter assignments (A:, B:, etc.). Its principal advancement was introducing the FAT file system, which simplified porting widely used CP/M programs such as WordStar and dBase. MS-DOS also capitalized on expanded memory capacities (commonly exceeding 64 KB) to embed more commands within its command-line interface, enhancing speed and usability on floppy disk-based systems.
Despite early hardware solutions like the Baby Blue card that enabled running CP/M software on IBM PCs, industry reviews quickly favored MS-DOS. BYTE magazine in 1982 described MS-DOS as "more user-friendly, faster, with many advantages." By 1984, InfoWorld observed that CP/M had failed to establish itself in the home computer market due to pricing issues. By 1986, manufacturers such as Kaypro discontinued production of 8-bit CP/M machines to concentrate on MS-DOS-compatible systems. As microcomputing shifted toward IBM PC compatibility, CP/M rapidly lost relevance and largely vanished from prominent industry coverage by the late 1980s.
Subsequent versions of CP/M-86 enhanced performance and compatibility with MS-DOS environments, rebranding as DOS Plus before eventually evolving into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was introduced on 2 February 1982 as a direct substitute for the standard console command processor (CCP) developed by Digital Research. This project was initiated by a collective of enthusiasts called "The CCP Group," led by Richard Conn. The initial version, ZCPR1, was distributed through SIG/M, a segment of the Amateur Computer Club of New Jersey.
On 14 February 1983, ZCPR2 was released as a collection of ten disks via SIG/M and later enhanced to version 2.3. This update included an 8080 code release to accommodate 8080 and 8085 microprocessors. Richard Conn and Frank Gaude established Echelon Inc. to commercialize future versions while continuing to provide the software freely. The launch of ZCPR3 on 14 July 1984 introduced sophisticated capabilities such as command shells, aliases, input/output redirection, flow control mechanisms, named directory support, search paths, customizable menus, password protection, and integrated help features. A limited-feature variant was also made available for systems that did not use the Z80 processor.
Following Conn’s departure from development in January 1987, Jay Sage assumed responsibility and issued ZCPR 3.3. This release discontinued support for 8080 processors but added numerous new functionalities and utilities. Despite enthusiastic adoption among CP/M users, ZCPR was unable to halt the gradual obsolescence of the CP/M operating system.
Hardware model
A basic CP/M setup with an 8-bit architecture required the following components:
- A terminal capable of displaying ASCII characters
- A microprocessor such as the Intel 8080/8085 or the Zilog Z80
- NEC V20 and V30 processors provided 8080 emulation, allowing CP/M-86 compatibility on PC-DOS/MS-DOS platforms
- A minimum of 16 KB RAM beginning at memory address zero
- A bootstrap mechanism to load the initial disk sector into memory
- At least one floppy disk drive for storage
Officially, Digital Research’s CP/M supported only the Intel 8080 Development System; however, various manufacturers adapted CP/M for their unique hardware designs. Due to the instruction set compatibility between the Z80 and 8080 processors, many Z80-based machines ran CP/M with BIOS routines tailored to exploit specific Z80 instructions.
Digital Research collaborated with Zilog and American Microsystems to develop Personal CP/M—a ROM-based variant aimed at cost-effective systems lacking disk drives. This version debuted in the Sharp MZ-800 cassette-driven computer with optional disk support and leveraged enhanced Z80 instructions rather than strictly adhering to the original 8080 portability.
American Microsystems released the S83 microprocessor—a Z80-compatible chip integrating ROM containing OS and BIOS code alongside logic for dynamic RAM interfacing. The unit cost for S83 chips was approximately $32 in bulk orders.
Most CP/M systems implemented a minimal bootstrap loader stored in ROM combined with bank switching or bus injection techniques to manage RAM requirements at address zero. Some required manual bootstrap code entry through front-panel switches during startup.
The operating system utilized a 7-bit ASCII character set; however, extended character usage was not uniform across manufacturers. For instance, Kaypro employed extended characters for Greek alphabets; Osborne machines used the eighth bit to signify underlining; WordStar interpreted it as an end-of-word marker. International versions generally adhered to ISO 646 standards by substituting specific ASCII characters rather than extending beyond seven bits.
Components
When CP/M is active in memory, it consists of three main parts:[7][20][21][22][23]
- 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 stays resident until replaced by an application, after which it automatically reloads. Standard utilities function as transient commands stored on disk as .COM files.
The BIOS manages hardware components outside the CPU and main memory, including tasks such as character input/output and disk sector handling. BDOS provides file system management and input/output abstractions layered on top of the BIOS. The CCP interprets user commands, executing built-in instructions like DIR and ERA or launching executable transient commands such as PIP.COM and STAT.COM. Third-party software also runs as transient commands.
Across different CP/M versions, BDOS, CCP, and the standard transient commands remain consistent; only the BIOS varies to accommodate specific hardware.
Adding more memory necessitates reinstalling CP/M so that transient programs can utilize the expanded space. The MOVCPM utility adjusts absolute jump addresses to relocate system code, enabling the operating system to occupy new memory regions. The OS components reside in reserved disk sectors for booting through a bootloader typically embedded in ROM firmware that loads from drive A:.
By today’s standards, CP/M appears rudimentary due to stringent size limitations. Early editions lacked detection for disk changes, risking data corruption if disks were swapped without refreshing directory information. Starting with version 1.1, attempts to write before reading a new disk directory cause a fatal error to prevent overwriting, requiring a reboot.
Most of CP/M’s complexity lies within BDOS, with additional functionality in CCP and transient commands. Porting the BIOS to new hardware allowed the entire operating system to function on diverse platforms, substantially reducing development effort and contributing to CP/M’s widespread popularity. This method of hardware abstraction was pioneering compared to contemporaneous operating systems designed for single hardware configurations.
Console Command Processor
The Console Command Processor (CCP) handles keyboard input and displays output on terminals. CP/M supports both printing and video terminals, requiring all user interactions to be entered via the command line. The prompt, usually A>, reflects the current default disk drive; this can be changed by typing a drive letter followed by a colon (e.g., B:), which updates the prompt accordingly.
The command-line interface of CP/M was inspired by Digital Equipment Corporation’s Concise Command Language found in systems like RT-11 and OS/8. Commands consist of a keyword followed by parameters separated by spaces or special delimiters. Internal commands are executed directly by the CCP; if not internal, CCP loads an executable "transient" program from the active disk drive and passes along parameters. After execution, BDOS reloads CCP if it was overwritten, freeing memory for transient programs.
Some command names reflect their DEC heritage—for example, PIP stands for Peripheral Interchange Program used for copying files. Parameter syntax varies among programs without standardized option prefixes.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass utilities such as ASM, DDT, DUMP, ED, LOAD, along with PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands are enhanced with DIRSYS/DIRS for handling system files, ERASE/ERASE for file deletion, RENAME/REN for renaming files, TYPE/TYP for displaying ASCII content, and USER/USE to switch user numbers. This version also allows abbreviation of commands. Transient utilities in CP/M 3 include COPYSYS, DATE, DEVICE, DUMP, ED, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, and XREF.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) is responsible for managing tasks such as file handling, console display, and printing operations. Applications access BDOS features through predefined memory locations, ensuring uniform functionality across a variety of hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers fundamental services including character input/output and reading or writing disk sectors. While BDOS manages certain diskette buffering functions, it operates under the assumption of a fixed 128-byte sector size prior to CP/M version 3.0. Due to the diversity in hardware designs—ranging from built-in video subsystems to different serial port configurations—customizing the BIOS is necessary. It abstracts these hardware variations from the operating system via standardized service entry points. Serial communication capabilities within BIOS are limited or non-existent, so modem-related operations are frequently handled by user-installed overlays tailored to specific devices.
Applications
CP/M served as the platform for groundbreaking business software such as WordStar, one of the earliest widely adopted word processors, and dBase, a leading microcomputer database application. Additional prominent programs included outliners like KAMAS and Out-Think, Turbo Pascal (the forerunner of Borland Delphi), Multiplan (a precursor to Microsoft Excel), and VisiCalc, recognized as the first spreadsheet software. Sorcim’s SuperCalc emerged as the dominant spreadsheet on CP/M before expanding into MS-DOS markets. AutoCAD by Autodesk also made its initial appearance on CP/M. The system supported numerous compilers and interpreters for languages including BASIC, Turbo Pascal, FORTRAN, and PL/I, with several early Microsoft products among them.
Many CP/M applications featured installers that facilitated adaptation to various hardware platforms; for instance, Kaypro II users converted software originally formatted for Xerox 820 disks to their own system’s format. BASIC source code was commonly available, and copy protection mechanisms were generally ineffective because CP/M’s consistent disk formats encouraged broad software interoperability.
Due to graphical constraints, video games were mostly text-based or relied on character graphics, with titles such as Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction like Zork and Colossal Cave Adventure being popular. Infocom regularly released games compatible with CP/M. Lifeboat Associates distributed user-created freeware programs including XMODEM for dependable file transfers over modems and the outline processor KAMAS.
Transient Program Area
In the original CP/M implementations for the 8080, 8085, and Z80 processors, the writable memory region between hexadecimal address 0100 and just below 0006H (the lowest BDOS address) was designated as the Transient Program Area (TPA), reserved for application execution. Although these CPUs could address up to 64 KB of memory, the size of the TPA varied depending on system architecture since BIOS ROMs or video memory occupied portions of address space. To increase TPA capacity, bank switching was employed to swap out ROM or video memory segments as necessary. CP/M 3.0 further advanced this concept by enabling parts of BDOS to reside in bank-switched memory.
Debugging application
CP/M incorporated the Dynamic Debugging Tool (DDT), which allowed users to inspect and modify memory contents and program modules while facilitating stepwise execution of code for debugging purposes.
Resident programs
Initially, CP/M did not support terminate-and-stay-resident (TSR) utilities as DOS did. Nevertheless, developers engineered software that intercepted operating system calls to enhance capabilities, exemplified by SmartKey, a keyboard utility. With the arrival of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling the CCP to load RSXs directly without relying on transient programs through null command files. Additionally, third-party solutions such as Resident System Modules (RSMs) were backported to CP/M 2.2 to provide similar functionality.
Software installation
Although CP/M offered standardized interfaces for disk and console input/output, applications still needed installation procedures to support device-specific features like printers and terminals. These peripherals often employed proprietary escape sequences for specialized functions such as bold text printing. Installation utilities permitted users to choose their devices or manually modify escape sequences. Lacking centralized operating system services, this configuration had to be performed individually for each application.
For instance, printer initialization codes were embedded within software packages. Consequently, programs like WordStar required separate versions tailored for each printer model. Users had to launch the correct version matching their printer, which meant exiting and restarting the application when switching between devices.
Disk formats
The standard 8-inch floppy disk format for CP/M is derived from the IBM System/34 and IBM 3740’s 128-byte sector, single-density, single-sided layout. No universal 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own variations. Some formats gained wider acceptance; notably, most software was distributed in the Xerox 820 format compatible with systems like the Kaypro II. However, a 1981 InfoWorld report noted approximately two dozen prevalent formats that software publishers needed to accommodate to maximize market reach. For example, JRT Pascal was available on multiple 5.25-inch disks supporting North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain systems as well as an 8-inch version. Ellis Computing provided support for both Heath variants plus sixteen additional 5.25-inch formats including TRS-80 CP/M derivatives. Companies like Lifetree also adapted CP/M software for various platforms.
Disk format variations depended heavily on system architecture; CP/M included options to manage reserved areas, directory space, and logical-to-physical sector mappings. Although many parameters could be customized per machine, no standardized mechanism existed for automatically loading these settings from disks formatted on different hardware.
Nearly all CP/M systems equipped with 8-inch drives could read the IBM single-sided single-density format. Compatibility with other formats varied according to drive and controller hardware due to the wide range of floppy disk specifications during the CP/M era—including 8-inch and 5.25-inch disks with differences in sectoring (hard vs soft), density (single or double), sidedness, track counts (35 to 80), and sector arrangements. Translation utilities facilitated reading disks from other machines when formats were sufficiently similar; for example, the Kaypro II could access TRS-80, Osborne, IBM PC, and Epson disks. Nonetheless, certain formats such as 80-track or hard-sectored disks remained unreadable by many systems. Apple II users were constrained by Apple’s GCR format and required either Apple-formatted CP/M disks or serial transfers to obtain software.
The fragmented nature of CP/M’s disk formats forced distributors either to stock multiple versions or invest in multiformat duplication equipment—a stark contrast to the more uniform IBM PC disk standards—and this fragmentation hastened CP/M’s decline after 1981.
Among the last notable machines supporting CP/M was the Commodore 128 (1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. This system required a Commodore 1571 or 1581 drive capable of handling soft-sector 40-track MFM-encoded disks.
The Sony SMC-70 was the first computer equipped with a 3.5-inch floppy drive running 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 computers, and TRS-80 Model 4 (via Montezuma’s CP/M 2.2). Applied Engineering’s CP/AM for Apple II also supported both 3.5-inch floppy drives and RAM disks through compatible memory cards. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to 3.5-inch models.
File system
File naming conventions adhered to the 8.3 structure, allowing up to eight characters for the name, followed by a dot, then a three-character extension denoting the file type (for example, .COM for executable files and .TXT for text documents). When filenames were typed at the command line, they were automatically converted to uppercase, although this was not strictly enforced by the operating system. Certain applications, such as MBASIC, generated lowercase filenames, which complicated command-line file access.
Disk drives were designated by letters (e.g., A:, B:). To specify files on a particular drive, the drive letter and colon were prefixed to the filename (e.g., A:FILE.TXT); if omitted, the system defaulted to the current active drive.
File sizes were recorded in units called records, each consisting of 128 bytes corresponding to disk sectors. Precise byte-level sizing was not commonly supported. The operating system tracked file size information within the File Control Block (FCB). Text files typically concluded with a control-Z character (ASCII SUB, hex 1A) signaling end-of-file, which influenced how software processed textual data.
As disk capacities increased with larger removable and fixed media, disk de-blocking techniques raised the number of disk blocks per allocation unit. This enabled handling bigger files but also increased minimum allocation sizes—from 1 KB on single-density disks up to 32 KB on high-density drives—resulting in inefficient storage utilization when managing numerous small files.
Timestamps indicating file modification were not present in CP/M 2.2 but became optional features in MP/M and CP/M 3.0.
Unlike modern systems with subdirectories, CP/M 2.2 organized files using 16 numbered user areas. Users could switch between these areas via the "User X" command (where X ranged from 0 to 15). Although this provided minimal security, it allowed logical separation of files for different users or tasks on a single machine. Files stored in USER 0 were accessible across all users through explicit path referencing; other user areas isolated files to their respective users. This approach proved more practical on machines equipped with hard drives rather than small floppy disks and supported multitasking scenarios such as dividing data entry and billing functions.
Graphics
Despite the existence of graphics-capable S-100 systems since the early days of the S-100 bus, CP/M did not offer standardized graphics support until 1982 with the introduction of GSX. Due to limited memory availability on typical 8-bit CP/M machines, graphical capabilities were rare. Most systems could only produce rudimentary ASCII art representations or basic diagrams using text mode or custom character set implementations. Certain computers, like the Kaypro series and the TRS-80 Model 4, included video hardware enabling block graphics characters accessible through assembler or BASIC programming. Notably, the Model 4 could achieve graphics resolutions up to 640×240 pixels when equipped with an optional high-resolution board.
Official
Some organizations created official CP/M variants by building upon Digital Research’s source code—for instance, IMDOS designed for the IMSAI 8080, which was itself an Altair 8800 clone.
Compatible
A variety of independently developed operating systems compatible with CP/M emerged, including:
- Cromemco CDOS developed by Cromemco
- MSX-DOS, which maintained compatibility with CP/M and could run its software
- The Epson QX-10, supporting either CP/M or TPM-II/III environments
- The British-made SAM Coupé, compatible with ZX Spectrum software and offering an optional Pro-DOS that aligned with CP/M-2.2
- Amstrad/Schneider CPC 6xx and PCW product lines distributed with CP/M disk sets
- The Husky (computer) running DEMOS—a ROM-based loader facilitating many 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 CP/M 2.2-compatible system initially lacking Digital Research code; after receiving permission from Lineo’s president in 2022, developer David Given has been updating it with original DR components
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS including BIOS, BDOS, CLI source code along with original DR sources and utilities supporting dynamic OS component swapping
- IS-DOS designed for the Enterprise platform by Intelligent Software
- VT-DOS tailored for the Videoton TV Computer, also produced by Intelligent Software
Improvements
Certain CP/M-compatible operating systems expanded considerably on the original capabilities, with examples like TurboDOS supporting multiple processors.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 derivatives were developed under various designations, including SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, among others. Additionally, CP/M-86 versions such as SCP1700, CP/K, and K8918-OS were created. These operating systems were manufactured by companies based in East Germany, notably VEB Robotron.
Enduring Influence
Microsoft Windows inherited several elements from MS-DOS, which itself was designed to maintain compatibility with CP/M. These features include the drive letter scheme (assigning A and B to floppy drives and C to hard drives), the 8.3 filename format, wildcard characters (?, *), and reserved device identifiers like "PRN:" and "CON:". The use of the control character ^Z to signify end-of-file in text files also originates from CP/M. Key DOS commands such as DIR, REN/RENAME, and TYPE, along with file extensions like .TXT and .COM, have roots or influences tracing back to CP/M.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries and source code under an open source license, permitting redistribution and modification of Digital Research-related files through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead's passing in 2001, Lineo—then the rights holder—revised the licensing terms. To mark CP/M’s 40th anniversary in October 2014, the Computer History Museum published early CP/M source code.
As of 2018, enthusiasts within vintage computing circles and a handful of niche businesses continue to maintain and develop systems running CP/M, primarily version 2.2.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently developed OS based on CP/M
- Eagle Computer
- IMDOS
- List of machines running CP/M
- MP/M
- MP/NET and MP/NOS
- Multiuser DOS
- Pascal/MT+
- SpeedStart CP/M
- 86-DOS
- Kenbak-1
Further reading
- Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
- Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
- Z-System Corner: Tenth Anniversary of ZCPR, The Computer Journal, Issue 54
- The origin of CP/M's name
- 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 (covering IBM's selection of Microsoft DOS over Digital Research's CP/M)
- CP/M FAQ at comp.os.cpm and Digital Research archives
External links
- The Unofficial CP/M Web site – features source code
- Gaby Chaudry's Homepage for CP/M and Computer History – includes materials on ZCPR
- CP/M Main Page – John C. Elliott’s technical resource
- 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 - ↑ 7.0 7.1 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 - ↑ 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.
- ↑ 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 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-system-manual - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-86-system-guide - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-68k-system-guide - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM-8000-system-guide