CP/M-FDE
| 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 known as Control Program/Monitor and subsequently renamed 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-based microcomputer platforms. This disk operating system was engineered to manage file organization on magnetic media and facilitate program loading from disks. While its early versions supported only single-tasking on 8-bit processors with memory limits up to 64 kilobytes, subsequent releases introduced multi-user capabilities and transitioned to 16-bit processor architectures.
The fundamental elements of CP/M consist of the Basic Input/Output System (BIOS), which oversees hardware driver operations; the Basic Disk Operating System (BDOS), responsible for file system management and application service provision; and the Console Command Processor (CCP), a command-line interface offering integrated commands.
During its peak, CP/M established itself as the de facto standard and leading operating system for microcomputers, particularly those utilizing the S-100 bus. It gained widespread acceptance in commercial environments from the late 1970s through the mid-1980s. By enabling easier software portability across different hardware manufacturers, CP/M expanded both hardware and software markets. The platform encouraged innovative software development as affordable CP/M-based microcomputers attracted independent programmers who distributed their applications through user groups. However, CP/M's dominance diminished following the introduction of the IBM Personal Computer in 1981, which brought DOS into mainstream use.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development environment, utilizing an 8-inch floppy-disk drive from Shugart Associates paired with a custom-designed controller. The system was programmed using Kildall’s proprietary language, PL/M. CP/M’s design was influenced by the TOPS-10 operating system running on the DECsystem-10, which Kildall had experience with.
CP/M was compatible with numerous machines based on the 8080 and Z80 processors. One of its early licensees, Gnat Computers, acquired rights to CP/M version 1.0 in 1977 for $90, with licensing fees escalating to tens of thousands of dollars as demand surged.
Under Kildall’s leadership, John Pierce directed the development of CP/M 2.0 in 1978. After joining Digital Research Inc. in 1979, Kathryn Strutynski initially focused on debugging CP/M 2.0 before playing a key role in advancing CP/M 2.2 and CP/M Plus. Additional notable contributors during this period included Robert Silberstein and David K. Brown.
The acronym originally stood for "Control Program/Monitor," but was rebranded as "Control Program for Microcomputers" during its commercial rollout in 1977. This change aligned with naming patterns such as Kildall’s own PL/M language and IBM’s CP/CMS systems. The renaming formed part of a strategic business effort by Kildall and his wife, alongside partner Dorothy McEwen, to establish Digital Research as a prominent microcomputer software company—aiming to make "microcomputer" synonymous with their offerings much like IBM and Microsoft later did with "personal computer." Concurrently, 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 market penetration likely higher due to sublicensing arrangements. A variety of manufacturers developed CP/M-based systems targeting different segments; InfoWorld highlighted CP/M as becoming the definitive operating system for small computers. Even companies with their own proprietary platforms, such as Heath/Zenith (HDOS), offered CP/M compatibility for their 8080/Z80 models, a contrast to the absence of a similar standard for 6502-based machines.[1] This widespread adoption was largely propelled by CP/M’s vast software ecosystem. For instance, the Xerox 820 integrated CP/M to take advantage of its extensive program library.[2] To offset Digital Research's inadequate documentation, Xerox provided a Howard W. Sams CP/M manual alongside their systems.[3][4]
By 1984, Columbia University utilized the identical source code to compile Kermit executables for over a dozen distinct CP/M variants, in addition to two generic builds.[5] CP/M was characterized as a "software bus",[6][7] facilitating standardized hardware interaction among multiple applications.[8] The majority of software was portable across different hardware platforms, requiring only adjustments for terminal and printer control codes. This cross-platform capability significantly contributed to CP/M’s widespread adoption and extensive software catalog compared to single-vendor operating systems. Some drawbacks included dependency on Z80-specific instructions that limited compatibility with 8080/8085 CPUs and game software that implemented machine-specific graphics routines bypassing both OS and BIOS layers for performance reasons.
Bill Gates recognized the combination of the Apple II with a Z-80 SoftCard as the leading hardware platform running CP/M.[9] By 1982, Digital Research announced that over 450 computer models had licensed their OS.[10] Prominent CP/M-compatible systems encompassed the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. The most commercially successful CP/M-capable device was likely the Amstrad PCW. In Britain, CP/M operated on Research Machines educational computers—with source code openly shared for instructional purposes—and on the BBC Micro equipped with a Z80 co-processor. It was also supported by the Amstrad CPC, Commodore 128, TRS-80, and subsequent versions of the ZX Spectrum. Additionally, CP/M 3 powered the NIAT handheld device developed exclusively for A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user capabilities
In 1979, Digital Research introduced MP/M, a multi-user extension of CP/M designed to allow several terminals to connect simultaneously to a single host computer, each providing independent screen and keyboard access. Subsequent iterations expanded support to include 16-bit processors.
CP/M Plus
Introduced in 1983, CP/M Plus (version 3) was the final iteration of the 8-bit CP/M series, featuring a BDOS developed by David K. Brown. This version incorporated MP/M’s bank switching memory management into a single-user, single-task operating system that maintained compatibility with CP/M 2.2 applications. It allowed systems with 8080 or Z80 processors to access memory beyond the 64 KB limit. Enhancements included file date stamping and integrated development utilities such as a relocating assembler and linker. CP/M Plus was primarily aimed at advanced 8-bit machines like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.
16-bit versions
Digital Research expanded CP/M into the 16-bit domain with the release of CP/M-86 for the Intel 8086 processor in November 1981, overseen by Kathryn Strutynski. To differentiate it from its predecessor, the original 8-bit system became known as CP/M-80.
Although CP/M-86 was anticipated to become the standard operating system for the IBM PC, licensing conflicts between Digital Research and IBM prevented this. IBM ultimately selected Microsoft’s PC DOS, which was based on 86-DOS. Despite later availability of CP/M-86 for IBM PCs following legal intervention, it failed to capture significant market share due in part to its higher cost compared to PC DOS ($240 versus $40).
The Digital Equipment Corporation Rainbow 100 offered multiple OS options: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously through CP/M-86/80. This dual-processor architecture enabled users to operate legacy 8-bit CP/M software alongside newer 16-bit programs, safeguarding previous software investments during hardware transitions. Comparable dual-CPU implementations included CompuPro System 816’s CP/M 8-16 and Zenith Z-100’s support for both processors under CP/M-86.
Following CP/M-86, Digital Research launched CP/M-68K for Motorola’s 68000 processor in 1982. Initially created in Pascal/MT+68k and subsequently ported to C, it ran on platforms such as EXORmacs and SORD M68 series. Atari had plans to adopt CP/M-68K for their Atari ST but eventually opted for GEMDOS instead.
Also in 1982, Digital Research adapted CP/M for the Zilog Z8000 processor as CP/M-8000, which was used on the Olivetti M20.
Since these 16-bit variants required recompilation of existing software for new CPU architectures, Digital Research developed XLT86—a tool that converted Intel 8080 assembly source code into optimized Intel 8086 assembly compatible with both CP/M-86 and MP/M-86 environments. XLT86 was available on CP/M-80 and VAX/VMS platforms.
Displacement by MS-DOS
By the early 1980s, the number of applications available for CP/M had reached approximately 2,000, positioning it as the expected standard OS for emerging 16-bit systems. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M tailored for the IBM PC. However, after failing to obtain a signed non-disclosure agreement from Digital Research, IBM contracted Microsoft to supply an operating system instead.
MS-DOS incorporated many fundamental concepts from CP/M including file management structures and drive letter assignments (A:, B:, etc.). Its notable advancement was the FAT file system which simplified porting popular CP/M programs such as WordStar and dBase. Furthermore, MS-DOS utilized more memory—often exceeding 64 KB on IBM PCs compared to CP/M’s minimum of 16 KB—allowing it to support a richer set of commands within its command-line interface and enhancing performance and usability on floppy disk-based systems.
Among early IBM PC peripherals was the Baby Blue card that enabled execution of 8-bit CP/M software. Nonetheless, BYTE magazine in 1982 described MS-DOS as "considerably more user-friendly, faster, and offering numerous advantages." By 1984, InfoWorld observed that high software prices hindered CP/M’s success in home computing markets. By mid-decade, manufacturers like Kaypro had discontinued their CP/M-based models in favor of MS-DOS compatible machines. As IBM-compatible hardware dominated the industry landscape, CP/M’s market presence diminished rapidly with media coverage dropping significantly by the late 1980s.
Subsequent releases of CP/M-86 enhanced both performance and compatibility with MS-DOS applications; these versions were rebranded as DOS Plus before eventually evolving into DR-DOS.
ZCPR
ZCPR (Z80 Command Processor Replacement) debuted on 2 February 1982 as a direct substitute for the standard Digital Research console command processor (CCP). Its initial development was undertaken by a hobbyist collective known as "The CCP Group," led by Richard Conn. The first version, ZCPR1, was distributed through SIG/M, affiliated with the Amateur Computer Club of New Jersey.
The subsequent release, ZCPR2, appeared on 14 February 1983, issued as ten disks via SIG/M. This version included an upgrade to 2.3 and introduced an 8080-compatible code variant, enabling operation on 8080 and 8085 processors. Richard Conn and Frank Gaude founded Echelon Inc. to commercially distribute later versions while continuing free availability. On 14 July 1984, ZCPR3 was released as nine disks from SIG/M, incorporating features such as command shells, aliases, input/output redirection, flow control mechanisms, named directories, search path capabilities, customizable menus, password protection, and online assistance. A streamlined compilation with limited features was also available for 8080-based systems.
After Conn ended development in January 1987, Jay Sage advanced the project to ZCPR version 3.3, adding enhanced functionalities and utilities but discontinuing support for 8080 processors. Despite enthusiastic adoption among CP/M users, ZCPR alone could not reverse the overall decline of CP/M in the marketplace.
Hardware model
A basic 8-bit CP/M system required these components:
- A computer terminal utilizing ASCII characters
- A microprocessor such as Intel 8080/8085 or Zilog Z80
- NEC V20 and V30 processors supported 8080 emulation, allowing CP/M to operate on PC-DOS/MS-DOS hardware
- Minimum of 16 KB RAM starting at memory address zero
- A bootstrap mechanism to load the initial disk sector
- At least one floppy disk drive
Digital Research’s official CP/M implementation supported only the Intel 8080 Development System. Hardware vendors customized CP/M to their specific configurations; many Z80-based machines incorporated BIOS code and applications optimized for the Z80 while maintaining compatibility with core 8080 code.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant targeting affordable systems without disk drives. This version first appeared in the Sharp MZ-800 cassette-driven system with optional disk drives and utilized enhanced Z80 instructions rather than full 8080 portability. American Microsystems introduced the S83 microprocessor featuring embedded ROM for OS and BIOS functions plus integrated logic for dynamic RAM interfacing, priced at $32 per unit in volume.
Most systems employed a minimal ROM bootstrap combined with techniques like bank switching or bus injection to bypass the need for boot code at address zero. Some required manual entry of bootstrap instructions via front-panel switches during startup.
CP/M operated using the standard 7-bit ASCII character set; the additional 128 characters available in an 8-bit byte were not standardized and varied by manufacturer—for example, Kaypro used them for Greek letters, Osborne machines represented underlining through the eighth bit, and WordStar employed it as an end-of-word marker. International editions often conformed to ISO 646 standards by substituting certain ASCII characters rather than extending beyond seven bits.
Components
While running in memory, CP/M consists of three primary components:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
BIOS and BDOS remain resident in memory continuously; CCP also stays loaded unless replaced temporarily by an application, after which it reloads automatically. Standard utilities are provided as transient commands stored on disk as .COM files.
The BIOS handles hardware operations excluding CPU and main memory management—tasks include character input/output and disk sector access. BDOS implements file system management and input/output abstractions such as redirection capabilities. The CCP interprets user commands—executing internal commands like DIR or ERA—and launches executable transient commands such as PIP.COM or STAT.COM. Third-party applications designed for CP/M function similarly as transient commands.
BDOS, CCP, and standard transient utilities remain consistent across different CP/M versions; however, BIOS is adapted specifically for each hardware platform.
Expanding system memory requires reinstalling CP/M so transient programs can utilize additional space. The MOVCPM utility relocates system components within memory by adjusting jump and call addresses accordingly, enabling the operating system to access extended memory regions. Once installed, OS components reside in reserved disk areas used during booting. A bootloader—typically embedded in ROM firmware—loads the OS from the disk drive labeled A:.
By contemporary standards, CP/M is rudimentary due to strict limitations on program size. Early versions lacked protection against changing disks during operation, posing risks of data corruption. Later iterations detect if a disk has been swapped before re-reading its directory to prevent overwriting but require a reboot to continue.
The majority of system complexity is contained within BDOS; CCP and transient commands are comparatively simple. This architecture allowed quick adaptation to new hardware by modifying only the BIOS layer—significantly reducing development time and contributing to CP/M’s broad adoption. This early implementation of a hardware abstraction layer was innovative at a time when operating systems were generally tightly coupled to specific hardware platforms.
Console Command Processor
The Console Command Processor (CCP) handles keyboard inputs and outputs results on the terminal screen. CP/M functions with either printing or video terminals, requiring users to enter commands directly at the command line. The prompt usually indicates the current default drive, for example, A>, accompanied by a blinking cursor on video displays. Users can modify the default drive by issuing internal commands such as B:, which simultaneously updates the prompt.
The design of CP/M’s command-line interface draws inspiration from Digital Equipment Corporation’s Concise Command Language, as utilized in systems like RT-11 and OS/8. Commands are composed of keywords followed by parameters, separated by spaces or special delimiters. Internal commands are executed immediately by the CCP; if not internal, the CCP loads executable "transient" programs from disk or user areas and passes along any command-line arguments. Upon completion of these programs, BDOS reloads the CCP to reclaim memory for application use.
Some command names retain historical significance, exemplified by PIP, which serves file copying purposes. Parameter structures differ across programs and do not adhere to a uniform option prefix.
Predefined CCP commands encompass DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands include utilities such as ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands were enhanced to feature DIR for listing files excluding those with the SYS attribute, alongside DIRSYS/DIRS for displaying SYS files. Additional built-ins include ERASE/ERA, RENAME/REN, TYPE/TYP, and USER/USE for user number modifications. This version also supports abbreviated forms of built-in commands. The collection of transient commands expanded to incorporate utilities like COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, SET, SHOW, SUBMIT, among others.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees critical tasks such as file management, console output handling, and printing operations. Applications request BDOS services by placing operation codes and parameters into processor registers before invoking a fixed memory address. This consistent interface ensures software compatibility across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers fundamental hardware-level services required by the operating system, including character input/output and disk sector read/write functions. While BDOS manages some disk buffering activities, it presumes a fixed sector size of 128 bytes prior to CP/M 3.0. Consequently, BIOS is responsible for managing diverse disk formats and buffering strategies.
Due to the wide range of hardware configurations—from integrated video solutions to standalone terminals, different UART chips for serial communication ports, and varying I/O designs—customization at the BIOS level is crucial. BIOS abstracts these hardware differences by providing standardized service entry points for CP/M operations such as character I/O and disk access. Since BIOS typically offers limited or no support for serial modem communication, many CP/M applications rely on user-supplied overlays to handle machine-specific serial port management.
Applications
CP/M was the original platform for groundbreaking software such as WordStar, a word processing application, and dBase, an early database system. The platform also saw the debut of pioneering outliners like KAMAS and Out-Think before their migration to MS-DOS. Programming environments including Turbo Pascal—an antecedent to Borland Delphi—and Multiplan, the predecessor of Microsoft Excel, were initially released on CP/M prior to their MS-DOS adaptations. VisiCalc, recognized as the first spreadsheet program, was distributed for CP/M alongside Sorcim’s SuperCalc, which dominated the CP/M spreadsheet market and later competed within the MS-DOS environment. Additionally, Autodesk’s AutoCAD originated on this platform. CP/M supported a wide array of compilers and interpreters for languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I, encompassing some of Microsoft’s earliest software offerings.
Software distributed on CP/M frequently included installers designed to facilitate adaptation across various hardware configurations. For instance, Kaypro II users converted applications from Xerox 820 disk formats to Kaypro-compatible disks. The availability of BASIC source code combined with minimal copy protection measures fostered broad compatibility; CP/M users anticipated that files would remain accessible across multiple programs, contrasting with proprietary file formats commonly employed by contemporary operating systems.
Due to limited graphical capabilities, video games developed for CP/M were primarily text- or character-based titles like Telengard, Gorillas, Hamurabi, Lunar Lander, as well as early interactive fiction such as the Zork series and Colossal Cave Adventure. Infocom consistently offered its games in CP/M format. Lifeboat Associates distributed user-created freeware including XMODEM, which provided reliable file transfer over modems. KAMAS also functioned as a native outlining tool within the CP/M environment.
Transient Program Area
In the original CP/M implementations for 8080, 8085, and Z80 processors, the memory region designated for application programs—known as the Transient Program Area (TPA)—spanned from address 0100 hexadecimal up to just before the BDOS start address at 0006H. Although both Z80 and 8080 CPUs could address up to 64 KB of memory, the actual TPA size depended on system architecture. Some machines allocated substantial portions of address space to BIOS ROMs or video memory buffers, thereby reducing TPA availability. Techniques such as bank switching enabled certain systems to expand TPA by swapping out ROM or video memory segments. CP/M 3.0 enhanced this capability by permitting parts of BDOS to reside within bank-switched memory areas.
Debugging application
CP/M incorporated a Dynamic Debugging Tool known as DDT, which allowed users to examine and alter memory contents and program modules interactively, as well as execute code one instruction at a time.
Resident programs
Originally, CP/M lacked native support for terminate and stay resident (TSR) programs similar to those found in DOS. Nevertheless, developers could intercept operating system calls to augment functionality, leading to commercial add-ons such as SmartKey, a keyboard utility desk accessory. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced; these could be installed without requiring transient program execution through a mechanism known as a null command file. Additionally, third-party solutions like RSMs (Resident System Modules) were retrofitted into CP/M 2.2 to provide comparable capabilities.
Software installation
Although certain hardware abstraction layers standardized disk and console input/output operations, most application software still required installation procedures to accommodate particular printers and terminals. Device management frequently depended on manufacturer-specific escape sequence codes, such as those controlling bold text printing, which varied extensively between devices. Installation utilities enabled users to choose or modify these sequences according to the hardware in use. Because there was no unified operating system service overseeing device management, installation had to be performed separately for each program.
Printer initialization codes were integrated directly into applications. For instance, when using Wordstar with multiple printers—such as a high-speed dot-matrix and a slower daisy wheel model—distinct software versions were necessary for each printer type, requiring users to reload the appropriate version when switching between devices.
Disk formats
The 128 byte-per-sector, single-density, single-sided disk format from the IBM System/34 and IBM 3740 became the de facto standard 8-inch floppy disk format for CP/M. No universally adopted 5.25-inch disk format existed for CP/M; manufacturers like Kaypro, Morrow Designs, Osborne, and others each implemented their own unique formats. While most software was distributed using the Xerox 820 format, compatible with systems such as the Kaypro II, by 1981 approximately two dozen different formats were sufficiently widespread that developers had to consider them to reach a broad user base. For example, JRT Pascal was available on multiple 5.25-inch disk formats—including North Star, Osborne, Apple, Heath/Zenith hard and soft sector variants, and Superbrain—as well as an 8-inch version. Ellis Computing supported Heath formats plus sixteen additional 5.25-inch types including TRS-80 CP/M variants. Lifetree and other distributors also adapted CP/M software across various platforms.
CP/M permitted customization of reserved areas and directory structures on disks as well as logical-to-physical sector mapping. However, there was no standardized mechanism for loading configuration parameters from disks formatted on different systems.
Although nearly all CP/M machines equipped with 8-inch drives could read the IBM single-density, single-sided format, compatibility across CP/M systems varied significantly due to differences in drive mechanisms and controllers amid a wide variety of floppy disk types in both 8-inch and 5.25-inch sizes. Disks differed by sectoring method (hard or soft), recording density (single or double), number of sides, track count (ranging from 35 to 80), and sector layout patterns. Conversion utilities allowed access to some foreign disk formats provided the drive and controller hardware were compatible. By 1982, soft-sector, single-sided, 40-track 5.25-inch disks had become the predominant medium for distributing CP/M software on consumer machines such as the Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. For example, the Kaypro II could read disks from TRS-80, Osborne, IBM PC, and Epson QX-10 systems; however, it could not handle certain disk types like hard-sectored or those with 80 tracks. Apple II users were constrained to Apple's GCR format or transferring data via serial connections due to hardware limitations.
The fragmented nature of the CP/M market—forcing distributors either to maintain inventories of numerous disk formats or invest in multiformat duplication equipment—stood in contrast to the more uniform IBM PC disk standards and contributed significantly to CP/M’s swift decline after 1981.
Among the final noteworthy CP/M-compatible computers was the Commodore 128 (released in 1985), which included a Z80 processor dedicated to running CP/M alongside its primary CPU. This system required either a 1571 or 1581 drive capable of handling soft-sector 40-track MFM disks.
The earliest computer featuring a 3.5-inch floppy drive running CP/M was the Sony SMC-70. Other platforms supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (through Montezuma CP/M). Applied Engineering’s CP/AM for Apple II also offered support for both 3.5-inch floppy disks and RAM disks via compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppies before transitioning to 3.5-inch drives.
File system
File names adhered to the 8.3 convention, allowing up to eight characters before a period, followed by a three-character extension denoting the file type (for instance, .COM for executable files and .TXT for text documents). When entered at the command prompt, filenames were automatically converted to uppercase; however, certain applications, such as MBASIC, generated lowercase filenames, which complicated command-line file access.
Disk drives were designated by letters (e.g., A:, B:). To specify a file, the drive letter and colon preceded the filename (e.g., A:FILE.TXT). If no drive letter was provided, the system assumed the file resided on the current default drive.
File size was quantified in 128-byte records, corresponding to disk sectors, rather than precise byte counts. The operating system maintained file size information within the file's File Control Block (FCB). Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) signaling end-of-file, since many programs treated files as streams of characters instead of fixed records. Introducing a control-Z character in the middle of a file caused truncation from that point onward.
With the advent of larger removable and fixed disks, disk de-blocking techniques increased the number of disk blocks per allocation unit, enabling support for bigger files. However, this also raised the minimum allocation size from 1 KB on single-density disks up to 32 KB on higher-capacity drives, resulting in inefficient storage usage for numerous small files.
CP/M 2.2 did not support file modification timestamps; this feature was optionally available in MP/M and CP/M 3.0.
While CP/M 2.2 lacked hierarchical directories, it provided 16 numbered user areas to help organize files. Users could switch between these areas using "User X" commands, with user 0 as the default. Although security was minimal, user areas allowed separation of files for distinct tasks or users sharing one machine—particularly beneficial when using hard drives. Files stored in user 0 were accessible across all user areas, while those in other users remained isolated. This setup enabled multitasking workflows by segregating functions such as data entry and billing within a single system.
Graphics
Despite early availability of graphics-capable S-100 systems, CP/M itself did not offer standardized graphics support until 1982 with the introduction of GSX. The limited memory capacity of 8-bit CP/M machines restricted graphics capabilities primarily to simple ASCII art representations displayed in text mode or via customized character sets. Certain models like the Kaypro series and TRS-80 Model 4 included video hardware capable of block graphics accessible through assembler and BASIC languages using the CHR$ function. Notably, the TRS-80 Model 4 could achieve resolutions up to 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Several companies developed official CP/M enhancements utilizing Digital Research’s source code. For example, IMDOS was created by IMS Associates, Inc. for the IMSAI 8080, a clone of the Altair 8800.
Compatible
A number of independently developed operating systems compatible with CP/M did not incorporate Digital Research code. These include:
- Cromemco CDOS produced by Cromemco
- MSX-DOS, designed for MSX computers and compatible with CP/M applications
- The operating systems available on the Epson QX-10, offering CP/M or TPM-II/III-compatible alternatives
- British ZX Spectrum-compatible SAM Coupé featuring optional Pro-DOS (compatible with CP/M-2.2)
- Amstrad/Schneider CPC 6xx and PCW series distributed alongside CP/M disk software
- The Husky (computer) running DEMOS, a ROM-based loader supporting numerous CP/M programs
- ZSDOS, an alternative BDOS for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free and open-source OS compatible with CP/M 2.2 originally developed without Digital Research code but later updated under Lineo’s permission to include some original components
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, offering CP/M 2.2 compatibility including BIOS, BDOS, CLI source code alongside original Digital Research code and modular OS features
- IS-DOS for the Enterprise (computer), created by Intelligent Software
- VT-DOS for the Videoton TV-Computer, also developed by Intelligent Software
Improvements
Certain CP/M-compatible systems offered notable enhancements, including TurboDOS, which supported multi-processor configurations.
Eastern Bloc Variants
In the former Eastern Bloc, a variety of CP/M-80 derivatives were developed under numerous 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. Versions of CP/M-86 included SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by entities like the East German VEB Robotron.
Enduring Influence
Several features found in Microsoft Windows originate from its compatibility with MS-DOS, which in turn aimed to maintain consistency with CP/M. MS-DOS inherited the use of drive letters and the 8.3 filename format from CP/M. Wildcard characters such as '?' and '*' used in Windows are derived from CP/M conventions, as are reserved device names like "PRN:" and "CON:" utilized for output redirection. The floppy disk drive letters A and B in CP/M evolved into MS-DOS's drive assignments; hard drives typically begin at C:\>. The control character ^Z signaling the end of text files also has its roots in CP/M. Commands like DIR, REN/RENAME, TYPE (and ERA/ERASE in DR-DOS) were modeled after their CP/M counterparts. File extensions including .TXT and .COM continue to be prevalent.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open-source license. This facilitated redistribution and modification of Digital Research’s software through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo, the subsequent rights holder, updated and broadened the licensing terms. To commemorate the 40th anniversary of CP/M in October 2014, the Computer History Museum published early versions of its source code.
As of today, enthusiasts of vintage computing and some niche commercial operations persist in developing and supporting systems primarily running CP/M 2.2 as their core operating system.
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 (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 selection of Microsoft DOS over Digital Research’s CP/M)
- CP/M FAQ at comp.os.cpm and Digital Research website
External links
- The Unofficial CP/M Web site – includes 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
- MaxFrame’s Digital Research CP/M page (archived)
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwilkinson19811019 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwise19820510 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedmeyer19820614 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedInfoworld 1981 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs nameddacruz19840427 - ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
- ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedSwaine_1997_Entrepreneurship - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedbunnell19820203 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedlibes198206