Personal CP/M-80
| Company type | Private |
|---|---|
| Industry | Software |
| Founded | 1974 |
| Founder | Gary Kildall |
| Headquarters | United States |
Key people | Gary Kildall, John Pierce, Kathryn Strutynski, Dorothy McEwen |
| Products | CP/M operating system, PL/M compiler |
CP/M, initially an acronym for Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely used operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. As a disk operating system, CP/M was designed to manage file storage on magnetic media and facilitate program execution from disks. While early iterations supported only single-tasking on 8-bit processor architectures with a maximum of 64 kilobytes of RAM, subsequent releases introduced multi-user functionality and adapted to 16-bit processor environments.
The architecture of CP/M is composed of three main modules: the Basic Input/Output System (BIOS), responsible for hardware interface drivers; the Basic Disk Operating System (BDOS), which oversees the file system and provides services to applications; and the Console Command Processor (CCP), serving as the command interpreter with integrated commands.
CP/M emerged as the de facto operating system standard for microcomputers utilizing the S-100 bus, gaining widespread acceptance in business settings from the late 1970s until the mid-1980s. Its compatibility across various manufacturers’ hardware simplified software portability, thereby expanding both hardware and software ecosystems. The proliferation of economically accessible CP/M-compatible machines encouraged software innovation by independent developers and user communities. However, CP/M's prominence diminished following the introduction of the IBM PC in 1981, along with its accompanying DOS operating system.
Early history
In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, employing an 8-inch floppy-disk drive from Shugart Associates equipped with a custom controller.[1] The system was programmed using Kildall’s own language, PL/M (Programming Language for Microcomputers).[2] CP/M drew inspiration from the TOPS-10 operating system found on the DECsystem-10, which Kildall had experience with.[3]
CP/M was compatible with numerous machines powered by the 8080 and Z80 processors. One of its early licensees was Gnat Computers from San Diego, which acquired rights to CP/M 1.0 in 1977 for $90. Rapid growth in demand soon allowed Digital Research to increase licensing fees substantially.[4]
Development of CP/M 2.0 was overseen by John Pierce in 1978 under Kildall’s leadership. Kathryn Strutynski, Digital Research’s fourth employee and a colleague of Kildall at NPS, played a key role in debugging CP/M 2.0 and contributed further to versions 2.2 and CP/M Plus. Other notable early contributors included Robert Silberstein and David K. Brown.[5][6]
Although originally denoting "Control Program/Monitor",[7] CP/M was officially trademarked as "Control Program for Microcomputers" in 1977.[8] This renaming aligned with naming trends at the time, such as Kildall’s PL/M language and IBM’s CP/CMS operating system. The rebranding was part of a strategic effort by Kildall, his wife, and business partner Dorothy McEwen to market CP/M alongside the PL/M compiler through Digital Research, aiming to establish their brand as synonymous with microcomputing—much like IBM and Microsoft would later do with "personal computer". Consequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[9]
Early Achievements
By September 1981, Digital Research had distributed more than CP/M licenses, with the actual market presence likely greater due to sublicensing arrangements. Numerous manufacturers developed CP/M-based computers targeting a wide range of sectors; InfoWorld recognized CP/M as becoming the definitive small-computer operating system. Even companies that maintained proprietary operating systems, such as Heath/Zenith (which used HDOS), provided CP/M as an alternative for their 8080/Z80 hardware platforms, contrasting with the 6502 CPU segment that lacked a similar universal standard.[10] The appeal of CP/M stemmed largely from its broad software ecosystem. The Xerox 820, for instance, adopted CP/M to take advantage of the extensive library of compatible applications.[11] To address Digital Research’s inadequate documentation, Xerox supplied a Howard W. Sams CP/M manual, which InfoWorld criticized as incomplete and poorly organized.[12]
By 1984, the team at Columbia University utilized the same source code to compile Kermit binaries for more than a dozen CP/M variants, along with two generic builds.[13] CP/M was characterized as a "software bus",[14][15] facilitating standardized communication between various programs and hardware components.[16] Software was generally portable across different machines, often requiring only modifications to terminal and printer control sequences. This cross-platform capability significantly enhanced CP/M’s popularity and software availability relative to operating systems restricted to single hardware manufacturers. However, some drawbacks existed, such as applications exploiting the Z80’s extended instruction set that were incompatible with the 8080/8085 processors and machine-specific graphics routines prevalent in gaming software.[10]
Bill Gates noted that the Apple II equipped with a Z-80 SoftCard stood out as the most widely used CP/M hardware platform.[17] By 1982, Digital Research announced that CP/M had been licensed for use on over 450 different computer models.[18] Prominent systems running CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and various MSX machines. The Amstrad PCW was likely the best-selling system compatible with CP/M. In the United Kingdom, CP/M was available on educational computers from Research Machines, whose source code was published as a teaching resource, and on the BBC Micro when fitted with a Z80 co-processor. Additionally, it operated on the Amstrad CPC series, Commodore 128, TRS-80, and later versions of the ZX Spectrum. CP/M 3 powered the NIAT handheld device created for internal use by A. C. Nielsen, featuring 1 MB of solid-state storage.
Multi-user Capability
Digital Research introduced MP/M in 1979 as a multi-user extension of CP/M. MP/M allowed several users to access a single computer simultaneously through multiple terminals, each providing its own display and keyboard interface. Subsequent releases expanded support to include 16-bit processor architectures.
CP/M Plus
Released in 1983, CP/M Plus (also known as CP/M 3) was the last 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 software. It enabled the utilization of memory beyond the 64 KB limit on 8080 or Z80 processors. Enhancements included support for file date stamping as well as integrated relocating assembler and linker utilities. CP/M Plus found adoption in later 8-bit computers such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, and the Radio Shack TRS-80 Model 4.
16-bit versions
Digital Research created several CP/M variants designed for 16-bit processors.
The earliest was CP/M-86, developed for the Intel 8086 CPU and launched in November 1981 under project manager Kathryn Strutynski. To distinguish it from its predecessor, the original 8-bit CP/M was renamed CP/M-80.
CP/M-86 was initially expected to become the IBM PC’s default operating system; however, licensing conflicts led IBM to collaborate with Microsoft instead, resulting in PC DOS based on 86-DOS. Although CP/M-86 was eventually offered as an alternative on IBM PCs following legal intervention, it struggled to compete due to its significantly higher price ($240 compared to PC DOS’s $40).
The Digital Equipment Corporation’s Rainbow 100 supported multiple operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or configurations combining both processors to run CP/M-86 and CP/M-80 simultaneously. This approach allowed users to retain their existing 8-bit software investments while transitioning to a 16-bit environment. Comparable dual-processor architectures appeared in systems like the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.
Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 processor. Originally coded in Pascal/MT+68k and later ported to C, this variant operated on EXORmacs machines and was considered for use in the Atari ST before Atari selected GEMDOS instead. It was also deployed on SORD M68 series computers.
Also developed in 1982 was CP/M-8000 for the Zilog Z8000 CPU utilized in the Olivetti M20, with its codebase written in C.
These 16-bit editions necessitated recompiling applications. To facilitate this transition, Digital Research provided tools such as XLT86, which automatically converted Intel 8080 assembly code into Intel 8086 assembly language while optimizing code size and adjusting calling conventions. This eased migration from CP/M-80/MP-M80 to CP/M-86/MP-M86 platforms. XLT86 was accessible on both CP/M-80 and VAX/VMS systems.
Displacement by MS-DOS
By the early 1980s, approximately 2,000 applications were available for CP/M, leading many to anticipate it as the dominant OS for 16-bit machines. In 1980, IBM approached Digital Research to license an updated CP/M version for their forthcoming IBM PC; however, talks collapsed due to disagreements over a signed non-disclosure agreement. Consequently, IBM engaged Microsoft to supply an operating system.
MS-DOS borrowed numerous foundational elements from CP/M, including file management structures and drive letter assignments (A:, B:, etc.). Its principal advancement was introducing the FAT file system, which facilitated porting popular CP/M programs such as WordStar and dBase. Additionally, MS-DOS took advantage of larger memory capacities—typically starting at 64 KB on IBM PCs compared to CP/M’s minimum of 16 KB—allowing more built-in commands within its command-line interface for quicker and more user-friendly operation on floppy disk-based systems.
Early IBM PC add-ons like the Baby Blue card enabled running legacy 8-bit CP/M software; nevertheless, industry evaluations favored MS-DOS due to its superior speed and ease of use. By 1984, high software expenses caused CP/M to lose traction in the home computing market. By 1986, manufacturers such as Kaypro had discontinued CP/M-based machines to concentrate on MS-DOS platforms. As microcomputing gravitated towards IBM-compatible hardware, CP/M rapidly declined in market presence and media attention, with major publications ceasing coverage by the late 1980s.
Subsequent iterations of CP/M-86 enhanced performance and compatibility with MS-DOS environments, eventually being rebranded as DOS Plus and later evolving into DR-DOS.
ZCPR
ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for the standard Digital Research console command processor (CCP). The initial development was carried out by an enthusiast collective known as "The CCP Group," headed by Richard Conn.
The first version, 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 as a set of ten disks from SIG/M and later updated to version 2.3, which included a variant compiled for the 8080 processor to support a wider range of hardware.
Richard Conn and Frank Gaude established Echelon Inc. to commercialize the subsequent release while maintaining its availability as free software. On 14 July 1984, ZCPR3 was introduced via nine disks from SIG/M. This edition featured code that could be compiled for 8080-based systems, albeit with reduced functionality compared to the Z80 version. Notable enhancements in version 3 included support for command shells, user-defined aliases, input/output redirection, flow control mechanisms, named directory shortcuts, customizable menus, password protection, and integrated online help.
Development halted in January 1987 when Conn stepped away, prompting Echelon to bring in Jay Sage to continue work on the project. This collaboration produced ZCPR 3.3, which discontinued support for the 8080 platform but incorporated numerous additional features and utilities. Despite its popularity within the CP/M community, ZCPR was unable to halt the overall decline of CP/M systems.
Hardware model
A basic CP/M system operating on an 8-bit architecture required the following elements:
- A computer terminal utilizing ASCII character encoding
- A microprocessor such as the Intel 8080/8085 or Zilog Z80
- NEC’s V20 and V30 processors provided an 8080-emulation mode enabling CP/M execution on PC-DOS/MS-DOS hardware
- Minimum of 16 KB RAM beginning at memory address zero
- A bootstrap mechanism capable of loading the first sector from a floppy disk
- At least one floppy disk drive
While Digital Research officially supported only the Intel 8080 Development System, numerous manufacturers adapted CP/M to fit their specific hardware designs. Due to its compatibility with 8080 machine code, CP/M ran effectively on Z80-based machines, many of which had BIOS and software optimized specifically for the Z80 processor.
In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system aimed at cost-effective machines lacking disk drives. This OS first appeared in devices like the Sharp MZ-800 cassette-based system with optional floppy drives and took advantage of enhanced Z80 instructions rather than maintaining full backward compatibility.
American Microsystems introduced the S83 microprocessor: a Z80-compatible chip that integrated an 8 KB ROM containing both OS and BIOS along with circuitry for dynamic RAM interfacing. This chip was priced at approximately $32 per unit when purchased in volume.
Most CP/M systems relied on a minimal ROM bootloader combined with techniques such as bank switching or bus injection to load executable code at address zero. This approach was necessary because while the 8080 CPU requires boot code at this address, CP/M expects RAM there during operation. In some cases, users had to manually input bootstrap code using front-panel controls.
The character set used by CP/M was based on 7-bit ASCII; however, manufacturers utilized the extended 8-bit range differently—for instance, Kaypro employed it for Greek characters, Osborne machines used it for underlining text, and WordStar designated it as an end-of-word marker. Many international versions replaced certain ASCII characters with localized symbols following ISO 646 standards rather than extending beyond seven bits.
Components
When CP/M is active in memory, it consists of three main parts:
- the Basic Input/Output System (BIOS),
- the Basic Disk Operating System (BDOS),
- and the Console Command Processor (CCP).
Both the BIOS and BDOS remain resident in memory, whereas the CCP stays loaded unless an application overwrites it, in which case it reloads automatically afterward. Standard utility commands that are transient reside as .COM files on disk.
The BIOS manages hardware devices excluding the CPU and main memory, performing tasks such as character input/output and reading or writing disk sectors. Built atop the BIOS, the BDOS handles the CP/M file system and input/output abstractions like redirection. The CCP interprets user commands, executing internal commands (for example, DIR to display directories or ERA to remove files) or launching transient executable programs (such as PIP.COM for file copying, STAT.COM for system status). Third-party software operates as transient commands.
While BDOS, CCP, and standard transient utilities remain largely unchanged across CP/M iterations, the BIOS is tailored to specific hardware platforms.
Expanding system memory requires reinstalling CP/M so transient applications can utilize the added space. This is accomplished using a utility called MOVCPM, which relocates object code by modifying jump and call addresses to fit new memory locations. The adapted version can then be saved onto a different disk, enabling programs to access the increased memory. After installation, BIOS, BDOS, and CCP occupy reserved disk sectors used during boot-up. At startup, a bootloader—often embedded in firmware—loads the operating system from drive A:.
By contemporary standards, CP/M appears rudimentary due to strict program size constraints. Earlier editions did not detect disk changes automatically, leading to potential data loss if disks were swapped without refreshing directory data. Subsequent versions introduced error notifications to prevent overwriting but still required a reboot to recover.
The majority of CP/M’s complexity lies within BDOS and, to a lesser extent, in CCP and transient commands. Porting simple BIOS routines to new hardware platforms allowed the entire OS to function with minimal effort, significantly shortening development cycles and contributing to CP/M’s broad adoption. This early form of hardware abstraction was groundbreaking at a time when operating systems were generally designed for single hardware configurations.
Console Command Processor
The Console Command Processor (CCP) manages keyboard input and terminal output within CP/M. It supports both printing and video terminals by presenting a command prompt (such as A>) that reflects the currently selected default disk drive. Users can change drives by typing the drive 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 found in systems like RT-11 and OS/8. Commands consist of keywords combined with parameters separated by spaces or special characters. Internal commands execute directly within the CCP; otherwise, transient executable files are loaded from disk into memory for execution, allowing applications to utilize more memory space.
Several command names have historical origins—for instance, PIP stands for Peripheral Interchange Program and is used for file copying. Parameter syntax varies among utilities without a unified option character convention.
Examples of built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Common transient commands include ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.
In CP/M Plus (Version 3), built-in commands are enhanced with additions such as DIR, DIRSYS / DIRS for SYS attribute files, ERASE/ERA, RENAME/REN, TYPE/TYP, and USER/USE for changing user numbers. These built-in commands can be abbreviated by users. Transient commands available in CP/M 3 include COPYSYS, DATE, DEVICE, DUMP, ED, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, and XREF.
Basic Disk Operating System
The Basic Disk Operating System (BDOS) is responsible for managing tasks such as file access, console display output, and printing functions. Applications interact with BDOS by placing function codes and relevant parameters into processor registers before invoking a fixed memory location. This fixed entry point guarantees consistent software operation across various hardware platforms.
Basic Input Output System
The Basic Input Output System (BIOS) delivers the fundamental low-level services for CP/M, including character input/output and reading or writing disk sectors. Prior to CP/M version 3.0, the BIOS was designed around a standard 128-byte sector size typical of single-density 8-inch floppy disks; handling larger sector sizes found on 5.25-inch drives required BIOS implementations customized for each hardware model to manage buffering and disk control.
Custom BIOS implementations accommodated a wide array of hardware differences—ranging from integrated video displays versus terminal interfaces, different UART chips controlling serial communication ports, varying port address assignments, to distinctions between memory-mapped I/O and 8080 I/O space. By standardizing these variations through BIOS entry points, CP/M achieved extensive compatibility with diverse hardware. Since BIOS support for serial communications was often minimal or absent, modem-related functionalities typically depended on user-installed overlays tailored to specific serial port configurations.
Applications
CP/M served as the platform for early business applications such as WordStar (word processing) and dBase (database management). Initial outliner programs like KAMAS and Out-Think were developed on CP/M before being adapted for MS-DOS. Programming environments including Turbo Pascal (which preceded Borland Delphi) and Multiplan (a precursor to Microsoft Excel) originally appeared on CP/M prior to their MS-DOS releases. The pioneering spreadsheet VisiCalc, along with Sorcim’s SuperCalc—the leading spreadsheet on CP/M—significantly contributed to its commercial success. Autodesk’s AutoCAD also debuted on the CP/M platform.
A broad spectrum of compilers and interpreters supported languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I, including early Microsoft offerings. CP/M software often incorporated installers that adapted applications to different hardware configurations; for instance, Kaypro II users converted Xerox 820 disk formats to their native format to ensure compatibility. The availability of BASIC source code combined with weak copy protection encouraged software sharing, while cross-application file compatibility was expected since nonstandard disk formats were incompatible within CP/M environments.
Although limited graphical capabilities restricted video game development, numerous text-based games were ported to CP/M including Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction titles like Zork and Colossal Cave Adventure. Infocom consistently released CP/M versions of its text adventures. Lifeboat Associates distributed user-created freeware such as XMODEM for reliable file transfers over modems. The outline processor KAMAS was another notable application native to CP/M.
Transient Program Area
In the original CP/M implementations for the 8080, 8085, and Z80 processors, the read/write memory region extending from address 0100 hexadecimal up to just below address 0006H (the lowest BDOS entry point) was designated as the Transient Program Area (TPA), where application programs executed. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system architecture since some machines allocated substantial address space for BIOS ROM or video memory. To increase available TPA memory, bank switching was frequently employed by swapping out ROM or video memory segments. Additionally, CP/M 3.0 introduced the capability for portions of the BDOS itself to be located in bank-switched memory regions.
Application debugging
CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory and program segments, as well as execute programs one instruction at a time.
Resident utilities
In its initial versions, CP/M did not support terminate-and-stay-resident (TSR) programs similar to those found in DOS. Nonetheless, developers could intercept operating system calls to enhance functionality, resulting in auxiliary desk accessory utilities such as SmartKey, a keyboard tool that mapped strings to keys. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling extensions to the system without relying on transient programs. Additionally, third-party solutions like Resident System Modules (RSMs) were backported to CP/M 2.2 to provide comparable capabilities.
Installing software
Although CP/M standardized disk and console input/output interfaces, most applications required installation procedures to accommodate hardware peripherals such as printers and terminals. Control of these devices frequently depended on manufacturer-specific escape codes (for example, printer commands for bold text), which users had to configure through installation utilities. This setup needed to be repeated individually for each program since no centralized operating system service managed peripheral devices.
Printer initialization sequences were typically embedded within application software, meaning that using programs like Wordstar with different printer models demanded separate versions tailored for each device. Consequently, changing printers involved exiting the current software and loading the version configured for the new printer.
Disk formats
The 128-byte sector size, single-density, single-sided floppy disk format used by IBM System/34 and IBM 3740 became the de facto standard for CP/M's 8-inch floppy disks. In contrast, no uniform 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own formats. The Xerox 820 disk format gained popularity for software distribution, with systems like the Kaypro II compatible with it. However, InfoWorld estimated in 1981 that around two dozen disk formats were sufficiently widespread to require software developers to support multiple types. For instance, JRT Pascal was distributed on 5.25-inch disks customized for North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain systems, plus an 8-inch version. Ellis Computing provided support for Heath formats along with sixteen other 5.25-inch variations including TRS-80 CP/M models. Distributors such as Lifetree converted CP/M applications across diverse platforms.
Disk formats differed according to system architecture and disk properties. CP/M permitted customization of reserved areas, directory sizes, and logical-to-physical sector mappings; however, there was no standardized method for loading format parameters from disks created on other systems.
Almost all CP/M machines equipped with 8-inch drives could read the IBM single-density, single-sided format reliably. Portability among other formats depended largely on the specific floppy drive and controller hardware due to wide variations in floppy disk standards across both 8-inch and 5.25-inch media. Disks varied by sectoring method (hard or soft), density level (single or double), number of sides (single or double), track counts (ranging from 35 to 80), and sector organization. Utilities existed to translate between similar formats; for example, the Kaypro II was capable of reading disks from TRS-80, Osborne 1, IBM PC, and Epson QX-10 systems. Nevertheless, certain types such as 80-track or hard-sectored disks remained unsupported. Double-sided disks could sometimes be partially accessed since CP/M read tracks sequentially rather than simultaneously. Apple II users were confined to Apple's GCR disk format and had to obtain CP/M software either on Apple-formatted disks or transfer it via serial connections.
The fragmented nature of the CP/M ecosystem compelled software distributors to maintain inventories of multiple disk formats or invest in duplication equipment capable of handling various types—factors that contributed significantly to CP/M's rapid decline after 1981 when compared with the more uniform IBM PC disk standards.
Among the last noteworthy computers supporting CP/M was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native 6502-based CPU. This system required either a 1571 or 1581 floppy drive able to read soft-sector 40-track MFM disks.
The first computer equipped with a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other machines supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and the TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering's CP/AM for Apple II also provided support for both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives under CP/M before transitioning 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 denoting the file type (for instance, .COM for executables and .TXT for text documents). Characters entered at the command line were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase filenames, which complicated command-line operations.
Disk drives were designated by letters (for example, A: or B:). To specify a file, the drive letter and colon were prefixed to the filename (e.g., A:FILE.TXT). If no drive letter was specified, the system assumed the current active drive.
File size was expressed in units of 128-byte records, corresponding to disk sectors, rather than exact byte counts. The operating system tracked file size within the File Control Block (FCB). Text files typically ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file; inserting control-Z mid-file would truncate subsequent data.
The advent of larger removable and fixed disks introduced disk de-blocking, which increased the number of disk blocks per allocation unit. This enabled handling bigger files but also raised the minimum allocation unit from 1 KB on single-density disks to as much as 32 KB on newer disk formats, resulting in inefficiency when storing numerous small files.
File modification timestamps were not supported in CP/M 2.2 but became optionally available in MP/M and CP/M 3.0.
While CP/M 2.2 did not support subdirectories, it provided 16 numbered user areas for file organization. Users switched between these areas using the "USER X" command (where X ranged from 0 to 15). Files stored in user areas other than 0 were isolated per user, whereas files in USER 0 were accessible universally but required explicit path notation. This multi-user-like structure facilitated file management on hard drives and allowed separation of different tasks—such as data entry and billing—on a single machine despite limited security features and minimal utility on smaller floppy disks.
Graphics
Although some early S-100 systems supported graphics capabilities, CP/M itself lacked standardized graphics functionality until 1982 with the introduction of GSX. Due to restricted memory resources, graphics usage was rare on 8-bit CP/M machines, which primarily displayed simple ASCII art or employed custom character sets. Certain models like the Kaypro line and the TRS-80 Model 4 included video hardware capable of block graphics accessible through assembler or BASIC commands such as CHR$. The TRS-80 Model 4 also offered an optional high-resolution board enabling 640×240 pixel graphics display.
Official
Several companies developed official CP/M enhancements derived from Digital Research’s source code. An example is IMDOS for the IMSAI 8080, a clone of the Altair 8800.
Compatible
Numerous independently created operating systems compatible with CP/M did not utilize Digital Research’s codebase, including:
- Cromemco CDOS by Cromemco
- MSX-DOS designed for MSX computers with capability to run CP/M applications
- The Epson QX-10, offering either CP/M or compatible TPM-II/III environments
- British SAM Coupé featuring optional Pro-DOS compatible with CP/M-2.2
- Amstrad/Schneider CPC and PCW series distributed with CP/M disk sets
- The Husky (computer) equipped with a ROM-based DEMOS loader supporting many CP/M programs
- ZSDOS, a replacement BDOS for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
- CPMish, a free operating system compatible with CP/M 2.2 initially developed without Digital Research code but later incorporating original DR components after permission granted by Lineo's president in 2022; it includes ZSDOS BDOS and ZCPR command processor
- LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS providing source code for BIOS, BDOS, CLI, original DR components, and modular hot-swappable OS parts
- IS-DOS created by Intelligent Software for the Enterprise (computer)
- VT-DOS also from Intelligent Software for the Videoton TV-Computer
Improvements
Certain CP/M-compatible operating systems expanded its foundational capabilities considerably, with examples including the multi-processor enabled TurboDOS.
Eastern Bloc Variants
In the former Eastern Bloc, numerous CP/M-80 versions were developed under diverse titles such as SCP, SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, among others. Additionally, CP/M-86 adaptations like SCP1700, CP/K, and K8918-OS were produced. These versions originated from manufacturers like the East German VEB Robotron and other regional companies.
Historical Impact
A significant portion of Microsoft Windows functionality is rooted in backward compatibility with MS-DOS, which itself was influenced by CP/M. This includes the use of the drive letter system alongside the 8.3 filename format, wildcard symbols (? and *), reserved device names such as "PRN:" and "CON:", and the designation of floppy drives as A and B with hard drives beginning at C—conventions that remain in current Windows systems. The control character ^Z serving as an end-of-file marker in text files also traces back to CP/M. Commands like DIR, REN/RENAME, and TYPE in DOS were modeled after their CP/M equivalents. File extensions such as .TXT and .COM continue to be used for file identification across multiple platforms.
Between 1997 and 1998, Caldera made available CP/M 2.2 binaries and source code under an open source license, facilitating redistribution and modification through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo, then custodian of these assets, broadened the licensing terms. To commemorate CP/M’s 40th anniversary in October 2014, the Computer History Museum published early versions of its source code.
As of 2018, enthusiasts of vintage computing along with some niche businesses continue to develop and maintain environments predominantly running CP/M 2.2 as their operating system.
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
Additional 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 (archived)
- PBS, Triumph of the Nerds – documents IBM’s selection of Microsoft DOS over Digital Research’s CP/M for the IBM PC
- CP/M FAQ at comp.os.cpm and Digital Research website
External Links
- The Unofficial CP/M Web site – includes source code availability
- Gaby Chaudry's Homepage for CP/M and Computer History – features ZCPR resources
- CP/M Main Page – John C. Elliott's technical reference site
- MaxFrame's Digital Research CP/M page (archived)
- ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1980_CPM - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall_1975_BDOS - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedjohnson - ↑ 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 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedKildall.NYT - ↑ 10.0 10.1 Cite error: Invalid
<ref>tag; no text was provided for refs namedwilkinson19811019 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs namedwise19820510 - ↑ Cite error: Invalid
<ref>tag; no text was provided for refs 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