CP/M-68K
| Company type | Private |
|---|---|
| Industry | Software development |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M operating system, PL/M compiler |
| Owner | Gary Kildall, Dorothy McEwen (co-founder and business partner) |
CP/M, initially an acronym for Control Program/Monitor and subsequently known 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 Intel 8085 microprocessor-based microcomputers. Designed as a disk operating system, CP/M manages file organization on magnetic disks and facilitates program loading from these storage devices. While early iterations supported single-tasking on 8-bit processors with memory capacities up to 64 kilobytes, later releases incorporated multi-user functionality and compatibility with 16-bit processor architectures.
The fundamental elements of CP/M consist of the Basic Input/Output System (BIOS), responsible for hardware driver management; the Basic Disk Operating System (BDOS), which oversees the file system and core system services; and the Console Command Processor (CCP), a command-line interface featuring built-in commands.
CP/M emerged as the de facto standard operating system dominating microcomputers, particularly those utilizing the S-100 bus, and gained widespread adoption in commercial environments throughout the late 1970s into the mid-1980s. Its design facilitated hardware and software interoperability by easing application portability across diverse manufacturers' platforms. The ecosystem encouraged software innovation, attracting independent developers who contributed to user groups by sharing their programs. Eventually, CP/M was overtaken by DOS following the introduction of the IBM PC in 1981.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates connected through a custom-designed controller.[1] The system was programmed using Kildall's proprietary language, PL/M.[2] CP/M’s architecture drew inspiration from the TOPS-10 operating system used on the DECsystem-10, which Kildall had experience with.[3]
The operating system supported multiple computers powered by the 8080 and later the Z80 CPUs. Among its initial licensees was Gnat Computers, which secured rights to deploy CP/M 1.0 on any microcomputer in 1977 for a fee of $90. The escalating demand enabled Digital Research to raise licensing costs to several tens of thousands of dollars within a year.[4]
Under Kildall’s guidance, CP/M version 2.0 was primarily developed by John Pierce in 1978. After joining Digital Research in early 1979, Kathryn Strutynski began her work by debugging CP/M 2.0 and subsequently played a pivotal role in developing CP/M 2.2 and CP/M Plus. Other early contributors included Robert "Bob" Silberstein and David "Dave" K. Brown.[5]
Originally denoted as "Control Program/Monitor",[6] the operating system was trademarked in 1977 as "Control Program for Microcomputers".[7] This renaming aligned with naming trends of that era, similar to Kildall’s own PL/M language and IBM’s CP/CMS systems, emphasizing its focus on microcomputers.
This rebranding initiative formed part of Kildall’s broader commercial strategy, developed together with his wife and business partner Dorothy McEwen,[8] aiming to market CP/M alongside the PL/M compiler under the Digital Research label. Their objective was to establish Digital Research as synonymous with "microcomputer," paralleling how IBM and Microsoft later became associated with "personal computer." The company Intergalactic Digital Research, Inc. was eventually renamed Digital Research, Inc.[8]
Early Achievements
By September 1981, Digital Research had distributed over CP/M licenses, with sublicensing activities indicating an even broader reach. A variety of manufacturers developed CP/M-based computers aimed at different sectors; InfoWorld observed that CP/M was emerging as the definitive operating system for small computers. Even companies that had their own proprietary operating systems, such as Heath/Zenith with HDOS, offered CP/M as an alternative on their 8080/Z80 machines—unlike the widely used 6502 CPU platform, which lacked a similar universal standard.[9] The extensive software catalog was a key driver for this widespread adoption. For example, the Xerox 820 incorporated CP/M to take advantage of its large software library,[10] although Digital Research faced criticism for inadequate documentation,[11][12] leading Xerox to provide a Howard W. Sams manual for CP/M.
By 1984, Columbia University had utilized CP/M source code to compile Kermit binaries compatible with more than a dozen CP/M variants, alongside generic versions.[13] CP/M was characterized as a "software bus",[14][15] facilitating interaction among multiple applications and various hardware through standardized interfaces.[16] Software typically transferred easily between machines, mainly requiring adjustments to terminal and printer control codes. This adaptability contributed significantly to CP/M’s widespread use and rich software ecosystem compared to operating systems tied to single manufacturers. However, some limitations existed: certain programs employed Z80-specific instructions not compatible with 8080/8085 CPUs, and others depended on machine-specific graphics routines that accessed hardware directly for improved performance.[9]
Bill Gates identified the Apple II equipped with a Z-80 SoftCard as the leading hardware platform running CP/M.[17] By 1982, Digital Research announced that CP/M had been licensed for over 450 distinct computer models.[18] Prominent CP/M systems included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The most commercially successful CP/M-capable system was probably the Amstrad PCW. Within the United Kingdom, CP/M was supported on educational computers from Research Machines, the BBC Micro outfitted with a Z80 co-processor, along with the Amstrad CPC, Commodore 128, TRS-80, and later iterations of the ZX Spectrum. The NIAT handheld computer developed for internal use by A. C. Nielsen ran CP/M 3 and featured 1 MB of solid-state disk memory.
Multi-user Versions
In 1979, Digital Research introduced MP/M, a multi-user variant of CP/M designed to allow several terminals to connect simultaneously to one computer system, granting each user independent access. Subsequent releases 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 designed 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 software, allowing access to memory beyond the 64 KB limit on 8080 or Z80 processors. Among its enhancements were file date stamping and an integrated suite of development utilities, including a relocating assembler and linker. CP/M Plus was primarily aimed at advanced 8-bit systems such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.
16-bit versions
Digital Research extended CP/M support to 16-bit processors beginning with CP/M-86 for the Intel 8086, launched in November 1981 under the leadership of project manager Kathryn Strutynski. The original 8-bit CP/M was subsequently renamed CP/M-80.
Although CP/M-86 was initially anticipated to become the IBM PC’s default operating system, licensing disagreements resulted in IBM selecting Microsoft’s PC DOS, which was derived from 86-DOS. Despite remaining available, CP/M-86 struggled to gain traction due to its significantly higher price point ($240 compared to $40 for PC DOS).
The Digital Equipment Corporation Rainbow 100 provided multiple OS choices: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 processor, or a dual-processor configuration supporting both CP/M-86 and CP/M-80. This design enabled users to retain their existing 8-bit software investments while transitioning to newer 16-bit platforms. Comparable dual-processor arrangements were also implemented in systems like the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.
Following CP/M-86, Digital Research developed CP/M-68K for the Motorola 68000 processor in 1982. Initially written in Pascal and later ported to C, this version was intended for the Atari ST; however, Atari ultimately opted for GEMDOS. Nevertheless, CP/M-68K found applications in machines such as EXORmacs and SORD M68 series computers.
In the same year, a C-language port called CP/M-8000 was created for the Zilog Z8000 CPU utilized by the Olivetti M20.
These 16-bit versions required applications to be recompiled. To facilitate this transition, Digital Research provided XLT86—a utility that converted Intel 8080 assembly code into optimized Intel 8086 assembly—simplifying migration of CP/M-80 and MP/M-80 software to their newer counterparts. XLT86 was distributed on both CP/M-80 and VAX/VMS platforms.
Displacement by MS-DOS
By the early 1980s, roughly 2,000 applications were available for CP/M, which was widely expected to become the standard operating system for 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license CP/M for use on the IBM Personal Computer. However, negotiations collapsed over disagreements related to a non-disclosure agreement, prompting IBM to turn to Microsoft for an operating system instead.
MS-DOS shared several foundational elements with CP/M, including file management structures and drive letter conventions (such as A: and B:). Its principal advancement was the adoption of the FAT file system, which eased porting of popular CP/M programs like WordStar and dBase. Additionally, MS-DOS supported larger memory capacities (commonly starting at 64 KB), enabling more extensive built-in command-line capabilities and enhanced performance on floppy disk-based systems.
Early IBM PC hardware included peripherals like the Baby Blue card that allowed execution of 8-bit CP/M programs on PCs. Nevertheless, industry reviews such as BYTE magazine in 1982 described MS-DOS as "more user-friendly" and faster. By 1984, InfoWorld reported that high software prices hindered CP/M’s success in the home computer market. By the mid-1980s, companies like Kaypro discontinued manufacturing CP/M-based hardware in favor of MS-DOS systems. As IBM-compatible machines dominated the market, CP/M rapidly lost relevance and disappeared from major industry publications by the late 1980s.
Later iterations of CP/M-86 enhanced both speed and compatibility with MS-DOS, rebranding as DOS Plus before eventually evolving into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the console command processor (CCP) developed by Digital Research. This project was created by a collective of enthusiasts called "The CCP Group," with Richard Conn serving as the lead.
The first iteration, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey. Following this, ZCPR2 was introduced on 14 February 1983, initially available as ten disks through SIG/M and later upgraded to version 2.3. This update included a variant written in 8080 code to enhance compatibility across different hardware platforms.
Richard Conn and Frank Gaude established Echelon Inc. to commercially distribute ZCPR while maintaining its availability as free software. On 14 July 1984, ZCPR3 was released in the form of nine SIG/M disks, incorporating advanced capabilities such as shell environments, command aliases, input/output redirection, flow control mechanisms, named directory support, search paths, customizable menus, password protection, and online help features. Additionally, a simplified version compatible with the 8080 processor was offered.
In January 1987, Jay Sage took over development duties, producing ZCPR 3.3. This edition discontinued support for the 8080 but introduced numerous new features and utilities, marking the most substantial advancement in the series. Despite enthusiastic adoption among CP/M users, ZCPR was ultimately unable to prevent the platform's gradual decline.
Hardware model
A basic 8-bit CP/M system typically comprised:
- A computer terminal using ASCII character encoding
- A microprocessor such as the Intel 8080 or its successors—the 8085 or Zilog Z80
- NEC’s V20 and V30 processors provided 8080 emulation capabilities, allowing CP/M to operate on PC-DOS/MS-DOS hardware; consequently, any PC-compatible clone could run CP/M-86
- A minimum of 16 KB RAM starting at memory address zero
- Bootstrapping functionality to load from the initial disk sector
- At least one floppy disk drive
While Digital Research officially endorsed only the Intel 8080 Development System, numerous manufacturers adapted CP/M for their specific hardware designs. The Z80’s backward compatibility with the 8080 instruction set enabled it to execute CP/M efficiently, often supplemented by BIOS code tailored to exploit unique Z80 instructions.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system designed for cost-effective systems lacking disk drives. This OS first appeared in the Sharp MZ-800 cassette-based computer and optionally supported disk drives. Personal CP/M was optimized for the enhanced instruction set of the Z80 rather than aiming for full portability.
American Microsystems released the S83 microprocessor compatible with the Z80 architecture; it integrated an 8 KB ROM containing both operating system and BIOS code along with logic circuitry for dynamic RAM interfacing. The unit cost was approximately $32 when purchased in lots of 1,000.
Most CP/M systems booted using a minimal ROM-based loader combined with bank switching or bus injection techniques to load CP/M at address zero. Some machines required manual entry of bootstrap code via front-panel switches.
CP/M employed a 7-bit ASCII character set standard; however, extended characters differed among manufacturers. For example, Kaypro utilized extended codes for Greek letters; Osborne machines used the eighth bit to signify underlining; WordStar interpreted it as an end-of-word marker. International editions commonly implemented ISO 646 standards by substituting specific ASCII characters rather than extending beyond seven bits.
Components
When CP/M is operational in memory, it consists of three primary elements:
- 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 continuously, whereas the CCP stays resident unless replaced by an application, after which it automatically reloads. Standard utility commands classified as transient reside in files bearing the .COM extension.
The BIOS manages hardware devices apart from the CPU and main memory, overseeing tasks such as character input/output and disk sector manipulation. The BDOS builds on the BIOS by implementing the CP/M file system alongside input/output abstractions like redirection. The CCP interprets user commands, executing internal commands (such as DIR or ERA) or loading transient command files (for example, PIP.COM or STAT.COM). Third-party programs function as transient commands within this framework.
While BDOS, CCP, and standard transient utilities remain uniform across different CP/M versions, the BIOS is customized to accommodate specific hardware configurations.
To utilize expanded memory, CP/M must be reinstalled to access the additional space. The MOVCPM tool facilitates relocating object code into new memory regions by modifying jump and call addresses, allowing applications to leverage the increased memory. Operating system components reside in reserved disk sectors for boot purposes, with a bootloader—often stored in ROM—loading the OS from drive A:.
By contemporary measures, CP/M is rudimentary due to stringent program size constraints. Early releases did not detect disk changes automatically, which could cause data corruption if disks were swapped without refreshing directory information. Later versions introduced error notifications to avoid overwriting but required a system reboot afterward.
The majority of system complexity lies within BDOS and, to a lesser degree, CCP and transient commands. This modular architecture enabled porting only the BIOS to new hardware platforms, significantly reducing development time and contributing to CP/M’s broad adoption. This early implementation of a hardware abstraction layer was pioneering at a time when most operating systems targeted single hardware models.
Console Command Processor
The Console Command Processor (CCP) manages keyboard input and displays output on terminals. CP/M supports both printing and video terminals, necessitating that all commands be entered at the command line. The prompt—commonly A>—indicates the current default disk drive. Users can switch this default by typing a drive letter followed by a colon (for example, B:), which updates the prompt accordingly.
CP/M’s command-line interface draws inspiration from Digital Equipment’s Concise Command Language used in systems like RT-11 and OS/8. Commands comprise 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 or user areas, forwarding any parameters. Upon completion, BDOS reloads the CCP to free memory for subsequent transient programs.
Several commands retain legacy names—such as PIP, used for file copying—reflecting their origins in DEC utilities. Parameter syntax varies among programs and lacks a unified option character.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Frequently used transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands were enhanced with additions such as DIRSYS/DIRS for system file management, ERASE/ERASE for file deletion, RENAME/REN for renaming files, TYPE/TYP for displaying ASCII content, and USER/USE for altering user numbers. Command abbreviation was also introduced. The range of transient commands expanded to include utilities like COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, SETDEF, SHOW, SID, XREF, among others.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) is responsible for handling tasks such as file management, screen output, and printing functions. Applications interact with BDOS by placing function identifiers and parameters into processor registers, followed by a call to a predetermined memory location. This fixed entry point ensures software compatibility across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers the fundamental low-level operations required by the operating system, including character input/output and disk sector read/write processes. While BDOS performs some buffering of disk data, it relies on a standard 128-byte sector size prior to CP/M version 3.0, necessitating BIOS adjustments to accommodate different disk formats.
Because of the wide range of hardware architectures—such as integrated video displays versus terminal interfaces, differing UART chips for serial communication, and diverse I/O mechanisms like memory-mapped I/O—customizing the BIOS is crucial. The BIOS standardizes these hardware differences by providing uniform entry points for CP/M services. Serial port support within the BIOS is typically minimal or nonexistent; consequently, modem-related applications often require user-installed overlays to manage particular serial devices.
Applications
CP/M served as the platform for early essential business software, including word processors like WordStar and database systems such as dBase. Initial outliner programs like KAMAS and Out-Think were created on CP/M before transitioning to MS-DOS. Programming tools like Turbo Pascal and spreadsheet software like Multiplan—precursors to Borland Delphi and Microsoft Excel respectively—also originated on this system. The pioneering spreadsheet application VisiCalc and Sorcim's SuperCalc, which gained significant popularity among CP/M users, were available on the platform. Autodesk’s AutoCAD was initially released for CP/M as well.
A variety of compilers and interpreters supported widely used programming languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I. Numerous early Microsoft software products were developed with CP/M compatibility in mind.
CP/M applications often included installation utilities designed to adapt software to different hardware configurations. For instance, Kaypro II owners could convert programs from Xerox 820 disk formats to their own system’s format. BASIC source code was typically accessible, and most copy protection schemes proved ineffective due to CP/M’s standardized disk structure.
Although limited graphics capabilities restricted video game development, many text-based titles were ported to CP/M, including Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction series like Zork and Colossal Cave Adventure. Infocom consistently released its games in CP/M-compatible versions. Lifeboat Associates distributed user-created freeware such as XMODEM for dependable modem file transfers. The outline processor KAMAS stood out as another notable native CP/M program.
Transient Program Area
In the original CP/M implementations for the 8080, 8085, and Z80 processors, the memory region from address 0100H up to just before the lowest BDOS address stored at 0006H is designated as the Transient Program Area (TPA), allocated for application use. Although these CPUs could address up to 64 KB of memory, the actual size of the TPA varied depending on system design since BIOS ROMs or video memory occupied portions of the address space. To expand available TPA, bank switching was frequently employed by swapping out ROM or video memory segments. Additionally, CP/M 3.0 introduced the capability to place certain BDOS components within bank-switched memory areas.
Application Debugging
CP/M featured a Dynamic Debugging Tool, commonly referred to as DDT, which allowed users to inspect and modify memory and program segments, as well as execute programs incrementally.
Resident Software
At first, CP/M did not provide native support for terminate-and-stay-resident (TSR) applications similar to those found in DOS. Nonetheless, developers devised utilities that intercepted operating system calls to enhance capabilities, marketing products such as SmartKey, a keyboard macro utility. With the arrival of CP/M 3, support was added for dynamically loadable Resident System Extensions (RSX), enabling the CCP to load RSXs without relying on transient programs through the use of "null command files." Additionally, third-party solutions like Resident System Modules (RSMs) were retrofitted for CP/M 2.2 to offer comparable functionality.
Installing Software
Although CP/M provided some abstraction for disk and console input/output hardware, most applications required installation to enable features related to peripherals such as printers and terminals. These devices commonly depended on manufacturer-specific escape codes—for instance, commands to activate bold text on printers—that varied considerably between models. Installation routines permitted users to select their hardware or customize these escape sequences; however, this setup had to be repeated for each application since no centralized operating system service managed peripheral configurations.
Because printer control codes were embedded directly within software, using a program like WordStar with different printer types (such as dot-matrix versus daisy wheel) necessitated separate builds tailored for each device. Switching printers involved reloading the corresponding version of the application.
Disk Formats
The IBM System/34 and IBM 3740 floppy disk format—characterized by 128-byte sectors, single density, and single-sided 8-inch disks—became the de facto standard for CP/M. Unlike this standardization on 8-inch media, no uniform 5.25-inch disk format emerged; manufacturers including Kaypro, Morrow Designs, and Osborne each adopted proprietary formats. The majority of software distributions utilized the Xerox 820 format, compatible with systems like the Kaypro II. In 1981, InfoWorld estimated approximately two dozen widely used formats that software publishers needed to address to reach a broad audience. For example, JRT Pascal was available on multiple 5.25-inch disk formats—including North Star, Osborne, Apple, Heath/Zenith hard and soft sector disks, Superbrain—as well as an 8-inch version. Ellis Computing supported over twelve distinct 5.25-inch formats covering Heath and TRS-80 CP/M variants. Similarly, Lifetree and other distributors provided conversions of CP/M software across various platforms.
CP/M allowed customization of reserved sectors, directory areas, and logical-to-physical sector mappings on floppy disks; however, there was no standardized mechanism for reading configuration parameters from disks formatted on different systems. While most CP/M machines equipped with 8-inch drives could handle the IBM single-sided format, compatibility across diverse CP/M hardware heavily depended on the specific disk drive and controller due to the wide variety of floppy disk types available in both 8-inch and 5.25-inch sizes. Variations included sectoring methods (hard versus soft), recording density (single or double), number of sides (single or double), track counts ranging from 35 up to 80 tracks, and differing sector layouts. Conversion utilities enabled reading disks from other systems when formats were sufficiently similar; for instance, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson machines. Nonetheless, certain disk types—such as hard sectored or 80-track formats—remained incompatible across platforms. Apple II users faced limitations due to reliance on Apple’s GCR format for CP/M software distribution or had to resort to serial data transfers.
The fragmented nature of CP/M disk formats compelled distributors either to stock multiple disk versions or invest in duplication equipment capable of handling several formats simultaneously. This complexity stood in stark contrast with the more standardized IBM PC disk formats and contributed significantly to CP/M’s swift decline after 1981.
Among the final noteworthy computers supporting CP/M was the Commodore 128 (introduced in 1985), which incorporated a Z80 processor alongside its native CPU specifically for running CP/M software. This machine required a Commodore 1571 or 1581 drive capable of reading soft-sectored 40-track MFM-formatted disks.
The Sony SMC-70 was the pioneer in employing a 3.5-inch floppy drive while running CP/M version 2.2. Other systems that supported CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX machines, and TRS-80 Model 4 when running Montezuma CP/M. Applied Engineering’s CP/AM product for Apple II also supported both 3.5-inch floppy drives and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to the more common 3.5-inch format.
File system
File names adhered to the 8.3 convention, allowing up to eight characters before a period, followed by a three-character extension that denoted 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, some applications, particularly MBASIC, could generate lowercase filenames, which complicated their retrieval via the command line.
Disk drives were designated using drive letters such as A or B, with files accessed by prefixing the filename with the drive letter and a colon (e.g., A:FILE.TXT). If no drive letter was specified, commands operated on the currently active default drive.
File sizes were quantified in 128-byte records, a size corresponding to disk sectors on 8-inch floppy drives. The operating system maintained file size information within the File Control Block (FCB). Since many programs processed files as character streams, text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to indicate end-of-file; inserting this character prematurely would truncate the file content at that point.
With the advent of larger removable and fixed storage devices, disk de-blocking was introduced, increasing the number of blocks per logical allocation unit. This enabled handling of bigger files but also raised the smallest allocation unit from 1 KB (single-density) to as much as 32 KB for very small files, which reduced disk space efficiency when numerous small files were present.
CP/M 2.2 did not support file modification timestamps; however, these were optionally available in MP/M and CP/M 3.0.
While CP/M 2.2 lacked subdirectories, it provided 16 numbered user areas to help organize files. Users could switch between these areas using the "User X" command (where X ranges from 0 to 15). Although security was minimal, this feature allowed file separation by user or task—particularly beneficial on systems equipped with hard drives. Files stored in USER 0 were universally accessible but required explicit path specification. This arrangement also supported multitasking on single-user machines by isolating workflows such as data entry and billing without mixing their files.
Graphics
Although certain S-100 bus systems included graphics capabilities from their inception, CP/M did not offer standardized graphics support until 1982 with the introduction of GSX. Due to limited memory resources, graphical applications were uncommon on 8-bit CP/M platforms, which mostly relied on simple ASCII art representations in text mode or utilized custom character sets. Some models—like the Kaypro series and the TRS-80 Model 4—provided block graphics accessible through assembler and BASIC programming; notably, the Model 4 could render 640×240 pixel images when equipped with an optional high-resolution graphics board.
Official
Several companies issued official CP/M upgrades derived from Digital Research’s original source code, such as IMDOS for the IMSAI 8080, itself a clone of the Altair 8800.
Compatible
A variety of independently developed CP/M-compatible operating systems appeared without utilizing Digital Research’s codebase, including:
- Cromemco CDOS developed by Cromemco
- MSX-DOS, designed for MSX computers and compatible with CP/M software
- The Epson QX-10, offering either CP/M or compatible TPM-II/TPM-III environments
- The British SAM Coupé, which featured an optional Pro-DOS compatible with CP/M-2.2
- Amstrad/Schneider CPC and PCW models distributed with CP/M disk sets
- The Husky (computer) employing DEMOS, a ROM-based loader capable of running numerous CP/M programs
- 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 OS initially developed without Digital Research code; since 2022 it has incorporated original Digital Research components under authorization from Lineo’s president
- LokiOS, launched in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible system that includes Digital Research source code and supports hot-swappable OS modules
- IS-DOS for the Enterprise, produced by Intelligent Software
- VT-DOS for the Videoton TV Computer, also developed by Intelligent Software
Improvements
Certain CP/M-compatible systems notably enhanced capabilities, exemplified by the multi-processor support found in TurboDOS.
Eastern Bloc Variants
Within the former Eastern Bloc, numerous CP/M-80 adaptations 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. For CP/M-86 derivatives, products included SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by East German companies like VEB Robotron.
Enduring Influence
A significant number of features in Microsoft Windows originate from its compatibility with MS-DOS, which itself was influenced by CP/M. The system of assigning drive letters and the 8.3 filename format have their roots in CP/M. Special characters used as wildcards (? and *) and reserved device names such as "PRN:" and "CON:" also trace back to this operating system. The convention of labeling floppy drives as A and B and hard drives as C remains present in MS-DOS command environments. The control character ^Z, used to signify the end-of-file in text documents, is another legacy inherited from CP/M. Commands like DIR, REN/RENAME, TYPE, and ERA/ERASE in DOS were modeled after their CP/M counterparts. File extensions including .TXT and .COM continue to be widely utilized.
Between 1997 and 1998, Caldera released CP/M version 2.2 binaries along with source code under an open-source license. This allowed redistribution and modification of Digital Research’s CP/M and MP/M files through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, the licensing was updated by Lineo, then the proprietor of these assets. To commemorate its 40th anniversary in October 2014, the Computer History Museum made early CP/M source code publicly available.
As of 2018, enthusiasts of vintage computing alongside certain small enterprises continue to maintain and develop systems running CP/M (predominantly version 2.2) as their operating platform.
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 (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 – covering IBM’s choice 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 – includes source code
- Gaby Chaudry's Homepage for CP/M and Computer History – contains ZCPR resources
- CP/M Main Page – technical reference by John C. Elliott
- MaxFrame's Digital Research CP/M page (archived)
- ↑ 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 - ↑ ...
- ↑ 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 namedCPM.NYT83 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1993 - ↑ 8.0 8.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall.NYT - ↑ 9.0 9.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedwilkinson19811019 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwise19820510 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmeyer19820614 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedInfoworld 1981 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs nameddacruz19840427 - ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
- ↑ Lua error in Module:Citation/CS1/Configuration at line 2123: attempt to index field '?' (a nil value).
- ↑ 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