ZSDOS
| Company type | Private |
|---|---|
| Industry | Computer software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | Pacific Grove, California , United States |
| Products | CP/M, PL/M compiler |
| Owner | Dorothy McEwen (co-founder/partner) |
CP/M, initially known as Control Program/Monitor and subsequently as Control Program for Microcomputers, is an operating system created in 1974 by Gary Kildall of Digital Research, Inc for microcomputers utilizing the Intel 8080 and Intel 8085 processors. Functioning as a disk operating system, CP/M managed the organization of files on magnetic disks and facilitated program execution from these storage devices. Originally engineered for single-task operation on 8-bit CPUs with memory up to 64 KB, later iterations extended support to multi-user setups and 16-bit processors.
The structure of CP/M consists of three main components: the Basic Input/Output System (BIOS), which manages hardware-specific drivers; the Basic Disk Operating System (BDOS), which oversees file management and application-level services; and the Console Command Processor (CCP), a command-line interface providing built-in commands.
CP/M emerged as the de facto standard operating system dominating microcomputers, particularly those built around the S-100 bus. It gained widespread adoption in business environments from the late 1970s through the mid-1980s. By enabling easier application portability across various manufacturers' hardware, CP/M expanded both software and hardware markets. The platform encouraged software development, supported by independent programmers and user communities leveraging cost-effective CP/M-based machines. However, CP/M's prominence diminished following the introduction of the IBM PC in 1981 and the subsequent rise 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 equipped with a custom controller. The system was programmed using Kildall’s own language, PL/M (Programming Language for Microcomputers). CP/M’s design drew inspiration from the TOPS-10 operating system running on the DECsystem-10 mainframe, which Kildall had experience with.
CP/M was compatible with a wide range of computers based on the 8080 and Z80 processors. One of its earliest licensees, San Diego-based microcomputer manufacturer Gnat Computers, secured rights to CP/M version 1.0 in 1977 at $90 per unit. The rapidly increasing demand allowed Digital Research to raise licensing fees into the tens of thousands of dollars.
Development of CP/M 2.0 in 1978 was primarily led by John Pierce under Kildall’s guidance. Kathryn Strutynski, a colleague from the Naval Postgraduate School, joined Digital Research early in 1979 as its fourth employee; she contributed significantly by debugging CP/M 2.0 and later became a principal developer for CP/M 2.2 and CP/M Plus. Other notable early contributors were Robert Silberstein and David K. Brown.
The original meaning of CP/M was "Control Program/Monitor," highlighting its function as a resident monitor—a basic form of an operating system precursor. However, trademark filings from November 1977 redefined it as "Control Program for Microcomputers," aligning with industry naming conventions seen in contemporaneous products such as Kildall’s PL/M language and IBM’s CP/CMS operating system.
Kildall, together with his wife and business partner Dorothy McEwen, pursued commercialization of both CP/M and the PL/M compiler under the Digital Research name. Their objective was to establish "Digital Research" as a leading brand in microcomputing, paralleling how IBM and Microsoft later defined personal computing markets. The company transitioned its name from Intergalactic Digital Research, Inc. to Digital Research, Inc.
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses; however, InfoWorld suggested the true market size was likely greater due to sublicensing agreements. A wide range of manufacturers developed CP/M-based computers targeting different sectors, cementing CP/M's status as the definitive operating system for small computers. Even companies that had their own proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M support for their 8080 and Z80 models—something not paralleled by any standard for machines using the 6502 CPU.[1] This widespread adoption was largely fueled by CP/M’s vast software ecosystem. For example, the Xerox 820 incorporated CP/M to gain access to thousands of available applications, with Xerox supplementing Digital Research’s limited documentation by including a Howard W. Sams CP/M manual.[2][3][4]
By 1984, Columbia University utilized CP/M’s source code to compile Kermit binaries compatible with over a dozen CP/M variants as well as generic versions.[5] The operating system was characterized as a "software bus",[6][7] facilitating consistent communication between software and diverse hardware platforms.[8] Applications were typically portable across different machines, requiring only minor modifications to terminal and printer control codes. This cross-platform compatibility contributed significantly to CP/M’s widespread adoption and prolific software development compared to single-vendor operating systems. Nevertheless, some challenges existed, such as incompatibilities between Z80-specific instructions and 8080/8085 processors, along with machine-dependent graphics routines that bypassed the OS for enhanced performance.[9]
Bill Gates recognized the combination of the Apple II with a Z-80 SoftCard as the leading CP/M hardware setup.[10] By 1982, Digital Research announced that over 450 licensed computer models were running CP/M.[11] Prominent systems included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. Among these, the Amstrad PCW was probably the top-selling CP/M-compatible device. In the United Kingdom, CP/M operated on Research Machines educational computers—whose source code was published for instructional purposes—as well as on the BBC Micro equipped with a Z80 co-processor. It was also supported on platforms such as the Amstrad CPC, Commodore 128, TRS-80, and later editions of the ZX Spectrum. Additionally, CP/M 3 found use in the NIAT handheld computer designed for A. C. Nielsen, featuring a 1 MB solid-state drive.
Multi-user Versions
In 1979, Digital Research introduced MP/M, a multi-user variant of CP/M that enabled multiple terminals to connect simultaneously to a single machine, each offering its own user interface. Subsequent releases extended support to 16-bit processors.
CP/M Plus
The final iteration of the 8-bit CP/M series was version 3, referred to as CP/M Plus, released in 1983. Created by David K. Brown, its BDOS incorporated bank switching memory management from MP/M into a single-user operating system compatible with CP/M 2.2 software, allowing access to more than 64 KB of memory on 8080 or Z80 processors. It introduced file date stamping and came bundled with relocating assembler and linker utilities. CP/M Plus found adoption in later 8-bit platforms such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.
16-bit versions
CP/M evolved to support 16-bit processors with the introduction of CP/M-86 for the Intel 8086 CPU in November 1981. Development was led by project manager Kathryn Strutynski. To differentiate it from the original, the earlier version was designated CP/M-80.
Although CP/M-86 was anticipated to become the IBM PC's default operating system, negotiations between Digital Research and IBM over licensing terms were unsuccessful. Consequently, IBM partnered with Microsoft, which supplied PC DOS based on 86-DOS. While CP/M-86 was later offered as an alternative following legal pressure, it failed to capture significant market share due to IBM pricing it at $240 compared to PC DOS’s $40.
The Digital Equipment Corporation’s Rainbow 100 supported multiple environments: CP/M-80 via Z80, CP/M-86 or MS-DOS via the 8088 processor, or both CPUs simultaneously. This design allowed users to retain their existing 8-bit software investments during the transition to 16-bit systems. Similar dual-processor configurations were seen in systems like the CompuPro System 816 (CP/M 8-16) and the Zenith Z-100.
After CP/M-86, Digital Research introduced CP/M-68K for Motorola’s 68000 processor in 1982. Originally developed using Pascal/MT+68k and later rewritten in C, it operated on EXORmacs machines and was considered for Atari ST before Atari selected GEMDOS instead. It also ran on SORD M68 and M68MX models.
That same year saw a port of CP/M-68K to the Zilog Z8000 processor for the Olivetti M20 under the name CP/M-8000, implemented in C.
These 16-bit editions necessitated recompilation of applications. Assembly code could be translated with tools such as Digital Research’s XLT86, which converted Intel 8080 assembly sources into optimized Intel 8086 code tailored for size and calling conventions—thus streamlining automatic porting from CP/M-80 and MP/M-80 software to their 16-bit equivalents. Developed in PL/I-80, XLT86 was available on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately 2,000 applications existed for CP/M, positioning it as the expected standard OS for 16-bit machines. In 1980, IBM approached Digital Research to license an updated CP/M version for its upcoming IBM PC; however, after failing to finalize a signed non-disclosure agreement, IBM turned to Microsoft for an operating system solution.
MS-DOS adopted many structural elements from CP/M such as file management schemes and drive letter assignments (like A: and B:). Its key advancement was the FAT filesystem, which facilitated easier porting of popular CP/M programs including WordStar and dBase. Moreover, MS-DOS exploited increased memory availability (IBM PCs typically started with at least 64 KB), enabling a richer set of built-in commands within its command-line interface that enhanced speed and usability on floppy disk-based systems.
Although hardware like the Baby Blue expansion card allowed running CP/M software on IBM PCs, industry reviewers rapidly favored MS-DOS. BYTE magazine described MS-DOS as "more user-friendly, faster, with many more advantages." By 1984, InfoWorld highlighted CP/M's lack of success in the home market due to expensive software prices. By 1986, manufacturers such as Kaypro discontinued production of 8-bit CP/M machines in favor of MS-DOS platforms. As IBM-compatible systems dominated the market, CP/M’s presence declined swiftly; major microcomputer publications significantly reduced their coverage of CP/M by the late 1980s.
Subsequent releases of CP/M-86 improved performance and compatibility with MS-DOS under the name DOS Plus, which later evolved into DR-DOS.
ZCPR
ZCPR, which stands for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for Digital Research's original console command processor (CCP). The software was created by a collective known as "The CCP Group," comprised of computer enthusiasts led by Richard Conn, with members including Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias.
The initial version, ZCPR1, appeared on a SIG/M disk (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. The subsequent release, ZCPR2, arrived on 14 February 1983 distributed across ten SIG/M disks. This version was later enhanced to 2.3 and adapted into 8080 assembly language to support a wider range of hardware platforms.
To commercialize the next iteration while maintaining free availability, Conn partnered with Frank Gaude to establish Echelon Inc. On 14 July 1984, ZCPR3 was introduced through nine SIG/M disks, including a compiled edition designed for non-Z80 processors. Its notable capabilities encompassed command shells, aliasing, input/output redirection, flow control mechanisms, named directory shortcuts, path searching, customizable menus, password protection, and integrated online help. Following Conn’s departure from active development in January 1987, Jay Sage took over and advanced the project with ZCPR 3.3. This version discontinued 8080 compatibility but incorporated numerous new features and utilities. Despite enthusiastic adoption among CP/M users, ZCPR was unable to halt the overall decline of the CP/M operating system.
Hardware model
A basic 8-bit CP/M setup required the following components:
- A terminal supporting ASCII character input
- A microprocessor such as the Intel 8080/8085 or the Zilog Z80
- NEC V20 and V30 processors offered 8080 emulation capabilities enabling CP/M operation on PC-DOS/MS-DOS hardware; any PC-compatible machine could run CP/M-86
- A minimum of 16 KB RAM beginning at address zero
- A bootstrap mechanism to load the initial disk sector
- At least one floppy disk drive unit
Digital Research’s official CP/M distribution was limited to the Intel 8080 Development System; however, hardware vendors adapted the operating system to fit their specific configurations. Since the Z80 processor was backward compatible with 8080 instructions, CP/M also functioned on Z80-based machines. Although Digital Research’s core OS components avoided utilizing Z80-specific instructions to maintain compatibility, many BIOS implementations and application programs took advantage of the extended features offered by the Z80.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant aimed at cost-sensitive systems lacking disk drives—initially deployed in the Sharp MZ-800 cassette-driven computer with optional floppy disk support. Personal CP/M made use of advanced Z80 instruction sets rather than adhering strictly to portability standards.
American Microsystems released the S83 microprocessor, which was compatible with the Z80 architecture and incorporated an 8 KB embedded ROM containing both OS and BIOS code along with circuitry for dynamic RAM interfacing. The S83 chip had an approximate bulk price of $32 per unit.
Most CP/M machines relied on a small ROM bootstrap combined with techniques such as bank switching or bus injection to load CP/M into RAM at address zero; some systems required manual input via front-panel switches.
The CP/M operating system utilized a 7-bit ASCII character set; characters beyond this range were not uniformly defined and varied depending on manufacturer implementation—for instance, Kaypro used extended codes for Greek letters; Osborne employed them for underlining text; WordStar interpreted the eighth bit as a word termination marker. International editions typically followed ISO 646 standards by substituting certain ASCII characters rather than extending beyond seven bits.
Components
When CP/M is operational, the loaded operating system in memory consists of three main parts:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
The BIOS and BDOS remain resident in memory continuously, whereas the CCP stays active until an application replaces it, after which it automatically reloads. Standard utility commands exist as transient programs stored in .COM files on disk.
The BIOS is responsible for managing hardware components outside the CPU and memory, including character input/output and disk sector handling. The BDOS oversees the file system and input/output abstractions such as redirection. The CCP interprets user commands, executing internal commands like DIR and ERA or loading executable transient commands like PIP.COM and STAT.COM. Third-party applications operate as transient commands within this framework.
While the BDOS, CCP, and standard transient utilities remain consistent across a CP/M version, the BIOS is tailored specifically for each hardware configuration.
Adding more memory necessitates reinstalling CP/M to allow transient programs to utilize the expanded space. The MOVCPM tool moves the OS code to new memory locations by updating jump and subroutine references, enabling the modified OS to be saved back to disk. The OS components reside in reserved disk sectors for booting purposes; a ROM-based bootloader loads the OS from drive A: during startup.
From a contemporary perspective, CP/M appears rudimentary due to strict program size restrictions. Early iterations lacked mechanisms to detect disk swaps, which could lead to data corruption if disks were changed without refreshing directory information. Later releases introduced error notifications when write operations occurred before directory updates, preventing overwrites but requiring system reboots.
The bulk of CP/M’s complexity lies within the BDOS and, to a lesser degree, the CCP and transient commands. By focusing on porting the straightforward BIOS routines to new hardware platforms, developers could quickly deploy the entire OS, substantially reducing development effort and contributing to CP/M’s widespread use. This early example of hardware abstraction was pioneering at a time when most operating systems were designed for single platforms.
Console Command Processor
The Console Command Processor (CCP) manages keyboard input and terminal output. CP/M supports both video and printing terminals, with all commands entered via the command line. The command prompt typically displays the current default drive, such as A>, which updates as users switch drives by typing commands like B:.
CP/M’s command-line interface was inspired by Digital Equipment’s Concise Command Language used in systems like RT-11 and OS/8. Commands consist of keywords followed by parameters; internal commands are executed directly by the CCP. If a command is not recognized internally, the CCP searches for corresponding executable files—called “transient” programs—in the current disk and user area, loading them along with any given parameters. After these programs run, BDOS reloads the CCP to free memory for other transient tasks.
Several CP/M commands retain legacy names reflecting their DEC heritage—for example, PIP (Peripheral Interchange Program) is used for file copying. Parameter syntax varies between programs without a standardized option character.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass utilities such as ASM, DDT, DUMP, ED, PIP, SUBMIT, and SYSGEN.
With CP/M Plus (Version 3), built-in commands expanded to include DIRSYS/DIRS for system file management, ERASE/ERASE for file deletion, RENAME/REN for renaming files, TYPE/TYP for displaying ASCII content, and USER/USE for switching users. This version also introduced abbreviated forms of built-in commands. Additional transient utilities in CP/M 3 include COPYSYS, DATE, DEVICE, HELP, LINK, PIP, SET, SHOW, among others that enhance system administration and development functions.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) oversees tasks such as file management, console output, and printing operations. Applications access BDOS services by placing operation codes and parameters into processor registers, then invoking a predetermined memory location. This fixed entry point ensures consistent program execution across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers fundamental low-level routines including character input/output and reading or writing disk sectors. While BDOS manages some disk buffering, it presumes a sector size of 128 bytes before CP/M 3.0, necessitating BIOS modifications to support the larger sectors typically found on 5.25-inch floppy disks.
Due to the wide variety of hardware designs—ranging from built-in displays to terminal interfaces, different UART chips for serial communication, varying port addresses, and memory-mapped I/O instead of standard 8080 I/O space—BIOS customization is essential. BIOS masks these hardware disparities by offering consistent entry points for CP/M functions such as character I/O and disk operations. Because BIOS often provides limited or no serial port support, CP/M applications utilizing modems usually incorporate user-supplied overlays containing machine-specific serial port routines.
Applications
CP/M was the platform for many notable early software titles, including WordStar (word processing) and dBase (database management), both initially created for this system. Early outlining tools like KAMAS and Out-Think originated on CP/M before migrating to MS-DOS. Turbo Pascal (the predecessor to Borland Delphi) and Multiplan (which evolved into Microsoft Excel) also debuted on CP/M. The groundbreaking spreadsheet VisiCalc and Sorcim’s leading SuperCalc were available on CP/M, with SuperCalc later competing in the MS-DOS environment. Autodesk’s AutoCAD was first released on this platform as well.
A broad selection of compilers and interpreters supported languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I, including early offerings from Microsoft. CP/M software frequently included installation utilities to adapt programs for different hardware configurations; for instance, Kaypro II users converted Xerox 820 software formats to their own disks. The availability of BASIC source code and minimal copy protection encouraged interoperability among various software packages—a hallmark expectation within the CP/M community.
Although limited graphics standards restricted gaming options on CP/M, numerous text-based games were ported successfully, including Telengard, Gorillas, Hamurabi, Lunar Lander, alongside interactive fiction titles like Zork and Colossal Cave Adventure. Infocom consistently released its games in CP/M format. Lifeboat Associates distributed user-developed freeware such as XMODEM for reliable modem file transfers and the outlining tool KAMAS.
Transient Program Area
In the original CP/M implementations for the 8080, 8085, and Z80 processors, the read/write memory region from hexadecimal address 0100 up to just below the BDOS start at 0006H is designated as the Transient Program Area (TPA), allocated for application use. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system design, with some reserving portions of address space for BIOS ROM or video memory. Techniques like bank switching allowed systems to expand the TPA by replacing ROM or video memory segments. CP/M 3.0 enhanced this approach by permitting parts of BDOS to reside within bank-switched memory areas.
Application debugging
CP/M featured the Dynamic Debugging Tool (DDT), a utility that allowed developers to inspect and modify memory and program components, as well as execute code incrementally—essential capabilities for debugging and software development.
Resident software
At first, CP/M did not support terminate-and-stay-resident (TSR) programs like those found in DOS. Nevertheless, developers were able to intercept operating system calls to enhance functionality, resulting in commercial desk accessories such as SmartKey, a keyboard enhancement tool. The release of CP/M 3 introduced Resident System Extensions (RSX), which could be loaded dynamically to provide more adaptable resident programs. Similarly, third-party solutions like Resident System Modules (RSMs) were retrofitted to CP/M 2.2 to offer comparable capabilities.
Installation of software
Although CP/M standardized disk and console input/output interfaces, most applications required installation procedures to fully utilize hardware features such as printers and terminals. Since device-specific control codes—like printer escape sequences—varied widely and were not centrally managed by the operating system, users had to run setup programs to configure these codes for each device. This installation process often needed repetition for different applications.
For instance, printer initialization commands had to be embedded within the software. When using applications like WordStar with multiple printers (for example, a fast dot-matrix printer alongside a high-quality daisy wheel), distinct versions of the software were necessary for each printer type, forcing users to reload the appropriate version when changing devices.
Disk formats
The 128-byte per sector, single-density, single-sided disk format developed for the IBM System/34 and IBM 3740 became the de facto standard 8-inch floppy disk format for CP/M. No universal 5.25-inch disk format existed for CP/M; manufacturers like Kaypro, Morrow Designs, Osborne, and others each implemented their own unique disk layouts. Most software was distributed using the Xerox 820 format, compatible with systems such as the Kaypro II; however, InfoWorld estimated in 1981 that approximately twenty-four formats were prevalent enough that software publishers needed to consider multiple formats to reach a broad audience. For example, JRT Pascal was released on several 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain systems, in addition to an 8-inch version. Ellis Computing supported both Heath disk formats plus sixteen other 5.25-inch variants including those used by TRS-80 CP/M systems. Distributors like Lifetree also adapted CP/M applications for numerous hardware platforms.
Format selection was influenced by system design choices and developer preferences. CP/M permitted customization of reserved areas, directory regions, and logical-to-physical sector mapping; nonetheless, there was no standardized mechanism for loading formatting parameters from disks created on different systems.
Nearly all CP/M machines equipped with 8-inch drives could read the IBM single-sided, single-density format. However, compatibility across CP/M computers varied significantly due to differences in floppy drive types and controllers—covering both 8-inch and 5.25-inch disks with distinctions such as hard versus soft sectoring, single or double density/sidedness, track counts, and sector arrangements. Conversion utilities facilitated reading disks from other machines when formats were sufficiently similar; for instance, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. Despite this flexibility, certain formats like 80-track or hard-sectored disks remained incompatible. Apple II users were constrained to Apple's GCR disk format and needed either Apple-formatted CP/M disks or serial transfers to obtain CP/M software.
The fragmented state of the CP/M ecosystem—which compelled distributors to maintain inventories of multiple disk formats or invest in duplicating across various formats—stood in contrast to the more unified IBM PC disk standards and contributed significantly to CP/M’s rapid decline after 1981.
Among the final noteworthy CP/M-capable computers was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its primary CPU. This system required either a Commodore 1571 or 1581 disk drive capable of handling soft-sectored 40-track Modified Frequency Modulation (MFM) disks.
The Sony SMC-70 was the pioneer computer featuring a 3.5-inch floppy drive running CP/M version 2.2. Other hardware supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX computers, and TRS-80 Model 4 (using Montezuma’s CP/M 2.2). Applied Engineering’s CP/AM for Apple II also enabled use of 3.5-inch disks and RAM disks through compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives for its CP/M environment before transitioning later to 3.5-inch drives.
File system
File names adhered to the 8.3 naming convention, allowing up to eight characters, followed by a period and a three-letter extension that indicated the file type (for example, .COM denoted executables, while .TXT represented text files). When entered at the command prompt, file names were automatically converted to uppercase; however, certain applications like MBASIC could generate lowercase file names that were not easily accessible via the command line.
Disk drives were designated by letters such as A or B. Files located on a particular drive were referenced by prefixing the drive letter and colon, for instance A:FILE.TXT. If no drive prefix was specified, the system defaulted to the current drive.
File sizes were expressed in units of 128-byte records, corresponding to physical disk sectors, as precise byte counts were generally unsupported. The current size of a file was maintained within its File Control Block (FCB). Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to mark the end-of-file; inserting this character within a file caused truncation at that point.
With the advent of larger removable and fixed disk drives, disk de-blocking algorithms were introduced to increase the number of disk blocks per logical allocation unit. This enabled handling bigger files but also raised the minimum allocation size from 1 KB (single-density) up to 32 KB for small files, which diminished disk space efficiency when storing many small files.
Prior to CP/M 3.0, file modification timestamps were not supported, though they became optional features in MP/M and later versions.
CP/M 2.2 did not support subdirectories, but instead used 16 numbered user areas for organizing files. Users could switch between these areas using the "User X" command (where X ranged from 0 to 15). These user areas provided separation of file access without security restrictions: files in USER 0 were accessible globally across all users, whereas other areas isolated files per user. This functionality was particularly useful on machines equipped with hard drives, allowing distinct workspaces for different functions—such as separating data entry from billing—without mixing files.
Graphics
Although early S-100 systems possessed graphics capabilities, CP/M itself lacked standardized graphics support until 1982 with the introduction of GSX. Due to limited memory resources, graphics were uncommon on 8-bit CP/M platforms, which primarily displayed simple ASCII art or utilized custom character sets. Certain models, including the Kaypro series and TRS-80 Model 4, supported block graphics accessible to assembler and BASIC programmers through CHR$. The TRS-80 Model 4 could render graphics at a resolution of 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Some vendors provided official CP/M enhancements derived from Digital Research's codebase, such as IMDOS tailored for the IMSAI 8080, itself a clone of the Altair 8800.
Compatible
A variety of independently developed CP/M-compatible operating systems emerged without incorporating Digital Research code, including:
- Cromemco CDOS by Cromemco
- MSX-DOS designed for MSX computers with compatibility for CP/M software
- Epson QX-10 offering either CP/M or compatible TPM-II/III environments
- British ZX Spectrum-compatible SAM Coupé, which optionally supported Pro-DOS (compatible with CP/M-2.2)
- Amstrad/Schneider CPC and PCW lines bundled with CP/M disk software
- Husky (computer) featuring DEMOS, a ROM-based loader supporting numerous CP/M applications
- ZSDOS, an alternative BDOS for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free and open-source CP/M 2.2-compatible OS initially developed without Digital Research code but later incorporated original DR components following approval from Lineo's president in 2022
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, offering CP/M 2.2 compatibility including BIOS, BDOS, CLI source code, original DR code, and hot-swappable 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 systems greatly extended capabilities, with examples like the multi-processor supporting TurboDOS standing out.
Eastern Bloc Variants
In the former Eastern Bloc, a variety of CP/M-80 adaptations were developed under numerous 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. Additionally, CP/M-86 versions such as SCP1700, CP/K, and K8918-OS were created. These operating systems were manufactured by entities like the East German VEB Robotron and other organizations.
Enduring Impact
Numerous features found in Microsoft Windows originate from its compatibility with MS-DOS, which itself was influenced by CP/M. The use of drive letter assignments and the 8.3 filename format in MS-DOS and initial Windows versions trace back to CP/M conventions. Wildcard characters (? and *) in Windows derive from CP/M's syntax rules, as do special filenames such as "PRN:" and "CON:" utilized for output redirection. In CP/M, floppy drives were identified by letters A and B; hard drives started at C:, a practice maintained in MS-DOS. The control character ^Z indicating end-of-file in text documents also has its roots in CP/M. Commands like DIR, REN/RENAME, TYPE (and ERA/ERASE in DR-DOS) were modeled on those from CP/M. File extensions such as .TXT and .COM continue to be widely recognized for denoting file types.
Between 1997 and 1998, Caldera made available certain CP/M 2.2 binaries along with source code under an open-source license. This allowed redistribution and modification of Digital Research's files related to the CP/M and MP/M families through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead's passing in 2001, the then-license holder Lineo updated and broadened the licensing terms later that year. To commemorate its 40th anniversary in October 2014, the Computer History Museum published early CP/M source code.
As of 2018, vintage computing enthusiasts alongside some niche commercial enterprises continue to maintain and develop systems primarily running CP/M 2.2 as their operating platform.
Related Topics
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently developed OS based on CP/M
- Eagle Computer
- IMDOS
- List of machines running CP/M
- MP/M
- MP/NET and MP/NOS
- Multiuser DOS
- Pascal/MT+
- SpeedStart CP/M
- 86-DOS
- Kenbak-1
Further Reading
- Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
- Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
- Z-System Corner: Tenth Anniversary of ZCPR, The Computer Journal, Issue 54
- The origin of CP/M's name
- 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 (explores IBM's selection of Microsoft DOS over Digital Research's CP/M for the IBM PC)
- CP/M FAQ, comp.os.cpm
External links
- The Unofficial CP/M Website – features available source code
- Gaby Chaudry's CP/M and Computing History Homepage – offers resources related to ZCPR
- CP/M Central Page – John C. Elliott's site with detailed technical content
- MaxFrame's Digital Research CP/M resource
- ↑ 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