Portable CP/M
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M operating system |
CP/M, an acronym initially for Control Program/Monitor and subsequently for Control Program for Microcomputers, is a widely distributed operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080/85-based microcomputer platforms. It functions as a disk operating system, facilitating file management on magnetic disks and program loading from such storage. While its early iterations supported only single-tasking on 8-bit processors with a maximum of 64 kilobytes of RAM, later releases introduced multi-user capabilities and compatibility with 16-bit processor architectures.
The fundamental elements of CP/M comprise the Basic Input/Output System (BIOS), responsible for managing hardware and device drivers; the Basic Disk Operating System (BDOS), which oversees the file system and offers core system services; and the Console Command Processor (CCP), a command-line interface featuring integrated commands.
During its peak, CP/M emerged as the de facto standard operating system dominating microcomputers utilizing the S-100 bus, gaining extensive adoption in business environments from the late 1970s through the mid-1980s. By enabling software applications to be easily ported across different hardware vendors, it broadened both hardware and software markets. The widespread availability of cost-effective CP/M-compatible machines encouraged software development, supported by vibrant user communities. 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 an Intel Intellec-8 development platform, utilizing an 8-inch floppy-disk drive from Shugart Associates paired with a custom controller. The OS was programmed in 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 previously worked with.
CP/M was compatible with multiple computers built around the 8080 and Z80 microprocessors. One of its early licensees, Gnat Computers, acquired rights to CP/M version 1.0 in 1977 for $90. As demand increased, Digital Research was able to license CP/M at prices reaching tens of thousands of dollars.
John Pierce led the development of CP/M 2.0 in 1978 under Kildall’s direction. In early 1979, Kathryn Strutynski joined Digital Research, initially focusing on debugging CP/M 2.0 before playing a major role in developing CP/M 2.2 and CP/M Plus. Other significant contributors during this period included Robert "Bob" Silberstein and David "Dave" K. Brown.
Originally named "Control Program/Monitor," CP/M was officially trademarked as "Control Program for Microcomputers" in 1977. This renaming coincided with similar product naming conventions of the era, such as Kildall’s PL/M and Prime Computer’s PL/P, reflecting IBM’s influence with languages like PL/I and operating systems like CP/CMS. This branding strategy was part of an effort by Kildall, his wife, and business associate Dorothy McEwen to commercialize CP/M and position Digital Research as a premier microcomputer software company—aiming to make "CP/M" synonymous with "microcomputer," much like IBM and Microsoft later did with "personal computer." Subsequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with the actual user base likely exceeding this figure due to sublicensing arrangements. A variety of manufacturers developed CP/M-based computers targeting different sectors; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Companies that maintained proprietary operating systems, such as Heath/Zenith with HDOS, also offered CP/M as an alternative on their 8080/Z80 models, a contrast to the 6502 CPU market which lacked a similar universal OS.[1] This support was largely driven by CP/M’s vast software ecosystem. For example, the Xerox 820 utilized CP/M to access thousands of software titles, despite Digital Research’s sparse documentation, which Xerox supplemented by providing a Howard W. Sams manual.[2][3][4]
By 1984, Columbia University had employed CP/M source code to create Kermit binaries compatible with over a dozen CP/M variants in addition to generic versions.[5] CP/M was characterized as a "software bus",[6][7] facilitating interaction between multiple applications and diverse hardware through consistent interfaces.[8] Applications were generally portable across different machines, requiring mainly adjustments for terminal and printer control codes. This adaptability enhanced CP/M’s appeal and expanded its software library compared to operating systems restricted to specific hardware brands. However, certain drawbacks existed, such as programs exploiting Z80 extended instructions incompatible with 8080/8085 CPUs and machine-specific graphics routines common in games that bypassed the OS for performance reasons.[1]
Bill Gates identified the Apple II equipped with a Z-80 SoftCard as the leading hardware platform running CP/M.[9] By 1982, Digital Research announced that over 450 computer models were licensed for CP/M.[10] Prominent CP/M-compatible systems included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX devices. The most widely sold CP/M-capable machine was probably the Amstrad PCW. In the United Kingdom, CP/M operated on Research Machines educational computers (with source code released for educational purposes), the BBC Micro outfitted with a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and subsequent ZX Spectrum models. Additionally, CP/M 3 was implemented on the NIAT handheld computer designed for internal use by A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Capabilities
Digital Research introduced MP/M in 1979, a multi-user variant of CP/M that enabled multiple terminals to connect simultaneously to one computer, granting each user independent access through separate screens and keyboards. Subsequent releases extended support to 16-bit processors.
CP/M Plus
Introduced in 1983, the last 8-bit iteration of CP/M, known as CP/M Plus (CP/M 3), featured a BDOS crafted by David K. Brown. This version incorporated MP/M's bank switching memory management into a single-user, single-task operating system that maintained compatibility with CP/M 2.2 software. It allowed systems based on the 8080 or Z80 processors to utilize memory beyond the 64 KB limit. Enhancements included support for file date stamping and the addition of relocating assembler and linker utilities. CP/M Plus was primarily aimed at advanced 8-bit machines 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 produced CP/M variants tailored for several 16-bit processor architectures.
The initial release was CP/M-86, designed for the Intel 8086 CPU and launched in November 1981 under the direction of Kathryn Strutynski. To differentiate it from the original system, the earlier 8-bit version was renamed CP/M-80.
Although CP/M-86 was anticipated to become the standard operating system for the IBM PC, negotiations between Digital Research and IBM did not succeed. IBM ultimately selected Microsoft’s PC DOS, which was derived from 86-DOS. Although CP/M-86 was subsequently made available for the IBM PC following legal pressure, it failed to surpass PC DOS in popularity due to its substantially higher cost ($240 compared to $40).
The DEC Rainbow 100 competed with IBM PCs by supporting multiple operating systems: CP/M-80 (Z80), CP/M-86, MS-DOS (8088), or a dual-processor mode running both CPUs simultaneously. This design allowed users to maintain their existing 8-bit software investments while transitioning to newer 16-bit environments. A comparable dual-processor solution named CP/M 8-16 existed for the CompuPro System 816. Additionally, the Zenith Z-100 enabled execution of applications for both its processors under CP/M-86.
Following CP/M-86, CP/M-68K was developed in 1982 for the Motorola 68000 CPU. Initially implemented using Pascal/MT+68k and later ported to C, it was intended for Atari ST computers; however, Atari ultimately selected GEMDOS instead. CP/M-68K found deployment on Motorola EXORmacs and SORD M68 series machines.
Also in 1982, CP/M-8000 was adapted from CP/M-68K for the Zilog Z8000 processor used in the Olivetti M20 system, with its codebase written in C.
These 16-bit versions of CP/M necessitated recompilation of existing software. To assist with this transition, Digital Research provided utilities such as XLT86, which automatically converted Intel 8080 assembly (.ASM) into optimized Intel 8086 assembly (.A86). This tool simplified porting of CP/M-80 and MP/M-80 applications to their respective 16-bit platforms. XLT86 was developed using PL/I-80 and was accessible on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately 2,000 applications were available for CP/M, and it was widely anticipated to become the dominant OS for 16-bit computers. In 1980, IBM approached Digital Research seeking a licensed version of CP/M for their upcoming IBM PC; however, after failing to secure a signed non-disclosure agreement from Digital Research, IBM contracted Microsoft to supply an operating system instead.
MS-DOS incorporated numerous concepts from CP/M, including file management structures and drive letter assignments (A:, B:, etc.). Its key advancement was introducing the FAT file system, which facilitated easier porting of popular CP/M programs such as WordStar and dBase. Furthermore, MS-DOS took advantage of increased memory availability on IBM PCs (often exceeding 64 KB), enabling it to offer a command-line shell with more built-in commands that improved both speed and user experience compared to CP/M.
Although early hardware solutions like the Baby Blue expansion card allowed running CP/M software on IBM PCs, MS-DOS rapidly became preferred. Industry reviews highlighted MS-DOS's greater user-friendliness and affordability, while CP/M faced challenges in home markets due to high software costs. By 1986, companies like Kaypro shifted their focus away from CP/M-based machines toward models compatible with MS-DOS. As IBM-compatible platforms came to dominate the market, CP/M's share declined swiftly, leading major industry publications to discontinue coverage of CP/M products within a few years following the IBM PC's introduction.
Subsequent versions of CP/M-86 improved performance and enhanced compatibility with MS-DOS environments; these evolved into DOS Plus and eventually into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the standard console command processor (CCP) developed by Digital Research. This software was created by "The CCP Group," a collective of enthusiasts led by Richard Conn, with contributors including Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias.
The initial release, ZCPR1, appeared on a disk distributed by SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was introduced on 14 February 1983 as a ten-disk collection from SIG/M. This version was later enhanced to 2.3 and rewritten in 8080 assembly language to support both 8080 and 8085 processors.
Richard Conn and Frank Gaude established Echelon Inc. to commercialize the forthcoming iteration while maintaining free distribution. On 14 July 1984, ZCPR3 was released via nine SIG/M disks, including a variant compiled for non-Z80 processors. Enhancements in ZCPR3 encompassed features such as command shells, aliasing capabilities, input/output redirection, flow control mechanisms, named directory support, search path functionality, customizable menus, password protection, and integrated online help.
Following Conn’s discontinuation of development in January 1987, Jay Sage assumed responsibility and issued ZCPR 3.3. This update expanded the feature set and utilities but removed compatibility with 8080 microprocessors. Despite enthusiastic adoption among CP/M users, ZCPR was unable to halt the overall decline of CP/M’s market presence.
Hardware model
A basic CP/M system operating on an 8-bit architecture required these components:
- A terminal capable of ASCII communication
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- NEC V20 and V30 CPUs provided 8080 emulation to enable CP/M functionality on PC-DOS/MS-DOS platforms; any IBM-compatible PC clone could run CP/M-86
- A minimum of 16 KB RAM beginning at address zero
- A bootstrap mechanism for loading the initial disk sector
- At least one floppy disk drive
Although Digital Research officially supported only the Intel 8080 Development System, numerous manufacturers adapted CP/M to their specific hardware setups. The inclusion of Z80 compatibility allowed CP/M to operate on systems powered by Z80 CPUs; in these cases, BIOS and some applications utilized instructions unique to the Z80.
Digital Research collaborated with Zilog and American Microsystems to produce Personal CP/M—a ROM-based operating system designed for cost-effective machines lacking disk drives. This OS first appeared on the Sharp MZ-800 cassette-based computer with optional disk drives and exploited advanced Z80 instructions at the expense of cross-platform compatibility. American Microsystems released the S83 microprocessor featuring embedded ROM containing OS and BIOS code alongside logic for dynamic RAM management, priced at approximately $32 per unit in volume quantities.
Most systems employed a minimal ROM bootstrap loader combined with techniques like bank switching or bus injection to load CP/M into RAM starting at address zero; some required manual bootstrap input through front-panel switches.
CP/M utilized a seven-bit ASCII character set; however, extended eight-bit characters varied depending on manufacturer implementations—such as Kaypro’s use of Greek characters, Osborne’s employment of the eighth bit for underlining text, and WordStar’s marking of word endings. International editions typically replaced certain ASCII characters according to ISO 646 standards rather than expanding beyond seven bits.
Components
During operation, CP/M loaded into memory consists of three primary modules:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
Both BIOS and BDOS remain resident in memory continuously, whereas the CCP stays resident unless supplanted by an application program—in which case it is reloaded automatically afterward. Transient commands corresponding to standard utilities are stored as .COM executable files on disk.
The BIOS is responsible for managing hardware components excluding the CPU and main memory; this includes handling character input/output and disk sector operations. BDOS implements file system management along with input/output abstractions such as redirection layered atop BIOS functions. The CCP interprets user commands by executing internal commands (e.g., DIR or ERA) or loading transient command programs (e.g., PIP.COM for copying files). Third-party applications designed for CP/M operate as transient commands.
While BDOS, CCP, and standard transient commands remain largely consistent across different CP/M versions, the BIOS is tailored specifically for each hardware platform.
Expanding memory capacity necessitates reinstalling CP/M so that applications can utilize the additional space. The MOVCPM utility adjusts object code by modifying jump and call addresses to relocate it within new memory regions. This patched version can then be saved back onto disk enabling applications to access the extended memory area. The OS components reside in reserved disk sectors used during bootup; a ROM-based bootloader loads the operating system from drive A:.
By contemporary standards, CP/M is relatively rudimentary due to limitations on program size. Earlier versions did not detect disk changes automatically, posing risks of data corruption if disks were swapped without refreshing directory information. Later releases implemented error signaling to prevent overwriting but still required rebooting after disk changes.
The majority of system complexity lies within BDOS and—though less so—in CCP and transient command utilities. Porting efforts focused primarily on adapting BIOS routines to new hardware platforms allowed CP/M to function across diverse machines efficiently. This hardware abstraction approach significantly reduced development effort and contributed greatly to CP/M’s widespread adoption at a time when most operating systems targeted only single hardware configurations.
Console Command Processor
The Console Command Processor (CCP) is responsible for managing keyboard inputs and presenting output on the terminal screen. CP/M supports both printing and video terminals, requiring all instructions to be entered through the command line. The prompt, commonly displayed as A>, reflects the current default disk drive and updates whenever a drive letter command (such as B:) is issued.
The design of CP/M’s command-line interface drew inspiration from Digital Equipment’s Concise Command Language, which was implemented in operating systems like RT-11 and OS/8. Commands typically begin with a keyword followed by optional parameters. Internal commands are processed directly by the CCP, whereas others launch executable "transient" programs loaded from disk. To optimize available memory for transient programs, BDOS reloads the CCP after these programs finish if they have overwritten it.
Certain commands preserve legacy names, like PIP used for copying files, reflecting its DEC heritage. Parameter conventions differ between programs, and there is no uniform standard for option characters.
Among the built-in CCP commands are DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands include ASM, DDT, DUMP, ED, PIP, STAT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands were expanded to include DIRSYS/DIRS for system file management, ERASE/ERASE for file removal, RENAME/REN, TYPE/TYP for displaying file contents, and USER/USE to switch user numbers. This version also introduced abbreviated forms for built-in commands. Additional transient utilities available in CP/M 3 encompass COPYSYS, DATE, DEVICE, HELP, LINK, PIP, SET, and SUBMIT.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees functions such as file management, console output, and printer control. Applications prepare processor registers with specific function codes and parameters before invoking a fixed memory address. This uniform entry point guarantees compatibility of software across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers essential low-level hardware operations required by the operating system, including character input/output and reading or writing disk sectors. While BDOS manages some disk buffering tasks, it assumes a constant sector size of 128 bytes prior to CP/M version 3.0. Because many disk formats employ larger sectors, BIOS contains hardware-specific routines to handle disk buffering and control.
Due to the wide range of hardware configurations—such as integrated video adapters, different serial port controllers, and diverse input/output methods—BIOS customization is necessary. It abstracts these hardware differences through standardized entry points that support CP/M services like character I/O and disk operations. Since BIOS often offers limited or no serial communication support, CP/M applications utilizing modems frequently incorporate user-supplied overlays to manage particular serial ports.
Applications
Early essential business software on CP/M included WordStar for word processing, dBase as a database solution, and spreadsheet programs such as VisiCalc and SuperCalc, which dominated the CP/M market before competing in MS-DOS environments. The platform also saw the introduction of Turbo Pascal, a forerunner to Borland Delphi, alongside Microsoft's early spreadsheet, Multiplan. Notably, Autodesk's AutoCAD was initially developed for CP/M. A wide array of compilers and interpreters supported languages like BASIC, FORTRAN, PL/I, as well as early Microsoft language products.
CP/M software frequently came with installation utilities designed to adapt programs for different hardware configurations; for instance, Kaypro II owners converted applications from Xerox 820 disk formats to their own system’s format. BASIC source code was commonly available, and due to CP/M’s design favoring file compatibility across software, copy protection mechanisms were generally ineffective.
Although limited graphical capabilities restricted video game development, many text-based games were ported to CP/M. Titles such as Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction series like Zork and Colossal Cave Adventure were popular. Infocom consistently published their games in CP/M format. Lifeboat Associates distributed user-developed software including the XMODEM protocol for reliable modem file transfers. The outline processor KAMAS was also native to this operating system.
Transient Program Area
In the original CP/M implementations for 8080, 8085, and Z80 processors, the read/write memory region from address 0100 hexadecimal up to just before 0006H (the lowest BDOS address) was designated as the Transient Program Area (TPA), allocated for application use. Although these CPUs could address up to 64 KB, the actual TPA size varied depending on system architecture since some reserved memory space for BIOS ROM or video memory. To maximize TPA availability, bank switching was often employed to swap out ROM or video memory segments. CP/M 3.0 further enhanced this by permitting parts of the BDOS to reside within bank-switched memory areas.
Debugging application
CP/M provided a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory contents and program modules interactively, as well as execute programs stepwise for detailed analysis.
Resident programs
Initially, CP/M did not support terminate-and-stay-resident (TSR) programs similar to those in DOS. Nevertheless, developers found ways to hook into operating system calls to extend functionality, leading to auxiliary software such as SmartKey, a keyboard utility that mapped byte strings to specific keys. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling the command processor (CCP) to load RSXs without launching transient programs by using "null command files." Additionally, third-party solutions like Resident System Modules (RSMs) were back-ported to CP/M 2.2 to provide similar capabilities.
Software installation
Although CP/M standardized disk and console input/output interfaces, most application software required installation routines to fully support hardware peripherals like printers and terminals. Device control typically depended on manufacturer-specific escape sequences—for example, bold text commands varied between printer models—necessitating user-run installation programs where these sequences could be selected or edited according to the device in use. Since no centralized operating system service managed such devices, this installation process had to be repeated individually for each program.
Printer initialization codes were embedded within applications themselves. Consequently, using software such as WordStar with multiple printers—like a fast dot-matrix alongside a slower daisy wheel printer—required separate versions of the program tailored for each printer type. Users had to load the appropriate version corresponding to their chosen printer hardware.
Disk formats
The 128-byte per sector, single-density, single-sided disk format used by the IBM System/34 and IBM 3740 became the standard 8-inch floppy disk format for CP/M systems. In contrast, no unified 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own unique formats. The majority of software was distributed using the Xerox 820 format, compatible with devices like the Kaypro II. However, InfoWorld reported in September 1981 that approximately two dozen different formats were widely used enough that software developers had to account for them to reach a broad user base. For instance, JRT Pascal was available on several 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain systems, as well as a separate 8-inch disk version. Ellis Computing supported Heath formats along with sixteen additional 5.25-inch variants, including two versions for TRS-80 CP/M. Distributors such as Lifetree also converted CP/M applications to function across multiple hardware platforms.
The choice of disk format was influenced by the system architecture and the physical attributes of the disk drives. While CP/M permitted customization of reserved areas, directory structures, and logical-to-physical sector mappings, there was no universal method to retrieve formatting parameters from disks created on different systems.
Most CP/M machines equipped with 8-inch drives could read IBM’s single-sided, single-density format; however, compatibility with other formats varied significantly depending on the disk drive and controller hardware. Floppy disks exhibited wide variation: they could be hard or soft sectored, single or double density or sided, have track counts ranging from 35 to 80, and feature diverse sector layouts and sizes. Utilities for translating disk formats allowed reading disks from other machines when formats were sufficiently similar—for example, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson systems. Nevertheless, certain formats such as 80-track or hard-sectored disks remained unreadable. Apple II users were restricted to Apple's GCR encoding format and had to obtain CP/M software either on Apple-formatted disks or through serial transfers.
This fragmentation in CP/M disk formats compelled distributors to maintain inventories of multiple disk types or invest in equipment capable of duplicating various formats—an issue that contrasted sharply with the more uniform IBM PC disk standards—and contributed to CP/M’s swift decline after 1981.
Among the final notable machines supporting CP/M was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. It required either a 1571 or 1581 disk drive able to read soft-sector 40-track disks formatted with MFM encoding.
The earliest computer to feature a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems that supported CP/M on 3.5-inch disks included the Commodore 128, the Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and the TRS-80 Model 4 (via Montezuma CP/M 2.2). Applied Engineering’s CP/AM for the Apple II also provided support for both 3.5-inch floppy disks and RAM disks through compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to 3.5-inch drives later in its production run.
File system
File naming conformed to the 8.3 convention, allowing up to eight characters for the name, followed by a period and a three-letter extension that indicated the file type (for example, .COM for executable files or .TXT for text documents). When filenames were typed at the command prompt, they were automatically converted to uppercase; however, certain applications—most notably MBASIC—generated lowercase filenames that were not easily accessible through the command line interface.
Disk drives were designated by 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, the system defaulted to the current drive in use.
File sizes were measured in units called records, each consisting of 128 bytes corresponding to disk sectors; precise byte counts were generally unsupported. The operating system tracked file size within the File Control Block (FCB). Text files typically concluded with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, which could cause truncation if inserted in the middle of a file.
With the advent of larger removable and fixed disks, disk de-blocking was introduced, increasing allocation block sizes from 1 KB on single-density drives up to 32 KB on more advanced hardware. This allowed for larger maximum file sizes but decreased storage efficiency for numerous small files.
CP/M 2.2 did not include file modification timestamps; however, this feature was optionally available in MP/M and CP/M 3.0.
Instead of supporting subdirectories, CP/M 2.2 provided 16 numbered user areas to facilitate file organization. Users could switch between these areas using the "User X" command, where user 0 served as the default. Files stored within user areas remained isolated from one another except those in user 0, which were accessible across all users via path notation. This structure proved useful for organizing files on hard drives by separating tasks—for instance, allowing different employees to handle data entry and billing without file conflicts—though it offered limited benefit on smaller floppy disks.
Graphics
Although some early S-100 systems supported graphics capabilities, CP/M did not offer standardized graphics support until 1982 with the introduction of GSX. Due to constrained memory resources, graphics usage was rare on 8-bit CP/M machines, which primarily displayed rudimentary ASCII art or utilized custom character sets. Certain models such as the Kaypro series and TRS-80 Model 4 featured block graphics accessible to programmers using assembler or BASIC. The TRS-80 Model 4 could achieve graphics resolutions up to 640x240 pixels when equipped with an optional high-resolution graphics board.
Official
Some corporations developed official enhancements to CP/M utilizing Digital Research’s source code; an example is IMDOS designed for the IMSAI 8080, a clone of the Altair 8800.
Compatible
A variety of independently created CP/M-compatible operating systems emerged without incorporating Digital Research’s codebase, including:
- Cromemco CDOS developed by Cromemco
- MSX-DOS for MSX computers, capable of running CP/M software
- Epson QX-10 offering either CP/M or compatible TPM-II/TPM-III environments
- British SAM Coupé featuring an optional CP/M-2.2-compatible Pro-DOS
- Amstrad/Schneider CPC and PCW product lines bundled with CP/M disk sets
- Husky (computer) running DEMOS, a ROM-based loader supporting many CP/M applications
- ZSDOS, a replacement BDOS 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 originally developed without Digital Research code; updated since 2022 incorporating original DR components under authorization from Lineo’s president
- LokiOS, launched in 2023 by David Kitson as a CP/M 2.2-compatible OS including BIOS, BDOS, CLI source code along with original Digital Research sources and utilities enabling hot-swappable OS modules
- IS-DOS for the Enterprise (computer), developed by Intelligent Software
- VT-DOS designed for the Videoton TV-Computer, also produced by Intelligent Software
Enhancements
Certain CP/M-compatible operating systems significantly broadened the original capabilities, with examples like the multi-processor supporting TurboDOS.
Eastern bloc
In the former Eastern Bloc, numerous CP/M-80 variants appeared under designations such as SCP, SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, among others. These encompassed both potentially modified binaries and source code adaptations created by firms including the East German VEB Robotron. Additionally, CP/M-86 variants like SCP1700, CP/K, and K8918-OS were developed within this region.
Legacy
A considerable number of Microsoft Windows features stem from compatibility with MS-DOS, which itself was influenced by CP/M practices. Examples include the use of drive letters (A and B assigned to floppy drives; C for hard disks), the 8.3 filename convention, wildcard symbols (?, *), and reserved device identifiers such as "PRN:" and "CON:". The control character ^Z, signaling end-of-file in text documents, also originates from CP/M. Commands in DOS like DIR, REN/RENAME, and TYPE were modeled after their CP/M counterparts. File extensions such as .TXT and .COM continue to be widely utilized across various operating systems.
Between 1997 and 1998, Caldera made several CP/M 2.2 binaries and source files available under an open source license, permitting redistribution and modification of Digital Research materials related to CP/M and MP/M. Following Tim Olmstead’s passing in 2001, ownership transferred to Lineo, which subsequently expanded the licensing terms later that year. In October 2014, to commemorate CP/M’s 40th anniversary, the Computer History Museum released early versions of its source code.
As of 2018, enthusiasts within vintage computing circles and some niche enterprises continue to develop and maintain systems primarily running CP/M 2.2 as their core operating environment.
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
- Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985
- "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 (details IBM's choice of Microsoft DOS over Digital Research's CP/M for IBM PC)
- CP/M FAQ at comp.os.cpm
External links
- The Unofficial CP/M Web site – contains source code
- Gaby Chaudry's Homepage for CP/M and Computer History – features ZCPR resources
- CP/M Main Page – John C. Elliott's technical resource site
- MaxFrame's Digital Research CP/M page
- ↑ 1.0 1.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedwilkinson19811019 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwise19820510 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmeyer19820614 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedInfoworld 1981 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs nameddacruz19840427 - ↑ 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
- Articles with short description
- CP/M
- CP/M variants
- Microcomputer software
- Disk operating systems
- Digital Research operating systems
- Discontinued operating systems
- Floppy disk-based operating systems
- Free software operating systems
- History of computing
- 1974 software
- Formerly proprietary software
- Pages with reference errors
- Pages with script errors