GENCOM.COM
| Company type | Private |
|---|---|
| Industry | Software, Operating systems |
| 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 later revised to Control Program for Microcomputers, is a widely distributed operating system developed 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 files stored on magnetic disks and to execute programs directly from disk storage. Originally, it supported only single-tasking on 8-bit processor architectures with memory capacities up to 64 kilobytes; subsequent iterations introduced multi-user capabilities and transitioned to support 16-bit processor systems.
The architecture of CP/M is composed of three primary modules: the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for interfacing with hardware drivers, BDOS manages file operations and system-level services, while the CCP functions as the command-line interface, interpreting user commands and providing built-in command functionality.
CP/M established itself as the de facto standard operating system for microcomputers utilizing the S-100 bus, gaining widespread adoption in commercial environments throughout the late 1970s into the mid-1980s. By facilitating easier application portability across hardware from various manufacturers, it contributed significantly to expanding both hardware and software ecosystems. The platform encouraged software development innovation by enabling affordable CP/M-based microcomputers to empower independent developers who shared their programs within user communities. However, CP/M’s dominance waned following the introduction of the IBM PC in 1981, which propelled the popularity of DOS.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, which featured an 8-inch floppy-disk drive manufactured by Shugart Associates equipped with a custom controller.[1] The system was programmed using Kildall’s proprietary language, PL/M (Programming Language for Microcomputers), and drew conceptual inspiration from the TOPS-10 operating system used on the DECsystem-10 mainframe.[2]
CP/M became compatible with a wide range of computers built around the 8080 and Z80 processors. Among its early licensees was Gnat Computers, which acquired rights to distribute CP/M 1.0 in 1977 at a rate of $90 per microcomputer. The rapid increase in demand enabled Digital Research to grow its licensing income into substantial sums.[3]
John Pierce directed the development of CP/M version 2.0 in 1978 under Kildall’s guidance. Kathryn Strutynski joined Digital Research early in 1979 and played a vital role by debugging CP/M 2.0 as well as contributing to CP/M 2.2 and CP/M Plus enhancements. Other notable early contributors included Robert Silberstein and David K. Brown.[4][5]
The original meaning of CP/M was "Control Program/Monitor," highlighting its function as a resident monitor—a precursor concept to what would become an operating system.[6] However, trademark documentation filed in November 1977 redefined CP/M as "Control Program for Microcomputers."[7] This change aligned with prevailing industry naming trends such as Kildall’s own PL/M language and IBM’s CP/CMS operating system. The renaming initiative was part of efforts by Kildall, his wife, and business partner Dorothy McEwen,[8] aimed at commercializing both CP/M and the PL/M compiler under the Digital Research brand. Their objective was to position Digital Research as a leading name synonymous with "microcomputer," similar to how IBM and Microsoft later became associated with personal computing brands. Consequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[8]
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with InfoWorld suggesting the actual market size was likely greater due to sublicensing arrangements. A wide array of manufacturers developed CP/M-based computers aimed at various sectors, cementing CP/M's status as the definitive operating system for small computers. Even companies that maintained their own proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M support for their 8080/Z80 machines—contrasting with the 6502 CPU segment, which lacked a similar universal standard.[9] This dominance was largely attributed to CP/M's vast software ecosystem. The Xerox 820 incorporated CP/M to take advantage of thousands of available applications, although Xerox had to rely on third-party manuals due to Digital Research’s inadequate documentation.[10][11][12] By 1984, Columbia University utilized CP/M source code to generate Kermit protocol binaries compatible with more than a dozen different CP/M platforms.[13]
CP/M operated as a "software bus",[14][15] providing a standardized interface between hardware and software. This architecture allowed programs to be easily ported across different hardware platforms, typically requiring adjustments only for terminal and printer controls. However, some restrictions applied to software utilizing the Z80’s enhanced instruction set or those relying on machine-specific graphics routines often found in games.
Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware platform running CP/M.[16] By 1982, Digital Research announced that CP/M had been licensed for upwards of 450 distinct computer models.[17] Prominent CP/M systems encompassed 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 educational computers from Research Machines (with source code made publicly available for educational purposes), the BBC Micro outfitted with a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and later models of the ZX Spectrum. Additionally, CP/M 3 served as the operating system for the NIAT handheld device developed internally by A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Capabilities
Digital Research introduced MP/M in 1979, an extension of CP/M that supported multiple users by allowing several terminals to connect simultaneously to a single host computer, each with its own user session. Subsequent releases expanded compatibility to include 16-bit processors.
CP/M Plus
The last iteration of the 8-bit CP/M line, known as CP/M Plus (version 3), debuted in 1983 with BDOS engineered by David K. Brown. This version incorporated MP/M’s bank-switching memory management into a single-user system while maintaining backward compatibility with CP/M version 2.2 applications. It enabled access to memory beyond 64 KB on both 8080 and Z80 CPUs. Enhancements included file date stamping and integrated utilities such as a relocating assembler and linker. CP/M Plus was designed for advanced late-model 8-bit computers like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, and TRS-80 Model 4.
16-bit Variants
Digital Research created several CP/M adaptations tailored for 16-bit processors. The initial release was CP/M-86, designed for the Intel 8086 processor and launched in November 1981 under the supervision of Kathryn Strutynski. To differentiate it from the original 8-bit version, that earlier system was renamed CP/M-80.
CP/M-86 was initially expected to become the IBM PC’s default operating system. However, negotiations between Digital Research and IBM over licensing terms fell through, prompting IBM to select Microsoft’s PC DOS instead. Although CP/M-86 was eventually made available for the IBM PC after legal intervention, its adoption was hindered by a significantly higher price point ($240 compared to $40 for PC DOS).
The DEC Rainbow 100 system supported multiple operating environments, including CP/M-80 (for the Z80), CP/M-86, MS-DOS (for the 8088), or both CPUs simultaneously through CP/M-86/80. This approach allowed users to maintain their existing 8-bit software investments while transitioning to 16-bit platforms. Comparable dual-processor configurations were found in machines such as the CompuPro System 816 (running CP/M 8-16) and the Zenith Z-100.
Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 CPU. Initially developed using Pascal/MT+68k and subsequently ported to C, this version operated on EXORmacs systems and was considered by Atari for the ST line before they adopted GEMDOS. It was also deployed on SORD M68 and M68MX computers.
That same year saw the creation of CP/M-8000, a C-based port for the Zilog Z8000 processor, utilized on the Olivetti M20.
These 16-bit iterations necessitated recompiling existing applications; however, tools such as Digital Research’s XLT86 automated the conversion of Intel 8080 assembly source code into Intel 8086 format. This utility optimized code size and managed calling conventions to streamline migration from CP/M-80/MP-M80 to CP/M-86/MP-M86 environments. XLT86 was accessible on both CP/M-80 and VAX/VMS platforms.
Supersession by MS-DOS
During the early 1980s, approximately 2,000 applications were available for CP/M, positioning it as a likely standard OS for 16-bit machines. In 1980, IBM, acting on Bill Gates' recommendation, approached Digital Research to license CP/M for their forthcoming IBM PC. When Digital Research declined to sign a non-disclosure agreement promptly, IBM turned to Microsoft for an operating system solution instead.
MS-DOS incorporated many fundamental elements from CP/M, such as file management structures and drive letter assignments (A:, B:, etc.), but introduced an innovative File Allocation Table (FAT) file system. This resemblance facilitated porting popular CP/M programs like WordStar and dBase onto MS-DOS. Unlike CP/M, MS-DOS did not offer separate user areas on a single disk but compensated by exploiting greater memory resources (IBM PCs typically included at least 64 KB), enabling more built-in command-line commands that improved performance and usability on floppy disk systems.
Early IBM PC expansion cards like the Baby Blue allowed execution of 8-bit CP/M software not yet available under MS-DOS. Nonetheless, by 1982 industry assessments favored MS-DOS for its superior user experience and efficiency. Attempts to penetrate the home market with CP/M largely faltered due to elevated software pricing. By 1986, manufacturers such as Kaypro had discontinued CP/M-based models in favor of MS-DOS compatible machines, reflecting a widespread shift toward IBM PC compatibility. Consequently, CP/M rapidly declined in market presence and media coverage; prominent publications like Byte phased out their CP/M content within a few years following the IBM PC’s introduction.
Subsequent releases like CP/M-86 enhanced performance and compatibility with MS-DOS systems, eventually leading to rebranding efforts under names such as DOS Plus and later DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the original Digital Research console command processor (CCP). The project was initially spearheaded by a hobbyist collective called "The CCP Group," with Richard Conn as the lead developer.
The first iteration, ZCPR1, appeared on a disk distributed by SIG/M (Special Interest Group/Microcomputers) affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was released on 14 February 1983 in the form of ten disks from SIG/M and later updated to version 2.3. This version was also ported to 8080 code, allowing compatibility with 8080 and 8085 processors.
Richard Conn and Frank Gaude established Echelon Inc. to commercially market ZCPR while continuing its free distribution. On 14 July 1984, ZCPR3 was introduced via nine disks from SIG/M. This version could be compiled with limited features for the 8080 microprocessor, enabling operation on non-Z80 platforms. ZCPR3 incorporated enhancements such as shell environments, command aliases, input/output redirection, flow control structures, named directory support, search path functionality, customizable menus, password protection, and integrated online help.
Development ceased under Conn's direction in January 1987; afterward, Echelon engaged Jay Sage to advance the project, culminating in ZCPR 3.3. This release discontinued support for the 8080 and introduced numerous new features and utilities. Despite its popularity within the CP/M community, ZCPR was unable to halt the overall decline of the CP/M operating system.
Hardware model
A basic 8-bit CP/M configuration required:
- A computer terminal utilizing ASCII character encoding
- An Intel 8080/8085 or Zilog Z80 microprocessor
- NEC's V20 and V30 CPUs offered an 8080 emulation mode that allowed CP/M to run on PC-DOS/MS-DOS hardware; any IBM PC-compatible clone could operate CP/M-86
- A minimum of 16 KB RAM beginning at memory address zero
- A mechanism to load the initial sector from boot media
- At least one floppy disk drive
Officially, Digital Research’s CP/M supported only the Intel 8080 Development System; however, various manufacturers adapted CP/M to their unique hardware setups. Since the Z80 processor maintained compatibility with the 8080 instruction set, many systems based on the Z80 ran CP/M through BIOS-level code written specifically for the Z80 along with dedicated applications.
Digital Research collaborated with Zilog and American Microsystems to create Personal CP/M—a ROM-resident operating system designed for inexpensive machines lacking disk drives. This OS first appeared in Sharp’s MZ-800 cassette-based computer with optional disk support and exploited enhanced Z80 instructions rather than preserving full backward compatibility with the 8080. American Microsystems developed the S83 microprocessor featuring embedded ROM containing OS and BIOS code as well as logic to interface with dynamic RAM; bulk pricing was approximately $32 per chip.
Most systems implemented a minimal bootstrap loader stored in ROM that utilized bank switching or code injection techniques to satisfy the requirement that boot code reside at address zero during startup. Certain machines required users to manually enter memory contents via front-panel switches upon powering on.
The CP/M character set was based on standard 7-bit ASCII; manufacturers varied in how they utilized the additional upper half of the byte (128 characters), sometimes including Greek alphabets or underline characters. For instance, WordStar used the eighth bit as a marker for word termination. International editions often replaced specific ASCII characters according to ISO 646 standards instead of extending beyond seven bits.
Components
When CP/M is active in memory, it consists of three main elements:
- Basic Input/Output System (BIOS),
- Basic Disk Operating System (BDOS),
- Console Command Processor (CCP).
Both the BIOS and BDOS remain resident in memory, while the CCP stays resident until replaced by an application; once that application finishes, the CCP reloads automatically. Standard utility commands are stored as transient programs in .COM files on disk.
The BIOS manages hardware peripherals except for the CPU and main memory, overseeing character I/O and disk sector interactions. The BDOS operates the CP/M file system and provides higher-level I/O abstractions such as redirection, building on top of the BIOS services. The CCP interprets user input commands, executing internal commands like DIR or ERA or loading external transient programs such as PIP.COM or STAT.COM. Third-party software typically runs as transient commands.
Across different CP/M versions, the BDOS, CCP, and standard transient utilities remain largely unchanged; only the BIOS is modified to suit particular hardware platforms.
Expanding system memory necessitates reinstalling CP/M so that transient programs can utilize the added space. The MOVCPM tool adjusts object code by patching jump and call instruction addresses to relocate code segments within memory. This modified version can be saved onto a new disk, enabling applications to access the increased memory area. The OS components are stored in designated disk sectors for booting purposes; a ROM-based bootloader loads the operating system from drive A: during startup.
By contemporary measures, CP/M appears rudimentary due to its strict limitations on program size. Early releases lacked mechanisms to detect disk changes, risking data corruption if disks were swapped without reloading directory information. Starting with version 1.1, CP/M introduced error signals when write operations occurred prior to directory updates, preventing accidental overwrites but requiring a system reboot to proceed.
The majority of CP/M’s complexity resides within BDOS, with CCP and transient commands being relatively simple. Porting BIOS routines to new hardware platforms allowed the entire OS to operate on diverse machines, significantly reducing development time and contributing to CP/M’s broad adoption. This approach represented an early example of hardware abstraction layers at a time when most operating systems were designed for single hardware environments without layered architectures.
Console Command Processor
The Console Command Processor (CCP) manages keyboard input and terminal output, supporting both printing devices and video terminals. Users enter commands through the command line, where the prompt typically displays the current default drive (for example, A>). Changing the default drive is accomplished by typing its letter followed by a colon (e.g., B:), which updates the prompt accordingly.
CP/M’s command-line interface was inspired by Digital Equipment Corporation’s Concise Command Language used in systems such as RT-11 and OS/8. Commands consist of keywords followed by parameters separated by spaces or special delimiters. Internal commands execute directly within the CCP; if a command is not internal, CCP searches for corresponding executable files ("transient" programs) on the active drive and user area, loading them along with any parameters. After execution, if the transient program overwrites the CCP in memory, BDOS reloads it to maximize available space for these programs.
Several command names derive from legacy utilities—for instance, PIP stands for Peripheral Interchange Program and is used for copying files. Parameter syntax varies across different utilities without a unified option character.
Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Common transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands were enhanced with additions like DIRSYS/DIRS for system file listing, ERASE for file deletion, RENAME/REN for renaming files, TYPE/TYP to display ASCII content, and USER/USE to switch user numbers. This version also supports abbreviated forms of built-in commands. The set of transient commands expanded to include COPYSYS, DATE, DEVICE, GET, HELP, HEXCOM, INITDIR, LINK, MAC, 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 output, and printing functions. Applications interact with BDOS by loading specific function codes and parameters into processor registers, then executing a call to a fixed memory location. This standardized method ensures consistent program operation 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 on the console and disk sector read/write operations. While BDOS manages some disk buffering, it depends on BIOS for hardware-specific disk control due to differences in sector sizes among disk formats.
Customization of BIOS is essential given the diversity of hardware—ranging from integrated video adapters to terminal interfaces, differing UART chips for serial communication, and distinctions between memory-mapped I/O and 8080 I/O address spaces. BIOS provides a uniform interface through standard entry points for character handling and disk access. Since BIOS implementations often lack comprehensive modem support, CP/M applications utilizing modems generally incorporate user-supplied overlays to manage serial port communications.
Applications
CP/M served as the initial environment for numerous pioneering software titles: WordStar (word processing), dBase (database management), KAMAS and Out-Think (outlining tools), Turbo Pascal (the precursor to Borland Delphi), Multiplan (early spreadsheet software preceding Microsoft Excel), VisiCalc (the first spreadsheet program), SuperCalc (leading CP/M spreadsheet), and AutoCAD (computer-aided design software). A broad range of compilers and interpreters for languages like BASIC, FORTRAN, PL/I, alongside early Microsoft products, were also available.
To accommodate diverse hardware configurations, many CP/M applications included installers enabling adaptation across systems. For instance, users of Kaypro II could convert disks from Xerox 820 format to Kaypro’s native format. The availability of open-source BASIC code coupled with minimal copy protection facilitated software interoperability; disks that failed to read typically indicated non-CP/M formats.
Graphical capabilities were limited, restricting video game development; however, numerous text-based games were ported to CP/M platforms including Telengard, Gorillas, Hamurabi, Lunar Lander, as well as interactive fiction titles like Zork and Colossal Cave Adventure. Infocom consistently supported CP/M by releasing versions of its text adventures. Lifeboat Associates distributed user-generated software such as XMODEM for dependable modem file transfers and the outline processor KAMAS.
Transient Program Area
Within the original CP/M implementations for the 8080, 8085, and Z80 processors, the area of read/write memory extending from address 0100 hexadecimal up to just before the address stored at 0006H (which marks the lowest BDOS entry point) is designated as the Transient Program Area (TPA) allocated for application programs. Although these CPUs could address up to 64 KB of memory, the size of the TPA was subject to system design constraints. Some systems reserved large portions of address space for BIOS ROM or video memory, thereby reducing available TPA. To expand TPA capacity, bank switching was frequently employed by swapping out ROM or video memory segments. Additionally, CP/M 3.0 introduced support for locating portions of BDOS within bank-switched memory.
Debugging application
CP/M featured a Dynamic Debugging Tool, commonly referred to as DDT, which allowed users to inspect and modify memory and program components, as well as execute programs one instruction at a time.
Resident programs
At its inception, CP/M did not support terminate-and-stay-resident (TSR) utilities like those found in DOS. Nevertheless, developers could hook into operating system calls to enhance capabilities, leading to the creation of auxiliary desk accessories such as SmartKey, a keyboard utility that mapped strings to specific keys. With the arrival of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling system enhancements without the use of transient programs. Comparable third-party solutions, known as Resident System Modules (RSMs), were retroactively adapted for CP/M 2.2.
Software installation
Although CP/M abstracted hardware for disk and console input/output, most applications required installation procedures to accommodate printer and terminal features. Device control typically depended on manufacturer- and model-specific escape sequences, necessitating users to run setup programs to select or tailor these codes. This configuration had to be repeated individually for each software package because no centralized operating system service managed device settings.
For instance, printer initialization commands needed embedding within applications. When using software like Wordstar with multiple printers—such as a rapid dot-matrix printer versus a slower daisy wheel—distinct versions were necessary, and users had to load the version corresponding to the printer in use.
Disk formats
The CP/M standard 8-inch floppy disk format was based on the 128-byte sector, single-density, single-sided layout originally used by IBM System/34 and IBM 3740. No universal 5.25-inch disk format existed for CP/M; manufacturers like Kaypro, Morrow Designs, Osborne, among others employed proprietary disk formats. Most software distribution relied on the Xerox 820 format, compatible with systems such as the Kaypro II. In 1981, InfoWorld estimated around two dozen disk formats were prevalent enough that software developers had to support multiple formats to reach a broad audience. For example, JRT Pascal was available on various 5.25-inch disks tailored for North Star, Osborne, Apple, Heath/Zenith hard and soft sector drives, Superbrain, plus an 8-inch version. Ellis Computing supported Heath formats along with sixteen other 5.25-inch variants including TRS-80 CP/M adaptations. Distributors like Lifetree also ported CP/M applications across different platforms.
CP/M permitted customization of reserved space and directory areas on disks, as well as logical-to-physical sector mapping; however, no standardized approach existed for loading configuration parameters from disks formatted on other systems. While nearly all CP/M setups with 8-inch drives could read the IBM single-sided, single-density format, compatibility between machines heavily depended on the type of floppy drive and controller used due to wide variations—hard or soft sectored disks, single or double density/sided media, differing track counts and sector arrangements.
By 1982, the dominant format for CP/M software distribution became soft-sectored, single-sided 40-track 5.25-inch disks utilized by consumer-level computers such as Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. Disk translation utilities enabled reading disks from similar formats across these machines; for instance, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. Nevertheless, disks formatted with 80 tracks or hard sectored layouts remained unreadable. Apple II users were restricted to Apple's GCR format and had to acquire CP/M software either on Apple-formatted disks or transfer it via serial connections.
This fragmented landscape of CP/M disk formats—forcing distributors either to maintain inventories of multiple disk types or invest in multi-format duplication equipment—stood in contrast to the more uniform IBM PC disk standards and contributed significantly to CP/M’s swift decline after 1981.
One of the final widely recognized CP/M-compatible computers was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its primary 6502-based CPU. Executing CP/M on this machine required a 1571 or 1581 floppy drive capable of handling soft-sectored 40-track MFM disks.
The earliest computer equipped with a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems supporting CP/M with 3.5-inch floppy disks included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (via Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also provided support for both 3.5-inch disks and RAM disks when used with compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning later to 3.5-inch media.
File system
File naming followed the "8.3" convention, allowing up to eight characters before a period and an extension of up to three characters denoting the file type (for instance, .COM for executable files and .TXT for plain text). When entered at the command line, filenames were automatically capitalized; however, certain applications like MBASIC could generate lowercase filenames that were not readily accessible through the command prompt.
Disk drives were designated by letters such as A or B, with files addressed by prefixing the drive letter and colon, e.g., A:FILE.TXT. If no drive letter was specified, commands operated on the currently selected default drive.
File sizes were quantified in 128-byte records, equivalent to disk sectors, as precise byte-level sizing was generally unsupported. Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, which affected how files were processed and truncated.
The advent of larger removable and fixed disks brought about disk de-blocking, increasing the count of disk blocks per allocation unit. Although this enabled support for bigger files, it also raised the minimum allocatable file size from 1 KB on single-density disks to as much as 32 KB on newer drives, resulting in inefficient storage usage for many small files.
CP/M version 2.2 did not include file modification timestamps; however, this capability was optionally available in MP/M and CP/M 3.0.
While the file system did not incorporate subdirectories, it provided 16 numbered user areas for organizing files. Users could switch between these areas using the "USER X" command (where X ranges from 0 to 15), with USER 0 set as the default. Files stored in other user areas remained isolated from one another, whereas those in USER 0 were accessible to all users if properly referenced by path. This mechanism was designed to facilitate file management across various tasks or users on a single machine, particularly beneficial on systems equipped with hard drives rather than smaller floppy disks.
Graphics
Despite early availability of graphics-capable S-100 systems, CP/M did not offer standardized graphics support until the introduction of GSX in 1982. The limited memory of 8-bit CP/M machines restricted graphics capabilities mostly to rudimentary ASCII art or specialized character sets. Certain models like the Kaypro series and the TRS-80 Model 4 provided block graphics accessible via assembler and BASIC programming. The TRS-80 Model 4 could deliver resolutions up to 640×240 pixels when equipped with an optional high-resolution graphics board.
Official
Some vendors created official CP/M enhancements derived from Digital Research’s source code, including IMDOS for the IMSAI 8080, an Altair 8800 clone.
Compatible
Numerous independently developed CP/M-compatible operating systems also emerged, such as:
- Cromemco CDOS developed by Cromemco
- MSX-DOS, designed for MSX computers with compatibility for CP/M applications
- Epson QX-10 offering either CP/M or compatible TPM-II/TPM-III
- The British ZX Spectrum-compatible SAM Coupé, which featured an optional Pro-DOS OS compatible with CP/M-2.2
- Amstrad/Schneider CPC and PCW product lines bundled CP/M disk packs
- The Husky (computer) utilized DEMOS, a ROM-based loader supporting numerous CP/M programs
- ZSDOS, a replacement BDOS for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free open-source OS compatible with CP/M 2.2 initially without Digital Research code but later incorporating original components after authorization from Lineo’s president in 2022
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, providing BIOS, BDOS, CLI source code, original Digital Research code, and modular hot-swappable OS parts compatible with CP/M 2.2
- IS-DOS developed by Intelligent Software for the Enterprise system
- VT-DOS also by Intelligent Software for the Videoton TV Computer
Improvements
Certain CP/M-compatible operating systems significantly expanded the original capabilities, with examples such as TurboDOS, which supported multi-processor configurations.
Eastern Bloc Variants
Within the former Eastern Bloc, numerous CP/M-80 versions were developed under various titles 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 adaptations like SCP1700, CP/K, and K8918-OS were produced. These systems were primarily manufactured by East German companies such as VEB Robotron and other local producers.
Enduring Influence
Several features present in Microsoft Windows trace their origins to MS-DOS compatibility efforts, which themselves aimed to maintain alignment with CP/M standards. The use of drive letters and the 8.3 filename format in MS-DOS and early Windows versions are derived from CP/M conventions. Wildcard symbols (? and *) found in Windows command lines have their roots in CP/M's design. Device redirection reserved names like "PRN:" and "CON:" also originate from CP/M practices. In CP/M, floppy drives were assigned letters A and B; with the introduction of hard disk drives, the letter C was designated—this tradition continues today as seen in the C:\> prompt on MS-DOS and Windows systems. The control character ^Z, used to signify the end-of-file in text documents, is another legacy inherited from CP/M. Many DOS commands such as DIR, REN/RENAME, TYPE (and ERA/ERASE in DR-DOS) were modeled after their CP/M counterparts. File extensions like .TXT and .COM remain widely used across various operating environments.
Between 1997 and 1998, Caldera made available some CP/M 2.2 executable files and source code under an open source license. This enabled redistribution and modification of Digital Research's CP/M and MP/M-related materials via Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead's passing in 2001, Lineo—then holding these rights—broadened the licensing terms later that year. In October 2014, to mark the 40th anniversary of CP/M, the Computer History Museum published early versions of its source code.
As of , enthusiasts within vintage computing circles and select small-scale commercial entities continue to develop and maintain systems running primarily CP/M version 2.2.
See also
- Amstrad CP/M Plus character set
- CPMulator
- CP/NET and CP/NOS
- Cromemco DOS, an independently derived OS 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 (details IBM's choice of Microsoft DOS over Digital Research's CP/M for IBM PC)
- CP/M FAQ, comp.os.cpm
External links
- The Unofficial CP/M Website (established by Tim Olmstead) – Features source code archives
- Gaby Chaudry's CP/M and Computing History Homepage – Contains resources related to ZCPR
- CP/M Central Page – John C. Elliott's site offering detailed technical insights
- 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 namedjohnson - ↑ Freiberger, Paul; Michael Swaine (2000). Fire in the Valley: The Making of the Personal Computer. McGraw-Hill. p. 175. ISBN 0071358927 – via the Internet Archive.
- ↑ 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 namedStrutynski_2010 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedCPM.NYT83 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1993 - ↑ 8.0 8.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall.NYT - ↑ 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. ISBN 978-0905104188.
- ↑ 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 namedbunnell19820203 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedlibes198206