CSOS
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
| Products | CP/M, MP/M, CP/M-86, CP/M-68K, CP/M-8000 |
CP/M, initially an acronym for Control Program/Monitor and subsequently known as Control Program for Microcomputers, is a widely adopted operating system created in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. This disk operating system was engineered to manage file organization on magnetic storage devices and to facilitate program loading from disks. While early iterations supported only single-tasking on 8-bit processors with a memory limit of 64 kilobytes, later releases introduced multi-user functionality along with compatibility for 16-bit processor architectures.
The design of CP/M is structured around three principal components: the Basic Input/Output System (BIOS), responsible for hardware driver management; the Basic Disk Operating System (BDOS), which oversees file system operations and core system services; and the Console Command Processor (CCP), a command-line interpreter that incorporates essential commands.
During the late 1970s through the mid-1980s, CP/M established itself as the de facto standard operating system for microcomputers utilizing the S-100 bus, becoming predominant in business computing environments. By enabling easier application portability across different hardware manufacturers, it broadened both hardware and software markets. The accessibility of CP/M-based microcomputers encouraged software development innovation, empowering independent programmers and user communities to distribute novel applications. Eventually, CP/M’s prominence declined following the introduction of the IBM PC in 1981, which brought about 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, which incorporated a Shugart Associates 8-inch floppy-disk drive managed by a specialized controller.[1] The OS was developed using Kildall’s proprietary programming language, PL/M.[2] Its design was influenced by the TOPS-10 operating system from the DECsystem-10 mainframe.[3]
CP/M was compatible with a variety of machines built around the 8080 and Z80 processors. One of its earliest licensees, Gnat Computers, obtained rights to CP/M version 1.0 in 1977 for $90, permitting its use on any microcomputer platform. The demand for CP/M rapidly increased, enabling Digital Research to elevate licensing fees into the tens of thousands.[4]
John Pierce took charge of developing CP/M 2.0 in 1978 under Kildall’s guidance. When Kathryn Strutynski joined Digital Research in 1979, she played a critical role in debugging CP/M 2.0 and contributed extensively to subsequent versions including CP/M 2.2 and CP/M Plus. Other notable early contributors were Robert Silberstein and David K. Brown.[5]
Originally abbreviated as "Control Program/Monitor",[6] the term was officially registered as "Control Program for Microcomputers" in 1977.[7] This renaming aligned with naming patterns seen in Kildall’s PL/M language and IBM’s CP/CMS systems. The change coincided with efforts by Kildall, his spouse, and business associate Dorothy McEwen to commercialize both CP/M and the PL/M compiler under the Digital Research brand. Their objective was to establish Digital Research as synonymous with "microcomputer," mirroring how IBM and Microsoft later defined the personal computing industry. The company’s name was changed from Intergalactic Digital Research, Inc. to Digital Research, Inc.[8]
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with sublicensing agreements further broadening its reach. A wide array of manufacturers developed CP/M-based computers aimed at various market segments; InfoWorld observed that CP/M was emerging as the definitive operating system for small computers. Even companies with their own proprietary operating systems, such as Heath/Zenith (HDOS), offered CP/M compatibility on their 8080/Z80 machines, a contrast to the fragmented ecosystem surrounding the 6502 CPU.[9] This success was largely attributed to CP/M’s vast software catalog. The Xerox 820 adopted CP/M to take advantage of its extensive library of applications.[10] To compensate for Digital Research’s inadequate documentation,[11] Xerox provided a Howard W. Sams CP/M manual, though InfoWorld criticized the official documentation as incomplete and poorly organized.[12]
By 1984, Columbia University had produced Kermit binaries compatible with over a dozen CP/M variants along with generic builds.[13] CP/M was characterized as a "software bus",[14][15] facilitating uniform communication between software and hardware components.[16] Applications were typically portable across different hardware platforms, requiring mainly adjustments to terminal and printer escape codes. This cross-platform compatibility significantly enhanced CP/M’s appeal compared to operating systems tied to specific machines. However, certain constraints existed, such as the incompatibility of Z80-specific instructions on 8080/8085 CPUs and game graphics routines that bypassed the OS for performance reasons.[17]
Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware platform for CP/M.[18] By 1982, Digital Research announced that CP/M had been licensed for use on more than 450 computer models.[19] Prominent systems included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. The most widely sold CP/M-compatible computer was probably the Amstrad PCW. In the United Kingdom, CP/M operated on Research Machines educational computers (with source code released for instructional purposes), the BBC Micro fitted with a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. CP/M 3 powered the NIAT handheld device developed for A. C. Nielsen, which featured 1 MB of solid-state storage.
Multi-user Capability
In 1979, Digital Research introduced MP/M, a multi-user variant of CP/M that enabled multiple terminals to connect simultaneously to a single system, granting each user independent control with separate screens and keyboards. Subsequent releases extended support to 16-bit processors.
CP/M Plus
The last iteration of the 8-bit CP/M series was version 3, also known as CP/M Plus, released in 1983. Created by David K. Brown, its BDOS incorporated MP/M's bank switching memory management into a single-user operating system compatible with CP/M 2.2 software, allowing utilization of memory beyond 64 KB on 8080 or Z80 processors. This version introduced file date stamping and included tools such as relocating assemblers and linkers. CP/M 3 was designed for advanced 8-bit computers like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX machines, and the TRS-80 Model 4.
16-bit versions
Digital Research also developed CP/M variants tailored for 16-bit microprocessors.
The initial release was CP/M-86 for the Intel 8086 CPU, launched in November 1981 with Kathryn Strutynski as project lead. To differentiate it from the original, the earlier 8-bit version became known as CP/M-80. Although anticipated to be the IBM PC's primary operating system, licensing disagreements caused IBM to select Microsoft's PC DOS instead. While CP/M-86 was later made available on IBM PCs, it struggled in the market due to a significantly higher price point ($240 compared to $40 for PC DOS).
The Digital Equipment Corporation Rainbow 100 supported multiple operating systems: CP/M-80 ran on a Z80 processor, while CP/M-86 or MS-DOS operated on an 8088 CPU; both could be used simultaneously—enabling users to maintain their existing 8-bit software investments while transitioning to 16-bit environments. Similarly, CompuPro System 816 offered a dual-processor edition called CP/M 8-16. The Zenith Z-100 also supported CP/M-86 across both of its CPUs.
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 was deployed on EXORmacs systems and considered for Atari ST before Atari selected GEMDOS. Additionally, it saw use on SORD M68 and M68MX computers.
In the same year, CP/M-8000 was created for the Zilog Z8000 CPU found in the Olivetti M20 and was written in C.
These 16-bit editions necessitated recompilation of applications for compatibility with new processors. To assist with this transition, Digital Research provided utilities such as XLT86, which translated Intel 8080 assembly code (.ASM) into optimized Intel 8086 assembly (.A86), streamlining the porting process of CP/M-80 and MP/M-80 software to their respective 16-bit platforms. XLT86 was accessible on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately 2000 applications were available for CP/M, positioning it as a likely standard OS for emerging 16-bit computers. In 1980, IBM approached Digital Research with an offer to license CP/M for its IBM Personal Computer; however, after failing to secure a signed non-disclosure agreement from Digital Research, IBM turned to Microsoft for an operating system solution.
MS-DOS shared many foundational elements with CP/M, including file management structures and drive letter assignments (A:, B:). Its key advancement was the FAT file system, which simplified porting popular CP/M programs such as WordStar and dBase. MS-DOS also supported larger memory capacities (typically starting at 64 KB), enabling more extensive built-in commands within its command-line interface and enhancing performance and usability on floppy disk-based systems.
Although early hardware expansions like the Baby Blue card allowed IBM PCs to run legacy 8-bit CP/M applications, industry momentum quickly shifted toward MS-DOS. In 1982, BYTE magazine characterized MS-DOS as "far more user-friendly, faster, with numerous advantages." By 1984, InfoWorld highlighted CP/M's failure in the consumer market due to expensive software offerings. By 1986, manufacturers such as Kaypro had discontinued CP/M computer production in favor of MS-DOS platforms. As IBM-compatible systems dominated the microcomputer landscape, CP/M's market presence diminished rapidly and coverage in major publications declined significantly; by 1987, leading magazines like Byte scarcely featured CP/M products.
Subsequent iterations of CP/M-86 enhanced compatibility and performance relative to MS-DOS and were rebranded as 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 the standard console command processor (CCP) provided by Digital Research. This project originated from a hobbyist collective called "The CCP Group," spearheaded by Richard Conn.
The initial version, ZCPR1, was distributed via a disk from SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was issued on 14 February 1983 as a set of ten disks from SIG/M. This version later saw an update to 2.3 and was adapted into 8080 machine code to increase its compatibility range.
Richard Conn, together with Frank Gaude, established Echelon Inc. to commercially publish the next iteration of ZCPR while continuing to allow free access. Released on 14 July 1984, ZCPR3 came as nine disks through SIG/M and featured the ability to be compiled for non-Z80 processors with some feature limitations. Its significant enhancements included command shells, aliasing, input/output redirection, flow control mechanisms, named directory support, search path functionality, customizable menus, password protection, and integrated online help.
In January 1987, Jay Sage took over the development and introduced ZCPR 3.3, which incorporated additional features and utilities but discontinued support for the 8080 CPU. Although ZCPR enjoyed considerable backing within the CP/M user base, it was unable to halt the overall decline of the CP/M operating system.
Hardware model
A basic CP/M system operating on an 8-bit platform required the following components:
- A computer terminal compatible with ASCII character encoding
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- The NEC V20 and V30 processors supported emulation of the 8080 instruction set, enabling CP/M operation on PC-DOS/MS-DOS hardware; any IBM PC-compatible clone could run CP/M-86
- A minimum of 16 KB RAM located at address zero
- A bootstrap loader capable of initiating execution from the first sector of a diskette
- At least one floppy disk drive unit
While Digital Research officially endorsed only the Intel 8080 Development System, numerous CP/M-compatible manufacturers adapted portions of the operating system to fit their unique hardware designs. The Z80 processor gained widespread adoption due to its backward compatibility with the 8080 architecture; many systems incorporated BIOS code and applications tailored specifically for the Z80.
Digital Research collaborated with companies like Zilog and American Microsystems to create Personal CP/M—a ROM-based variant designed for more affordable machines lacking disk drives. This version initially appeared in the Sharp MZ-800 system, which used cassettes but offered optional floppy drives. Personal CP/M exploited the extended instruction set of the Z80 at some cost to portability across different platforms.
American Microsystems released the S83 microprocessor, a Z80-compatible chip integrating an 8 KB ROM containing both OS and BIOS code alongside circuitry for dynamic RAM interfacing. Priced near $32 in bulk quantities, this chip aimed at simplifying CP/M hardware implementations.
Most CP/M systems employed a minimal ROM bootstrap loader employing techniques such as bank switching or bus-injected code to load the OS into RAM starting at address zero; certain machines required manual bootstrap entry via front-panel controls.
CP/M used a 7-bit ASCII character set as standard; however, extended character sets varied by manufacturer—for instance, Kaypro utilized Greek letters in its upper character range, Osborne signaled underlining by setting the eighth bit on characters, and WordStar marked word boundaries similarly. International editions generally replaced specific ASCII characters following ISO 646 standards rather than extending beyond seven bits.
Components
When CP/M is active in memory, it consists of three primary parts:
- the Basic Input/Output System (BIOS),
- the Basic Disk Operating System (BDOS),
- and the Console Command Processor (CCP).
Both the BIOS and BDOS reside continuously in memory, while the CCP remains resident unless temporarily replaced by an application; in such cases, it automatically reloads afterward. Standard utilities, known as transient commands, are stored on disk as files with a .COM extension.
The BIOS is responsible for managing hardware devices other than the CPU and main memory, overseeing operations such as character input/output and disk sector handling. The BDOS administers the CP/M file system along with input/output abstractions like redirection. The CCP interprets user instructions, executing built-in commands (for example, DIR or ERA) or loading executable transient commands (such as PIP.COM or STAT.COM). Third-party software designed for CP/M operates as transient commands.
While BDOS, CCP, and the typical transient commands remain largely unchanged across different CP/M versions, the BIOS is tailored specifically to match individual hardware configurations.
Expanding system memory necessitates reinstalling CP/M to exploit the added capacity. The MOVCPM utility modifies system address pointers to reposition the operating system within memory, thereby freeing up space for applications. The OS itself is stored in reserved disk sectors used during boot-up; a ROM-based bootloader transfers it from drive A: at startup.
By contemporary standards, CP/M appears rudimentary due to stringent program size restrictions. Initial releases lacked mechanisms to detect disk changes, which risked data corruption if disks were swapped without refreshing directory information. Subsequent versions introduced error notifications when attempting to write to an unread disk, preventing accidental overwrites but requiring a system reboot.
The bulk of CP/M’s complexity lies within the BDOS and, to a lesser degree, in the CCP and transient utilities. Rapid adaptation to new hardware was achieved by porting only the BIOS layer—a crucial factor in CP/M’s widespread adoption. This approach of isolating hardware-specific code into a separate abstraction layer was innovative at a time when most operating systems were tightly coupled to particular hardware platforms.
Console Command Processor
The Console Command Processor (CCP) handles user input from the keyboard and displays output on terminals. CP/M supports both printing and video terminals, presenting the A> prompt to indicate the current default disk drive. Users may alter this default by typing a drive letter followed by a colon (e.g., B:), which updates the prompt accordingly.
CP/M’s command-line interface drew inspiration from Digital Equipment’s Concise Command Language found in systems like RT-11 and OS/8. Commands consist of keywords followed by parameters separated by spaces or special delimiters. Internal commands are processed directly by the CCP; otherwise, it loads corresponding executable transient programs from disk, passing any parameters along. After these programs finish execution, BDOS reloads the CCP if it was replaced, allowing transient applications access to additional memory.
Several command names reflect legacy influences—for instance, PIP stands for Peripheral Interchange Program and is used for file copying. Parameter formats are inconsistent across different utilities since no universal option syntax was standardized.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Examples of transient commands are ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands were enhanced with DIRSYS/DIRS for system file listing, ERASE/ERASE for deleting files, RENAME/REN for renaming files, TYPE/TYP for displaying ASCII content, and USER/USE for switching user numbers. This version also introduced support for abbreviated command entry. Transient commands available in CP/M 3 include COPYSYS, DATE, DEVICE, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, and XREF.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees tasks such as file management, console display output, and printing operations. Applications interact with BDOS by placing function codes and parameters into processor registers, then executing a call to a designated fixed memory location. This standardized method ensures that software behaves consistently across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers the fundamental low-level services required by the operating system, including character input/output and disk sector reading/writing. While BDOS manages some disk buffering, it assumes a fixed sector size of 128 bytes prior to CP/M 3.0, necessitating BIOS-level adjustments for differing disk formats and hardware implementations.
Due to the wide range of hardware designs—such as integrated video displays versus terminal interfaces, diverse UART chips with varying port addresses, or memory-mapped I/O instead of standard 8080 ports—customization is critical. BIOS addresses these hardware differences by providing uniform service entry points, enabling CP/M to operate on multiple system configurations. Because BIOS often lacks comprehensive serial communication capabilities, CP/M applications that use modems typically rely on user-supplied overlays to access specific serial ports.
Applications
CP/M supported several foundational business applications including WordStar (word processing), dBase (database management), KAMAS and Out-Think (outlining tools), Turbo Pascal (a predecessor to Borland Delphi), Multiplan (which preceded Microsoft Excel), and VisiCalc (the inaugural spreadsheet). Sorcim’s SuperCalc emerged as the top spreadsheet for CP/M before challenging the MS-DOS market. Autodesk’s AutoCAD also launched on CP/M. A variety of compilers and interpreters for languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I were available, including early offerings from Microsoft.
Software for CP/M frequently featured installers that adapted programs to different hardware platforms; for instance, Kaypro II users converted Xerox 820 software to be compatible with Kaypro disk formats. BASIC source code was often provided, and copy protection was generally ineffective due to CP/M’s uniform disk formats designed for cross-platform compatibility.
Although limited graphics capabilities restricted video game development, numerous text-based titles like Telengard, Gorillas, Hamurabi, Lunar Lander, the Zork series, and Colossal Cave Adventure were ported to CP/M. Infocom regularly released games in CP/M format. Lifeboat Associates distributed user-created freeware such as XMODEM for reliable modem file transfers. The outline processor KAMAS also originated within the CP/M environment.
Transient Program Area
In early versions of CP/M running on the 8080, 8085, and Z80 processors, the memory region from address 0100 hexadecimal up to just before the BDOS entry point (0006H) was designated as the Transient Program Area (TPA), allocated for application execution. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system design choices—some systems reserved portions of address space for BIOS ROM or video memory. Bank switching techniques allowed expansion of TPA by swapping out ROM or video memory segments. CP/M 3.0 further enhanced this capability by permitting parts of BDOS to be placed in bank-switched memory areas.
Application Debugging
CP/M featured the Dynamic Debugging Tool (DDT), which enabled developers to inspect and modify memory and program components, as well as execute code one instruction at a time—essential capabilities for effective software debugging and development.
Resident Software
At first, CP/M did not support genuine terminate-and-stay-resident (TSR) programs like those in DOS; however, developers devised methods to intercept operating system calls to add extended functionality. This approach allowed commercial desk accessories such as SmartKey, a keyboard macro tool, to operate. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling background extensions without relying on transient programs. Comparable third-party enhancements called Resident System Modules (RSMs) were also backported to CP/M 2.2, improving the system’s adaptability.
Installing Software
Although CP/M provided a hardware abstraction layer standardizing disk and console input/output, applications still required installation procedures to support specific device features like printers and terminals. Control over devices often depended on manufacturer-specific escape sequences for functions such as bold text printing. Installation utilities allowed users to select or customize these sequences based on their hardware. Due to the absence of centralized OS support, each program needed its own configuration process. For instance, WordStar demanded distinct versions tailored for different printers’ initialization codes, requiring users to load the appropriate version when switching output devices.
Disk Formats
The IBM System/34 and IBM 3740’s single-density, single-sided 128-byte sector format became the de facto standard for 8-inch floppy disks under CP/M. No universal 5.25-inch disk format existed; manufacturers like Kaypro, Morrow Designs, and Osborne each adopted proprietary formats. The majority of software was distributed in the Xerox 820 format, compatible with systems such as the Kaypro II, but by 1981 InfoWorld identified approximately two dozen prevalent formats that software vendors needed to consider for broad compatibility. For example, JRT Pascal was released on multiple 5.25-inch disks supporting North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain platforms, alongside a single 8-inch disk version. Ellis Computing supported both Heath formats plus sixteen additional 5.25-inch formats including TRS-80 CP/M variants. Lifetree and other resellers also provided conversions of CP/M applications across various systems.
Disk format differences arose from hardware characteristics and design decisions by manufacturers. While CP/M permitted customization of reserved areas, directory sectors, and logical-to-physical sector mappings, there was no standardized mechanism for automatically loading formatting parameters from disks created on other systems.
Nearly all CP/M machines equipped with 8-inch drives could read the IBM single-sided, single-density disk format. However, compatibility between other CP/M systems depended heavily on the specific disk drive and controller hardware due to the diversity of floppy types in both 8-inch and 5.25-inch sizes. Variations included sectoring method (hard or soft), density levels, number of sides used, track counts ranging from 35 to 80, sector organization and size, plus interleave patterns. Disk translation utilities facilitated reading disks from different machines when formats were sufficiently similar; for instance, the Kaypro II was capable of accessing TRS-80, Osborne, IBM PC, and Epson QX-10 disks. Nonetheless, certain disk types such as those with 80 tracks or hard-sectoring were incompatible. Apple II users were confined to Apple’s GCR format and had to use Apple-formatted disks or serial transfer methods to obtain CP/M software.
The fragmented nature of CP/M disk formats compelled distributors either to maintain inventories across multiple disk types or invest in multiformat duplication technology. This complexity contrasted sharply with the more uniform IBM PC disk standards and played a role in CP/M’s rapid decline after 1981.
One of the last significant machines supporting CP/M was the Commodore 128 (released in 1985), which included a Z80 processor dedicated to running CP/M alongside its native CPU. Operating CP/M on this system required a Commodore 1571 or 1581 disk drive capable of reading soft-sectored 40-track MFM-format 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 with 3.5-inch disks included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX computers, and the TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also supported both 3.5-inch floppy disks and RAM disks through compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to models with 3.5-inch drives.
File system
File names adhered to the 8.3 convention, allowing up to eight characters followed by a period and a three-character extension that identified the file type (for example, .COM designated executables, while .TXT indicated text files). When entered at the command line, filenames were automatically converted to uppercase; however, certain applications—most notably MBASIC—could generate filenames containing lowercase letters, which complicated access through the command prompt.
Disk drives were represented by single letters (such as A or B), and files were referenced by prefixing the drive letter and a colon, for instance A:FILE.TXT. If no drive letter was specified, commands operated on the current drive by default.
File size was quantified in units called records, each consisting of 128 bytes corresponding to disk sectors. The operating system tracked file size within the File Control Block (FCB). Text files typically ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, since exact byte-level sizing was not supported. Inserting a control-Z character within a file caused truncation at that point.
With the advent of larger removable and fixed disks, disk de-blocking techniques increased logical allocation block sizes from 1 KB up to 32 KB per block. This enhancement allowed for greater maximum file sizes but often led to inefficient disk space use when handling numerous small files.
CP/M version 2.2 did not provide file modification timestamps, a feature introduced later in MP/M and CP/M 3.0. Additionally, it lacked subdirectories but instead supported 16 numbered user areas for organizing files. Users could switch between these areas by entering "User X" at the prompt, effectively isolating files within each user area while enabling shared access to USER 0 files through explicit path references. This user area mechanism aimed to emulate multi-user functionality on single-user personal computers and proved particularly beneficial for managing files on systems equipped with hard drives. For example, different employees could utilize separate user areas for distinct responsibilities such as data entry or billing without risk of file conflicts.
Graphics
While some S-100 systems with graphical capabilities existed early on, CP/M itself lacked standardized graphics support until the introduction of the GSX in 1982. Due to limited memory resources, graphics usage was uncommon on 8-bit CP/M machines. Most displays relied on simple ASCII art or custom character sets for visual representation. Certain models—such as the Kaypro line and the TRS-80 Model 4—included video hardware capable of block graphics accessible via assembler or BASIC's CHR$ function. Notably, the Model 4 could produce graphics at resolutions up to 640x240 pixels when equipped with an optional high-resolution board.
Official
A number of companies developed official CP/M enhancements derived from Digital Research’s source code; an example is IMDOS, created for the IMSAI 8080, itself a clone of the Altair 8800.
Compatible
Several independent operating systems compatible with CP/M emerged without utilizing Digital Research code, including:
- Cromemco CDOS developed by Cromemco
- MSX-DOS designed for MSX computers, compatible with CP/M applications
- The Epson QX-10, which offered either CP/M or compatible TPM-II/III environments
- The British SAM Coupé, featuring Pro-DOS—a CP/M-2.2 compatible operating system
- Amstrad/Schneider CPC and PCW series distributed with CP/M disk sets
- The Husky (computer) running DEMOS, a ROM-based loader supporting many CP/M programs
- ZSDOS, a BDOS replacement tailored for CP/M-80 2.2 by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free and open-source operating system compatible with CP/M 2.2 that initially contained no Digital Research code but since 2022 includes original DR components authorized by Lineo’s president
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS featuring source code and tools enabling dynamic swapping of OS modules
- IS-DOS for the Enterprise, developed by Intelligent Software
- VT-DOS for the Videoton TV Computer, also produced by Intelligent Software
Improvements
Certain CP/M-compatible operating systems introduced substantial feature enhancements, notably TurboDOS, which supported multi-processor configurations.
Eastern Bloc Variants
Within the former Eastern Bloc, numerous CP/M-80 variants were developed under various designations, including 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, notable examples include SCP1700, CP/K, and K8918-OS. These operating systems were primarily produced by East German manufacturers such as VEB Robotron.
Enduring Influence
A significant portion of Microsoft Windows functionality traces back to compatibility with MS-DOS, which itself was designed to align with CP/M standards. The use of drive letter assignments and the 8.3 filename format in Windows are inherited directly from CP/M conventions. Wildcard symbols like ? and * in Windows originate from CP/M usage. Reserved device names for output redirection such as "PRN:" (printer) and "CON:" (console) also have their roots in CP/M. In that system, floppy drives were assigned letters A and B, while hard drives began at C:, a scheme still present in MS-DOS command-line environments. The control character ^Z, signifying the end-of-file in text files, is another legacy from CP/M. Several DOS commands—DIR, REN/RENAME, TYPE, ERA/ERASE—were modeled after their CP/M counterparts. File extensions like .TXT and .COM continue to be widely utilized today.
Between 1997 and 1998, Caldera made available certain CP/M 2.2 executables and source code under an open source license. This allowed redistribution and modification of Digital Research’s CP/M and MP/M-related files via Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—then holding these rights—expanded the licensing terms later that year. To mark its 40th anniversary in October 2014, the Computer History Museum published early versions of CP/M source code.
As of 2018, enthusiasts dedicated to vintage computing along with select niche commercial enterprises continue to develop and maintain systems primarily running CP/M 2.2 as their host OS.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an operating system 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"
- 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 (includes IBM's choice of Microsoft DOS over Digital Research's CP/M)
- CP/M FAQ at comp.os.cpm and digitalresearch.biz
External links
- The Unofficial CP/M Website – features available source code
- Gaby Chaudry's CP/M and Computing History Homepage – contains resources on ZCPR
- CP/M Central Page – John C. Elliott's site with detailed technical data
- MaxFrame's Digital Research CP/M resource
- ↑ 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 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall.NYT - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwilkinson19811019 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwise19820510 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmeyer19820614 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedInfoworld 1981 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs nameddacruz19840427 - ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
- ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedSwaine_1997_Entrepreneurship - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs 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