CP/L
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M operating system |
CP/M, an acronym initially representing Control Program/Monitor and later reinterpreted as Control Program for Microcomputers, is a widely adopted operating system introduced in 1974 by Gary Kildall of Digital Research, Inc for microcomputers based on the Intel 8080 and Intel 8085 processors. Designed as a disk operating system, CP/M manages file organization on magnetic disks and facilitates program loading from these storage devices. While its early iterations supported single-tasking environments on 8-bit processors with a memory limit of 64 kilobytes, subsequent releases incorporated multi-user functionality and compatibility with 16-bit processor architectures.
The architecture of CP/M is composed of three primary modules: the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). BIOS is responsible for controlling hardware interfaces, BDOS provides file system management and application-level services, and CCP functions as the command-line interpreter offering built-in commands.
During its peak, CP/M emerged as the de facto standard operating system for microcomputers, particularly dominating the S-100 bus systems prevalent in commercial settings from the late 1970s through mid-1980s. By enabling easier software portability across different hardware vendors, CP/M significantly broadened both hardware and software markets. The accessibility of affordable CP/M-compatible microcomputers spurred innovation within software development communities and independent programmers. However, its market leadership diminished following the 1981 introduction of the IBM PC, which propelled the widespread adoption of DOS.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates paired with a custom controller. The system was programmed using Kildall’s own language, PL/M (Programming Language for Microcomputers). CP/M’s design drew inspiration from the TOPS-10 operating system running on the DECsystem-10 mainframe, which Kildall had experience with.
CP/M was compatible with various machines powered by the 8080 and Z80 processors. One of its earliest licensees was Gnat Computers, which acquired rights to use CP/M version 1.0 for $90 in 1977. The rapid increase in demand allowed Digital Research to elevate licensing fees into the tens of thousands of dollars.
Development of CP/M 2.0 was overseen by John Pierce in 1978 under Kildall’s leadership. Kathryn Strutynski joined Digital Research in 1979, initially focusing on debugging CP/M 2.0 before contributing significantly to later versions such as CP/M 2.2 and CP/M Plus. Other notable early developers included Robert Silberstein and David K. Brown.
Originally meaning "Control Program/Monitor," the term CP/M was rebranded as "Control Program for Microcomputers" during its commercial rollout in 1977. This change aligned with naming trends exemplified by Kildall’s PL/M and IBM’s CP/CMS, emphasizing its microcomputer orientation. The renaming was part of a strategic initiative by Kildall, his wife, and business partner Dorothy McEwen to position Digital Research as a premier software company in the microcomputer market—aiming to rival companies such as IBM and Microsoft. Concurrently, the firm’s name changed from Intergalactic Digital Research, Inc. to Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with sublicensing arrangements indicating an even broader reach. A variety of manufacturers developed CP/M-based computers targeting different sectors; InfoWorld highlighted CP/M as becoming the definitive operating system for small computers. Even companies that maintained proprietary operating systems, such as Heath/Zenith with HDOS, offered CP/M compatibility on their 8080/Z80 machines—contrasting with the 6502 CPU market, where no similar standard was established.[1] This widespread adoption was largely due to CP/M’s vast software ecosystem. For instance, the Xerox 820 utilized CP/M to access thousands of existing applications.[2] To compensate for Digital Research’s inadequate documentation, Xerox supplied a Howard W. Sams CP/M manual; however, InfoWorld described the official guides as incomplete and challenging to navigate.[3][4]
By 1984, Columbia University had adapted the original source code to produce Kermit binaries compatible with over a dozen CP/M variants as well as two generic editions.[5] CP/M was characterized as a "software bus",[6][7] facilitating interaction between diverse software and hardware through a uniform interface.[8] Applications were generally portable across different machines, requiring only adjustments to terminal and printer control sequences. This portability contributed significantly to CP/M’s widespread acceptance and extensive software development compared to operating systems confined to specific hardware brands. Limitations included programs that employed Z80-exclusive instructions incompatible with 8080/8085 CPUs and graphics routines tailored directly to hardware rather than relying on OS services for enhanced performance.[9]
Bill Gates identified the Apple II equipped with a Z-80 SoftCard as the leading CP/M hardware platform.[10] By 1982, Digital Research claimed that CP/M was licensed for use on more than 450 types of computers.[11] Prominent systems running CP/M encompassed the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable models, and MSX machines. The most commercially successful CP/M-compatible computer was likely the Amstrad PCW. Within the United Kingdom, CP/M was available on educational machines from Research Machines (with source code released for instructional purposes), the BBC Micro equipped with a Z80 co-processor, as well as the Amstrad CPC, Commodore 128, TRS-80, and later models of the ZX Spectrum. Additionally, CP/M 3 powered the NIAT handheld device developed for internal use by A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Capability
Digital Research introduced MP/M in 1979, a multi-user extension of CP/M that enabled several terminals to connect simultaneously to a single computer system, granting each user an independent display and keyboard interface. Subsequent iterations of MP/M expanded support to include 16-bit processors.
CP/M Plus
Released in 1983, CP/M Plus (also known as CP/M 3) was the last iteration of the 8-bit CP/M series, featuring a BDOS developed by David K. Brown. This version incorporated MP/M's bank switching memory management into a single-user operating system that maintained compatibility with CP/M 2.2 applications, allowing utilization of memory beyond 64 KB on 8080 or Z80 processors. Notable enhancements included file date stamping and integrated utilities such as a relocating assembler and linker. CP/M Plus found adoption in later 8-bit machines like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.
16-bit versions
Digital Research created CP/M variants tailored for 16-bit processors, starting with CP/M-86 designed for the Intel 8086, which debuted in November 1981 under the leadership of Kathryn Strutynski. The original 8-bit CP/M was subsequently identified as CP/M-80.
Although CP/M-86 was anticipated to serve as the IBM PC’s primary operating system, disagreements over licensing led IBM to collaborate with Microsoft, resulting in PC DOS based on 86-DOS. Despite legal pressures that made CP/M-86 available as an option for the IBM PC, it failed to gain traction due to its substantially higher cost ($240 compared to $40 for PC DOS).
The DEC Rainbow 100 targeted IBM’s user base by offering multiple operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or a hybrid CP/M-86/80 configuration utilizing both processors simultaneously. This approach allowed users to preserve their existing 8-bit software investments while transitioning to a 16-bit environment. Similarly, CompuPro’s System 816 incorporated a dual-processor variant named CP/M 8-16, and the Zenith Z-100 also supported dual CPU functionality for its CP/M-86 implementation.
Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 processor. Initially developed using Pascal/MT+68k and later ported to C, it operated on Motorola EXORmacs systems and was considered for Atari ST machines before Atari selected GEMDOS instead. Additionally, CP/M-68K was deployed on SORD M68 and M68MX models.
That same year saw a port of CP/M from the 68K architecture to Zilog’s Z8000 processor for the Olivetti M20 system under the name CP/M-8000, which was written in C.
These 16-bit editions necessitated recompilation of existing applications. To facilitate this transition, Digital Research created XLT86—a utility that converted Intel 8080 assembly source code into optimized Intel 8086 assembly code following appropriate size and calling conventions—thereby simplifying the porting process of CP/M-80 and MP/M-80 software to their respective 16-bit variants. XLT86 was distributed for both CP/M-80 and VAX/VMS environments.
Displacement by MS-DOS
By the early 1980s, approximately two thousand applications were available for CP/M, positioning it as a likely standard operating system for emerging 16-bit computers. In 1980, IBM approached Digital Research about licensing a new version of CP/M tailored for the IBM PC; however, 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 concepts from CP/M such as file management structures and disk drive letter assignments. Its primary advancement was the FAT file system, which facilitated easier adaptation of popular CP/M programs like WordStar and dBase. Additionally, MS-DOS capitalized on the IBM PC’s typically larger memory capacity (64 KB or more), enabling more built-in commands within its command-line interface that enhanced performance and usability on floppy disk-based systems.
Although early hardware expansions like the Baby Blue card allowed running CP/M software on IBM PCs, industry assessments favored MS-DOS due to its superior speed and user experience. By the mid-1980s, CP/M’s presence in the home computing sector diminished owing to high software prices and reduced hardware support. Manufacturers such as Kaypro discontinued their 8-bit CP/M models in favor of systems compatible with MS-DOS. As the microcomputer market increasingly adopted IBM-compatible platforms, CP/M rapidly lost market share and media attention declined sharply.
Subsequent releases of CP/M-86 improved both performance and compatibility with MS-DOS under the brand 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). This project was developed by a group of enthusiasts called "The CCP Group," consisting of Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, and led by Richard Conn.
The initial version, ZCPR1, was distributed on a disk through SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. Following this, ZCPR2 was issued on 14 February 1983 as a collection of ten disks from SIG/M. It later evolved into version 2.3 and was adapted to 8080 code to enhance compatibility across different hardware platforms.
Richard Conn and Frank Gaude established Echelon Inc. to commercialize ZCPR while maintaining its free availability. On 14 July 1984, ZCPR3 was introduced via nine disks from SIG/M, including a compiled variant for non-Z80 processors. Version 3 incorporated features such as command shells, aliasing, input/output redirection, flow control structures, named directory support, search path functionality, customizable menus, password protection, and interactive help. Development shifted to Jay Sage in January 1987 when he released ZCPR 3.3 with expanded capabilities and utilities but discontinued support for the 8080 processor family. Despite widespread adoption within the CP/M community, ZCPR was unable to halt the overall decline of the CP/M operating system.
Hardware model
A basic CP/M system running on an 8-bit architecture required these components:
- A terminal capable of displaying ASCII characters
- A microprocessor such as the Intel 8080/8085 or the Zilog Z80
- NEC’s V20 and V30 processors could emulate the 8080 instruction set to operate CP/M on PC-DOS/MS-DOS machines; PC compatibles could also run CP/M-86
- A minimum of 16 KB RAM beginning at memory address zero
- A bootstrapping mechanism to load the initial disk sector
- At least one floppy disk drive
Digital Research officially supported only the Intel 8080 Development System; other hardware vendors adapted CP/M to suit their own configurations. CP/M was commonly deployed on Z80-based machines due to their backward compatibility with 8080 instructions. While CP/M’s core components avoided utilizing Z80-specific instructions to maintain portability, many BIOS implementations and application programs took advantage of them.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-resident variant aimed at affordable systems lacking disk drives. This version first appeared in Sharp’s MZ-800 cassette-based computer with optional disk support and leveraged enhanced Z80 instructions rather than strict cross-platform compatibility. American Microsystems created the S83 microprocessor that integrated ROM containing the OS and BIOS alongside logic for dynamic RAM interfacing; bulk pricing for this chip was approximately $32 each.
Most systems implemented a small ROM bootloader combined with either bank switching or bus injection techniques to load executable code at address zero—necessary because while the 8080 requires boot code at this location, CP/M expects it in RAM. Some machines required manual entry of bootstrap code via front-panel switches.
CP/M utilized the standard 7-bit ASCII character set; however, extended 8-bit characters were not standardized and varied depending on manufacturer or software. For example, Kaypro employed these extra bits for Greek letters; Osborne systems used them to indicate underlining; WordStar marked word boundaries using them. International editions often replaced certain ASCII characters with localized symbols based on ISO 646 instead of extending beyond seven bits.
Components
When CP/M is active in memory, it consists of three main parts:
- the Basic Input/Output System (BIOS),
- the Basic Disk Operating System (BDOS),
- and the Console Command Processor (CCP).
Both the BIOS and BDOS remain resident in memory, whereas the CCP stays loaded until replaced by an application; if overwritten, it automatically reloads afterward. Standard utility commands that are transient reside on disk as files with a .COM extension.
The BIOS manages hardware interfaces excluding the CPU and main memory, handling tasks such as character input/output and disk sector operations. The BDOS is responsible for implementing the CP/M file system along with input/output abstractions like redirection. The CCP interprets user commands, executing built-in commands (for example, DIR or ERA) or loading executable transient programs such as PIP.COM or STAT.COM. Third-party software functions as transient commands under this system.
Across various CP/M versions, the BDOS, CCP, and standard transient utilities remain largely unchanged; however, the BIOS is tailored to specific hardware configurations.
Expanding system memory necessitates reinstalling CP/M so that transient programs can utilize the additional capacity. This is accomplished using a utility called MOVCPM, which relocates object code to new memory locations by adjusting jump and call instruction addresses accordingly. The modified operating system image can then be saved onto a new disk, allowing applications to access the expanded memory. The OS components reside in reserved disk sectors to support booting; a ROM-based bootloader loads the system from drive A: during startup.
By modern standards, CP/M is limited due to restrictions on program size. Early iterations did not detect disk changes automatically, which risked data corruption if disks were swapped without refreshing directory information. Later releases introduced error signaling to prevent overwriting but still required rebooting after media changes.
The majority of CP/M’s complexity lies within the BDOS, with less found in the CCP and transient utilities. Porting minimal BIOS routines to new hardware enabled the entire OS to operate on different machines with minimal effort, greatly shortening development time and contributing to CP/M’s widespread popularity. This approach to hardware abstraction was pioneering at a time when most operating systems targeted single hardware platforms without layered modularity.
Console Command Processor
The Console Command Processor (CCP) manages keyboard input and terminal output within CP/M. It supports printing or video terminals and displays the A> prompt by default to indicate the active disk drive. Users can switch drives by entering the drive letter followed by a colon (for example, B:), which updates the prompt accordingly.
CP/M’s command-line interface was inspired by Digital Equipment Corporation systems such as RT-11 and OS/8. Commands consist of keywords followed by parameters separated by spaces or special characters. Internal commands are executed directly by the CCP; if a command is not internal, it loads an executable transient program from the current disk and user area, passing along any parameters provided. Upon completion, BDOS reloads the CCP if necessary to free memory for transient applications.
Some command names reflect their DEC heritage—for instance, PIP stands for Peripheral Interchange Program and handles file copying. Parameter syntax varies widely since there was no standardized format for options across different programs.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (version 3), built-in commands were expanded to include DIRSYS / DIRS for managing system files, ERASE / ERA, RENAME / REN, TYPE / TYP, and USER / USE with support for abbreviated forms. Additional transient commands introduced included COPYSYS, DATE, DEVICE, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PUT, RMAC, SETDEF, SHOW, SID, XREF among others.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees fundamental tasks such as file management, console output, and printing functions. Applications interact with BDOS by placing function identifiers and parameters into CPU registers and then invoking a designated fixed memory address, which guarantees uniform functionality across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers the essential low-level operations needed by the operating system, including character input/output and disk sector reading and writing. Although BDOS performs some buffering for disk operations, BIOS contains hardware-specific routines that accommodate differences in sector sizes and device variations.
Given the wide range of hardware architectures—from built-in video controllers to diverse serial port layouts and memory-mapped I/O—customization is crucial. BIOS standardizes these hardware discrepancies by offering uniform entry points for services like character I/O and disk access. Since BIOS often lacks or limits modem support, CP/M applications frequently incorporate user-supplied overlays to enable serial port communication tailored to individual machines.
Applications
CP/M served as the foundation for several early essential business applications, including WordStar, one of the first widely adopted word processors, and dBase, a leading microcomputer database system. Other significant software includes pioneering outliners such as KAMAS and Out-Think, alongside development tools like Turbo Pascal (the forerunner of Borland Delphi) and Multiplan (the predecessor to Microsoft Excel). The groundbreaking spreadsheet programs VisiCalc and the dominant market player SuperCalc also originated on CP/M. Furthermore, Autodesk’s CAD software AutoCAD was initially released on this platform.
CP/M supported a wide variety of compilers and interpreters for programming languages including BASIC, Turbo Pascal, FORTRAN, and PL/I, featuring early Microsoft offerings as well.
Software distribution often involved installers that adapted programs to different hardware formats; for instance, Kaypro II users converted Xerox 820 disks to their native format. Source code for BASIC was generally available, and most copy protection mechanisms proved ineffective because CP/M’s standardized disk formats promoted compatibility across software titles.
The absence of standardized graphics limited video game development; nevertheless, text-based games such as Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction like the Zork series and Colossal Cave Adventure, were successfully ported to CP/M. Infocom consistently released its games in CP/M format. Lifeboat Associates distributed user-created utilities including XMODEM, which facilitated dependable file transfers over modems. The outline processor KAMAS also originated within the CP/M environment.
Transient Program Area
In the original CP/M versions designed for the 8080, 8085, and Z80 processors, the read/write memory region spanning from address 0100H up to just before BDOS’s starting point at 0006H was designated as the Transient Program Area (TPA), allocated for application program use. Although these CPUs could address up to 64 KB of memory, the effective size of the TPA depended on system architecture because 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 introduced enhancements allowing segments of BDOS itself to be placed within bank-switched memory regions.
Application Debugging
CP/M featured a Dynamic Debugging Tool (DDT) that allowed users to inspect and modify memory and program components, as well as execute code incrementally. This capability greatly aided in both software creation and debugging processes.
Resident Utilities
At the outset, CP/M did not inherently support terminate-and-stay-resident (TSR) programs similar to those found in DOS. Nevertheless, developers devised utilities capable of intercepting operating system calls to enhance functionality, resulting in add-on desk accessories like SmartKey, a keyboard utility. With the arrival of CP/M 3, the system introduced dynamically loadable Resident System Extensions (RSX), which enabled more versatile resident programs. Additionally, third-party solutions such as Resident System Modules (RSMs) were retrofitted onto CP/M 2.2 platforms to provide comparable capabilities.
Installing Software
Although CP/M abstracted hardware for disk and console input/output, applications generally needed installation routines to support device-specific features like printers and terminals. Because these peripherals often relied on proprietary escape sequences for functions such as bold text rendering, users had to run installation programs tailored to each device. This setup process was repeated for every application since the operating system lacked a centralized service managing peripheral configurations.
Printer initialization codes were embedded directly within software packages. For instance, WordStar required distinct versions customized for different printers—such as a high-speed dot-matrix or a daisy wheel printer—necessitating reloading the appropriate variant when switching between devices.
Disk Formats
CP/M’s standard 8-inch floppy disk format is based on the IBM System/34 and IBM 3740’s single-sided, single-density layout with 128-byte sectors. However, no universal 5.25-inch disk format existed for CP/M; manufacturers like Kaypro, Morrow Designs, Osborne, and others each adopted proprietary schemes. Certain formats gained wider acceptance; most commercial software was distributed in the Xerox 820 format compatible with systems such as the Kaypro II. Still, a 1981 InfoWorld report identified approximately two dozen prevalent formats that software developers needed to consider. For example, JRT Pascal released multiple 5.25-inch versions for platforms including North Star, Osborne, Apple, Heath/Zenith (both hard- and soft-sector), and Superbrain, alongside an 8-inch edition. Ellis Computing supported both Heath formats plus sixteen additional 5.25-inch variants including TRS-80 CP/M adaptations. Lifetree and others also ported CP/M applications across different hardware.
CP/M allows customization of reserved disk areas and directory layouts as well as logical-to-physical sector mappings, facilitating adaptation across various systems. However, there is no standardized mechanism for loading configuration parameters from disks formatted on alternative platforms.
While nearly all CP/M machines equipped with 8-inch drives can read IBM’s single-sided, single-density format, compatibility with other disk layouts depends heavily on the specific drive and controller hardware due to wide variations in floppy disk characteristics across both 8-inch and 5.25-inch media. Disks differ by sectoring method (hard or soft), density (single or double), number of sides (single or double), track count (ranging from 35 to 80), and sector organization. Translation utilities can enable reading of related formats; for instance, the Kaypro II supports disks from TRS-80, Osborne 1, IBM PC, and Epson QX-10 systems. Certain disk types—such as those with 80 tracks or hard-sectoring—are incompatible with many CP/M drives. Double-sided disks like those used by Epson QX-10 can be partially accessed since CP/M reads tracks sequentially. Apple II users are limited to Apple’s GCR format and must acquire CP/M software on Apple-formatted disks or transfer files via serial connections.
The fragmented landscape of CP/M disk formats compelled software distributors to maintain inventories of multiple disk types or invest in multiformat duplication equipment. This complexity contrasted sharply with the more unified IBM PC disk standards and contributed significantly to CP/M’s swift decline after 1981.
One of the last prominent CP/M-compatible computers was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. This system required either a Commodore 1571 or 1581 floppy drive capable of reading soft-sector 40-track Modified Frequency Modulation (MFM) disks.
The Sony SMC-70 was the first computer equipped with a 3.5-inch floppy drive running CP/M version 2.2. Other systems supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX computers, and TRS-80 Model 4 via Montezuma CP/M 2.2. Applied Engineering’s CP/AM for Apple II also accommodated both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to 3.5-inch ones.
File system
File names conformed to the 8.3 convention: a maximum of eight characters, followed by a dot, then a three-character suffix indicating the file type (for example, .COM for executable files and .TXT for plain ASCII text). When entered at the command prompt, filenames were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase names, which complicated command-line file access.
Disk drives were designated by letters (such as A: and B:), with files referenced by prefixing the drive letter and colon (e.g., A:FILE.TXT). If no drive letter was specified, commands operated on the current drive by default.
File size was recorded in units of 128-byte records, corresponding to disk sectors on 8-inch floppy drives. Precise byte counts were generally not supported. The file's size information was maintained within its File Control Block (FCB). Text files typically ended with a control-Z character (ASCII SUB, hexadecimal 1A) to signify end-of-file, influencing how file editing and truncation were handled.
With the introduction of larger removable and fixed disks, disk de-blocking algorithms increased the number of disk blocks per allocation unit. This enabled storage of bigger files but also raised the minimum allocation size from 1 KB on single-density disks up to 32 KB on larger drives, resulting in inefficient space utilization when dealing with many small files.
CP/M 2.2 did not support file modification timestamps, although these were optionally available in MP/M and CP/M 3.0.
Instead of subdirectories, CP/M 2.2 provided 16 numbered user areas to help organize files. Users could switch between these areas using "User X" commands; user area 0 was the default and accessible to all users. Files stored in other user areas were isolated from one another, offering a rudimentary form of file grouping rather than security—primarily useful on systems with hard drives to separate tasks like data entry from billing without mixing files.
Graphics
While some S-100 systems with graphical capabilities existed early on, CP/M itself lacked any standardized graphics interface until the release of GSX in 1982. The limited memory of 8-bit CP/M machines confined graphics mostly to simple ASCII art or custom character sets. Certain models such as the Kaypro and the TRS-80 Model 4 provided block graphics that could be accessed via assembler or through BASIC’s CHR$ function. The TRS-80 Model 4 was capable of displaying graphics at 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Some vendors created official CP/M enhancements based on Digital Research’s source code, including IMDOS for the IMSAI 8080, which was a clone of the Altair 8800.
Compatible
Various independently developed operating systems compatible with CP/M were produced without using Digital Research code. Examples include:
- Cromemco CDOS developed by Cromemco
- MSX-DOS, designed for MSX computers and compatible with CP/M applications
- The Epson QX-10, offering options for CP/M or TPM-II/III
- British SAM Coupé, which had an optional Pro-DOS operating system compatible with CP/M-2.2
- Amstrad/Schneider CPC 6xx and PCW series systems bundled with CP/M disk sets
- The Husky (computer), running DEMOS—a ROM-based loader supporting many CP/M programs
- ZSDOS, a BDOS replacement for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free and open-source CP/M 2.2-compatible OS originally developed without Digital Research code; updated in 2022 to include original DR components following permission from Lineo president Bryan Sparks
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible system featuring source code and utilities that support hot-swapping OS modules; it incorporates original Digital Research source code
- IS-DOS for the Enterprise, developed by Intelligent Software
- VT-DOS for the Videoton TV Computer, also created by Intelligent Software
Improvements
Certain CP/M-compatible operating systems introduced substantial enhancements, including TurboDOS, which supported multi-processor configurations.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 derivatives were developed under various designations such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM, DAC, HC among others. Additionally, CP/M-86 versions like SCP1700, CP/K, and K8918-OS were produced. These operating systems were primarily manufactured by entities such as the East German VEB Robotron.
Enduring Influence
Several elements within Microsoft Windows have origins linked to compatibility with MS-DOS and ultimately trace back to CP/M. The assignment of drive letters and the 8.3 filename format originated in CP/M. Wildcard symbols (?, *) used in Windows also derive from CP/M conventions, as do reserved device names such as "PRN:" and "CON:" employed for output redirection. In CP/M, floppy drives were labeled A and B; this practice extended with hard drives receiving the letter C:, a standard that continues in MS-DOS. The control character ^Z serving as an end-of-file marker in text files is another legacy from CP/M. Many DOS commands including DIR, REN/RENAME, and TYPE reflect their CP/M predecessors. Common file extensions like .TXT and .COM remain widely used across various operating systems.
Between 1997 and 1998, Caldera made available several CP/M 2.2 executables and source code under an open source license. This facilitated redistribution and modification of Digital Research’s CP/M and MP/M related files through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—holder of these assets—revised the license to broaden distribution permissions. To celebrate its 40th anniversary in October 2014, the Computer History Museum published early versions of CP/M source code.
As of 2018, enthusiasts of vintage computing along with small enterprises continue to develop and maintain systems predominantly running CP/M 2.2.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an operating system independently derived from CP/M
- Eagle Computer
- IMDOS
- List of machines running CP/M
- MP/M
- MP/NET and MP/NOS
- Multiuser DOS
- Pascal/MT+
- SpeedStart CP/M
- 86-DOS
- Kenbak-1
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 (archived)
- Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013 (archived)
- Computer History Museum, IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, 2014
- PBS, Triumph of the Nerds – details IBM's choice of Microsoft DOS over Digital Research's CP/M for the IBM PC
- CP/M FAQ at comp.os.cpm and Digital Research resources
External links
- The Unofficial CP/M Website – contains source code archives
- Gaby Chaudry's CP/M and Computer History Homepage – offers resources related to ZCPR
- CP/M Central Page – a technical reference by John C. Elliott
- MaxFrame's archived Digital Research CP/M site
- ↑ 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 namedcitation needed - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedbunnell19820203 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedlibes198206