Jump to content

CP/M-8000

From Alfawiki
Adapted from the English Wikipedia article CP/M-8000, available under CC BY-SA 4.0Updated 9 August 20259 sources
Digital Research, Inc.
IndustrySoftware
Founded1974
FounderGary Kildall
Headquarters
United States
ProductsCP/M, PL/M compiler

CP/M, an acronym that initially meant Control Program/Monitor and was later redefined as Control Program for Microcomputers, is a widely-used operating system introduced in 1974 for Intel 8080 and Intel 8085-based microcomputers. It was developed by Gary Kildall at Digital Research, Inc. CP/M functions as a disk operating system, facilitating the management of files on magnetic storage media and enabling program execution from disk. The system originally supported single-task operations on 8-bit processors with memory limits up to 64 kilobytes, but subsequent releases incorporated multi-user functionality and compatibility with 16-bit processor architectures.

The architecture of CP/M is composed of three main elements: the Basic Input/Output System (BIOS), responsible for controlling hardware interfaces; the Basic Disk Operating System (BDOS), which manages file organization and core system services; and the Console Command Processor (CCP), a command-line shell equipped with internal commands.

During its peak, CP/M established itself as the de facto standard operating system for microcomputers, particularly those utilizing the S-100 bus. It gained significant traction within business environments from the late 1970s through the mid-1980s. By streamlining software compatibility across diverse hardware platforms, CP/M broadened both hardware and software markets. Its cost-effectiveness spurred innovation, encouraging independent developers to produce and distribute applications through user communities. However, CP/M’s dominance waned following the introduction of the IBM PC in 1981, which brought DOS to widespread prominence.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development kit, utilizing an 8-inch floppy disk drive from Shugart Associates paired with a bespoke controller. The system was programmed using Kildall’s own language, PL/M. CP/M’s design drew inspiration from the TOPS-10 operating system used on the DECsystem-10 mainframe, which Kildall had experience with.

CP/M was compatible with numerous machines built around the 8080 and Z80 processors. Early adopters included companies like Gnat Computers, which secured licenses for CP/M version 1.0 in 1977 at a rate of $90 per unit. As demand escalated rapidly, Digital Research was able to raise licensing fees into the tens of thousands of dollars.

Development efforts continued under Kildall’s guidance, with John Pierce leading the creation of CP/M 2.0 in 1978. Kathryn Strutynski joined Digital Research in early 1979 to assist in debugging CP/M 2.0 and later played a key role in advancing CP/M 2.2 and CP/M Plus. Other notable contributors during this period included Robert Silberstein and David K. Brown.

The term CP/M originally stood for "Control Program/Monitor," reflecting its role as a resident monitor—a forerunner to modern operating systems. However, trademark documentation filed in November 1977 redefined the acronym as "Control Program for Microcomputers." This change aligned with naming conventions such as Kildall’s PL/M and Prime Computer’s PL/P languages, influenced by IBM’s naming styles.

This rebranding effort was part of a broader initiative by Kildall, his wife, and business partner Dorothy McEwen to commercialize both CP/M and the PL/M compiler under the Digital Research name. Their objective was to establish Digital Research as synonymous with "microcomputer," much like how IBM and Microsoft later became closely associated with "personal computer." The company originally named Intergalactic Digital Research, Inc. was eventually shortened to Digital Research, Inc.

Early Achievements

By September 1981, Digital Research had distributed over CP/M licenses, with sublicensing arrangements indicating an even broader adoption. A variety of manufacturers developed CP/M-based systems targeting different sectors; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Even companies that maintained proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an option for their 8080/Z80 hardware, in contrast to the fragmented ecosystem surrounding the 6502 CPU.[1] The widespread support for CP/M was largely due to its rich software catalog. For example, the Xerox 820 chose CP/M to access thousands of existing applications.[2] To compensate for Digital Research’s documentation, which faced criticism for being incomplete and poorly organized, Xerox included a Howard W. Sams CP/M manual with their systems.[3]

By 1984, Columbia University had utilized CP/M source code to compile Kermit binaries compatible with more than a dozen CP/M variants, alongside two generic versions.[4] CP/M was described as a "software bus",[5][6] providing a standardized interface between software and hardware.[7] Applications were generally portable across platforms, requiring only adjustments to terminal and printer escape codes. This ease of portability contributed significantly to CP/M’s widespread use and extensive software availability compared to operating systems tied to a single manufacturer. However, some drawbacks included incompatibilities between Z80-specific instructions and 8080/8085 CPUs, as well as machine-dependent graphics routines in games that bypassed OS layers for performance.

Bill Gates identified the combination of the Apple II with a Z-80 SoftCard as the leading hardware configuration for running CP/M.[8] By 1982, Digital Research announced that over 450 different computer models had licensed the OS.[9] Prominent machines running CP/M encompassed the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX systems. The top-selling CP/M-compatible machine was probably the Amstrad PCW. In the United Kingdom, CP/M was accessible on Research Machines educational computers (with source code released for educational purposes) and on the BBC Micro through a Z80 co-processor. It also operated on devices such as the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. CP/M 3 served as the operating system for the NIAT handheld computer developed for A. C. Nielsen, featuring 1 MB of solid-state storage.

Multi-user Capability

In 1979, Digital Research introduced MP/M, a multi-user extension derived from CP/M. MP/M allowed several users to access a single computer simultaneously via multiple terminals, each equipped with its own display and keyboard. Subsequent releases extended support to processors with 16-bit architectures.

CP/M Plus

Released in 1983, CP/M Plus (version 3) marked the final iteration of the 8-bit CP/M series. Developed by David K. Brown, this version integrated bank-switching memory management from MP/M into its BDOS, creating a single-user operating system compatible with CP/M 2.2 software. This enhancement enabled CP/M 3 to address memory beyond the 64 KB limit on 8080 or Z80 processors and introduced support for file date stamping. The package also included a relocating assembler and linker. CP/M 3 was primarily aimed at the latest generation of 8-bit computers such as the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX machines, and the Radio Shack TRS-80 Model 4.

16-bit versions

Digital Research expanded CP/M to accommodate multiple 16-bit processors.

The initial release in this category was CP/M-86 for the Intel 8086 CPU, which debuted in November 1981. Project management was led by Kathryn Strutynski during the development of the CP/M-86 operating system family. To differentiate it from the original, the earlier 8-bit release was renamed CP/M-80.

Although CP/M-86 was anticipated to become the standard operating system for IBM PCs, negotiations between Digital Research and IBM did not succeed. Consequently, IBM partnered with Microsoft and distributed PC DOS, which was based on 86-DOS. Despite legal pressures that allowed CP/M-86 to become an available option on IBM PCs, it never gained widespread adoption due to its substantially higher price point ($240 compared to $40 for PC DOS).

The Digital Equipment Corporation Rainbow 100 provided competition to IBM PCs by supporting multiple operating systems: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or a hybrid configuration combining both CPUs simultaneously. This approach preserved users' investments in existing 8-bit software while facilitating a transition to 16-bit MS-DOS environments. Other dual-processor systems with similar capabilities included CompuPro System 816's CP/M 8-16 and Zenith Z-100’s CP/M-86 supporting both processors.

Following CP/M-86 came CP/M-68K for the Motorola 68000 processor. Initially developed in Pascal/MT+68k in 1982 and later ported to C, this OS ran on Motorola EXORmacs machines and was considered for Atari ST before Atari selected GEMDOS. It also operated on SORD M68 and M68MX computer models.

In 1982, Digital Research adapted CP/M-68K for the Zilog Z8000 processor as CP/M-8000 on the Olivetti M20 platform, with its codebase written in C.

These versions for 16-bit processors required recompilation of applications. Some assembly language programs could be converted automatically using utilities like Digital Research's XLT86, which translated Intel 8080 assembly (.ASM) into Intel 8086 assembly (.A86) while optimizing code and adjusting calling conventions. XLT86 was implemented in PL/I-80 and available on both CP/M-80 and VAX/VMS systems.

Displacement by MS-DOS

By the early 1980s, approximately two thousand applications were available for CP/M, positioning it as a likely standard for emerging 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license CP/M for its IBM Personal Computer. However, negotiations collapsed over disagreements related to a non-disclosure agreement, prompting IBM to contract Microsoft instead.

MS-DOS incorporated many foundational elements from CP/M, including file management structures and drive letter assignments (such as A: and B:). Its key advancement was introducing the FAT file system, which simplified porting popular CP/M software like WordStar and dBase. MS-DOS also benefited from larger memory availability (typically around 64 KB on IBM PCs compared to CP/M’s minimum of 16 KB), allowing more built-in commands within its command interpreter and enhancing usability on floppy disk-based systems.

Although early hardware expansions like the Baby Blue card enabled IBM PCs to run some 8-bit CP/M applications, industry consensus rapidly favored MS-DOS. BYTE magazine in 1982 characterized MS-DOS as "more user-friendly, faster, with many advantages." Attempts to establish CP/M in the home computer market faltered by 1984 due to high software costs. By 1986, manufacturers such as Kaypro discontinued production of CP/M-based machines in favor of MS-DOS compatible systems. As microcomputing gravitated toward IBM-compatible platforms, CP/M’s market presence diminished swiftly along with its industry coverage.

Subsequent releases of CP/M-86 enhanced performance and improved compatibility with MS-DOS. Reflecting this transition, CP/M-86 was rebranded as DOS Plus, which eventually evolved into DR-DOS.

ZCPR

Introduced on 2 February 1982, ZCPR (Z80 Command Processor Replacement) served as a direct substitute for the standard console command processor (CCP) provided by Digital Research. The project was developed by "The CCP Group," comprising Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, and Richard Conn, with Conn playing a leading role in its advancement.

The initial release, ZCPR1, was made available through a SIG/M disk. Subsequently, on 14 February 1983, ZCPR2 was launched across ten SIG/M disks and later enhanced to version 2.3. This update included an 8080-compatible codebase, allowing operation on both 8080 and 8085 processors.

To commercialize the next iteration while preserving free availability, Richard Conn partnered with Frank Gaude to establish Echelon Inc. On 14 July 1984, ZCPR3 was introduced via nine SIG/M disks. This edition featured a compilable version for systems without Z80 processors and incorporated functionalities such as command shells, aliases, input/output redirection, flow control mechanisms, named directory support, search path capabilities, customizable menus, password protection, and integrated online help.

In January 1987, after Conn ended his involvement in development, Echelon contracted Jay Sage to continue enhancing the software. The resulting ZCPR 3.3 dropped support for the 8080 architecture and added a broad range of new features and utilities. Despite enthusiastic adoption among CP/M users, ZCPR was unable to prevent the overall decline of the CP/M platform.

Hardware model

A basic CP/M system built around an 8-bit architecture generally consisted of:

  • A terminal utilizing ASCII character encoding
  • A microprocessor such as the Intel 8080 (later models used the 8085) or the Zilog Z80
    • NEC V20/V30 CPUs supported 8080 emulation enabling CP/M operation on PC-DOS/MS-DOS hardware; any IBM PC compatible could run CP/M-86
  • A minimum of 16 KB RAM starting at address zero
  • Bootstrapping functionality for initializing from the first disk sector
  • At least one floppy disk drive

Officially, Digital Research’s CP/M supported only the Intel 8080 Development System; however, various hardware manufacturers adapted the OS to fit their specific configurations. Systems compatible with the Z80 typically incorporated BIOS code and applications optimized for that processor.

Digital Research collaborated with Zilog and American Microsystems to develop Personal CP/M—a ROM-based operating system aimed at cost-effective computers lacking disk drives—initially deployed in Sharp’s MZ-800 cassette-based machine with optional disk support. Personal CP/M prioritized enhanced Z80 instructions over portability with the original 8080.

American Microsystems released the S83 microprocessor integrating an 8 KB ROM containing OS and BIOS along with dynamic RAM interface logic; bulk pricing hovered around $32 per chip.

Most systems utilized a minimal ROM bootloader combined with techniques like bank switching or bus injection to load executable code at address zero. This approach was necessary because while the 8080 requires boot code at this address, CP/M expects RAM there during operation. Some hardware required manual bootstrap entry via front-panel switches.

CP/M employed a 7-bit ASCII character set; extended character usage varied by manufacturer—for instance, Kaypro used them for Greek letters while Osborne applied them for underlining text. WordStar utilized the eighth bit as a word termination marker. International versions often replaced certain ASCII characters following ISO 646 standards rather than extending beyond seven bits.

Components

During execution, CP/M’s operating system loaded into memory consists of three primary modules:

  • Basic Input/Output System (BIOS),
  • Basic Disk Operating System (BDOS),
  • Console Command Processor (CCP).

The BIOS and BDOS remain resident in memory continuously; the CCP also stays resident unless temporarily replaced by an application program, after which it is restored upon completion. Standard utility commands are stored as transient programs with .COM file extensions.

The BIOS manages hardware components excluding CPU and main memory—it handles character input/output and disk sector operations. BDOS provides file system management and input/output abstractions such as redirection. The CCP interprets user commands by executing built-in commands like DIR or ERA or by loading transient commands such as PIP.COM and STAT.COM. Third-party software operates as transient commands within this framework.

While BDOS, CCP, and standard transient commands remain stable across CP/M revisions, BIOS is customized for each hardware platform.

Increasing available memory necessitates reinstalling CP/M so that transient programs can utilize the expanded space. The MOVCPM utility modifies object code in memory by adjusting jump and call addresses accordingly and facilitates installation of the updated OS onto a new disk. The OS components occupy reserved disk areas used during booting; a ROM-based bootloader loads the OS from drive A: during startup.

By contemporary measures, CP/M is rudimentary due to strict limitations on program size. Early versions lacked detection of disk changes; swapping disks without refreshing directory information risked data corruption. Starting with version 1.1, attempts to write to a changed disk before reading its directory produce a fatal error to protect data integrity—though this requires rebooting afterward.

Most of CP/M’s complexity resides within BDOS and to a lesser degree in CCP and transient commands. By porting only simple BIOS routines to new hardware platforms, the entire operating system could function without extensive redevelopment—significantly reducing development time and contributing to CP/M’s widespread use. This method of hardware abstraction was pioneering at its inception and has since become standard practice in modern operating systems.

Console Command Processor

The Console Command Processor (CCP) is responsible for managing keyboard inputs and displaying output on the terminal. CP/M supports both printing and video terminals, necessitating that all commands be entered via the command line. The prompt, commonly shown as A>, reflects the current default disk drive and is accompanied by a blinking cursor on video terminals. Users can alter the default drive by entering a drive letter followed by a colon (for example, B:), which then updates the prompt to reflect this change.

The design of CP/M’s command-line interface draws inspiration from Digital Equipment Corporation’s Concise Command Language, utilized in operating systems such as RT-11 and OS/8. Commands are composed of a keyword along with parameters separated by spaces or special characters. The CCP directly executes internal commands, while commands not recognized trigger the loading of executable transient programs from disk or user areas, thereby freeing up more memory for application use.

Certain commands retain legacy names, like PIP (Peripheral Interchange Program), which is used for file copying—highlighting its DEC heritage. The formatting of parameters differs among programs, as there is no universal standard for option characters.

Among the CCP’s built-in commands are DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands include utilities such as ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.

With CP/M Plus (Version 3), enhancements to built-in commands were introduced: DIR now excludes SYS attribute files; new commands like DIRSYS/DIRS list SYS files; ERASE/ERA and RENAME/REN offer file management; TYPE/TYP displays file contents; and USER/USE facilitates user number changes. Command abbreviation was also implemented. The suite of transient commands expanded to include tools such as 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) oversees critical functions including file manipulation, console output, and printing tasks. Application software interacts with BDOS by loading specific function codes and parameters into processor registers before invoking a fixed memory address. This method of consistent addressing ensures that software remains compatible across various hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers the fundamental low-level operations required by the operating system, such as character input/output and reading or writing disk sectors. While BDOS manages some aspects of disk buffering, it assumes a fixed sector size of 128 bytes prior to CP/M version 3.0; therefore, BIOS must be tailored to accommodate different disk formats.

Due to the wide variety of hardware configurations—including integrated video displays versus separate terminals, diverse UART chips for serial communication ports, and various I/O addressing schemes—BIOS customization is crucial. It provides a uniform interface through standard entry points for essential services like character I/O and disk access. Since BIOS often offers limited or no support for serial communication, CP/M applications frequently incorporate user-installed overlays to handle modem serial port operations.

Applications

CP/M was the foundation for numerous groundbreaking business software titles. Among these, WordStar stood out as one of the earliest widely adopted word processors, while dBase gained recognition as a prominent early database application, both initially created for CP/M. The platform also hosted pioneering outliners such as KAMAS and Out-Think, which later migrated to MS-DOS. Notably, Turbo Pascal—the forerunner to Borland Delphi—and Multiplan, the predecessor to Microsoft Excel, first appeared on CP/M before their MS-DOS counterparts were released. The inaugural spreadsheet program, VisiCalc, was accessible on CP/M, alongside Sorcim’s SuperCalc, which dominated the CP/M spreadsheet market and competed in the MS-DOS arena. Additionally, Autodesk introduced AutoCAD on the CP/M system.

A broad selection of compilers and interpreters supported popular programming languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I, including early offerings from Microsoft.

To accommodate diverse hardware configurations, CP/M applications often included installers that adapted software for different platforms. For example, users of Kaypro II converted programs from the Xerox 820 disk format to their own. BASIC source code was commonly available, and copy protection mechanisms were typically ineffective due to CP/M’s uniform disk formats and expectations of software interoperability.

Because of limited standardization in graphics capabilities, CP/M video games were predominantly character- or text-based. Well-known games ported to CP/M included Telengard, Gorillas, Hamurabi, and Lunar Lander, along with interactive fiction titles like the Zork series and Colossal Cave Adventure. Infocom consistently released its text adventure games for the CP/M platform. Lifeboat Associates distributed user-created freeware such as the XMODEM file transfer protocol and the KAMAS outline processor.

Transient Program Area

In the original CP/M versions designed for the 8080, 8085, and Z80 processors, the read/write memory segment ranging from address 0100 hexadecimal up to just before the BDOS starting address at 0006H was 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 architecture since portions of memory space were reserved for BIOS ROMs or video memory. To optimize available TPA, bank switching was frequently employed to swap out ROM or video memory segments when necessary. With CP/M 3.0, this concept was expanded by permitting portions of the BDOS to reside within bank-switched memory areas.

Debugging application

CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory contents and program modules interactively. This tool supported stepwise execution of programs and was essential for software development and debugging activities.

Resident programs

Initially, CP/M did not offer native support for terminate-and-stay-resident (TSR) programs similar to those found in DOS. Nevertheless, developers could intercept operating system calls to extend functionality, resulting in auxiliary utilities such as SmartKey, a keyboard enhancement tool. The release of CP/M 3 introduced dynamic loadable Resident System Extensions (RSX), facilitating more adaptable resident programs without relying on transient processes. Additionally, third-party products like Resident System Modules (RSMs) provided comparable TSR-like features for earlier CP/M 2.2 systems.

Software installation

Although CP/M offered hardware abstraction for disk and console input/output, individual applications generally needed installation to operate specific peripherals such as printers and terminals. Controlling these devices often depended on manufacturer-unique escape codes—for instance, commands for bold printing differed among printer models. Installation utilities enabled users to choose or tailor these codes to their particular hardware. Because CP/M did not provide a unified device management system, this setup had to be performed separately for each program.

Moreover, printer initialization sequences were embedded within software itself. Consequently, to run an application like Wordstar on different printers (for example, dot-matrix versus daisy wheel), distinct versions of the software were required. Users had to exit the program and reload the appropriate version when switching printers.

Disk formats

The 128-byte sector, single-density, single-sided disk format used by IBM System/34 and IBM 3740 became the de facto standard 8-inch floppy disk format for CP/M. However, no universal 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others implemented their own proprietary formats. Most software was distributed using the Xerox 820 format, compatible with systems like the Kaypro II. Still, a 1981 InfoWorld article highlighted that software developers had to support roughly two dozen popular formats to maximize market reach. For instance, JRT Pascal was available on multiple 5.25-inch disks including North Star, Osborne, Heath/Zenith (both hard and soft sector), Superbrain versions, as well as an 8-inch disk variant. Ellis Computing supported both Heath formats plus sixteen additional 5.25-inch formats including TRS-80 CP/M variants. Other distributors like Lifetree also adapted CP/M applications for various platforms.

CP/M permitted customization of reserved areas and directory structures on disks and allowed logical-to-physical sector mapping adjustments; however, no standardized approach existed for loading formatting parameters from disks created on different systems. While nearly all CP/M machines equipped with 8-inch drives could read the IBM single-sided single-density format, compatibility across CP/M systems varied greatly depending on floppy size (8-inch or 5.25-inch), sectoring method (hard or soft), density (single or double), number of sides (single or double), track counts (ranging from 35 to 80), and sector arrangements. Translation utilities assisted users in accessing disks from other machines with similar formats; for example, the Kaypro II could read disks from TRS-80, Osborne 1, IBM PC, and Epson QX-10. Nevertheless, some formats such as 80-track or hard sectored disks remained unreadable. Apple II users were restricted to Apple’s GCR format and had to rely on Apple-formatted CP/M disks or serial transfer methods.

The fragmented nature of the CP/M disk ecosystem compelled distributors to maintain inventories of multiple disk formats or invest in equipment capable of duplicating various formats. This complexity stood in contrast to the more uniform disk standards established by the IBM PC and played a major role in CP/M’s swift decline after 1981.

Among the last significant CP/M-compatible computers was the Commodore 128 released in 1985, which included a Z80 processor dedicated to running CP/M alongside its native 6502-based CPU. Operating CP/M on this machine required a 1571 or 1581 drive capable of reading soft-sectored 40-track MFM disks.

The pioneering computer featuring a 3.5-inch floppy drive was the Sony SMC-70, which ran CP/M 2.2. Other CP/M systems supporting this smaller disk format included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also supported both 3.5-inch floppy drives and RAM disks via compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives before shifting to the more common 3.5-inch format.

File system

File naming adhered to the 8.3 convention, allowing up to eight characters for the name, followed by a dot and a three-character extension denoting the file type (for instance, .COM for executable files and .TXT for text documents). When filenames were typed at the command prompt, they were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase filenames, which complicated command-line file access.

Disk drives were identified using letter designations like A: and B:. To specify a file on a particular drive, the drive letter and colon preceded the filename (e.g., A:FILE.TXT); if omitted, the system assumed the default drive.

File sizes were quantified in 128-byte records, corresponding to disk sectors on 8-inch drives, and this information was maintained within the file's File Control Block (FCB). There was no standardized method for precise byte-level sizing. Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file; inserting control-Z within a file prematurely truncated its contents.

With the advent of larger removable and fixed disks, disk de-blocking permitted multiple blocks per logical allocation unit, supporting bigger files but increasing the minimum allocation size from 1 KB (single-density) up to 32 KB. This approach diminished storage efficiency when handling numerous small files.

File modification timestamps were not supported in CP/M 2.2 but became optional features in MP/M and CP/M 3.0.

CP/M 2.2 did not support subdirectories, instead organizing files into 16 numbered user areas. Switching between these was accomplished by issuing "User X" at the prompt. This mechanism provided minimal security and was primarily intended to emulate multi-user MP/M environments on single-user machines. Files saved under one user area remained isolated from others except for USER 0, whose files were globally accessible but required explicit path specification. While this arrangement offered limited benefit on small floppy disks, it proved useful on systems with hard drives by segmenting tasks—such as separating data entry from billing—to prevent file intermingling.

Graphics

Despite early availability of graphics-capable S-100 systems, CP/M lacked a standardized graphics interface until 1982 with the introduction of GSX. Due to constrained memory on 8-bit CP/M machines, graphical capabilities were rare, typically limited to simple ASCII art or custom character sets. Certain models like the Kaypro series and TRS-80 Model 4 provided block graphics accessible to programmers through CHR$. The TRS-80 Model 4 could attain resolutions up to 640×240 pixels when equipped with an optional high-resolution graphics board.

Official

Several firms released authorized CP/M enhancements derived from Digital Research’s source code; an example is IMDOS 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 developed by Cromemco
  • MSX-DOS designed for MSX computers with compatibility for CP/M applications
  • Epson QX-10 offered either CP/M or TPM-II/III compatible operating systems
  • The British ZX Spectrum-compatible SAM Coupé featured an optional Pro-DOS compatible with CP/M-2.2
  • Amstrad/Schneider CPC and PCW models bundled with CP/M disk packs
  • The Husky (computer) utilized DEMOS, a ROM-based loader capable of running numerous CP/M programs
  • ZSDOS, an alternative BDOS for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
  • CPMish, an open-source CP/M 2.2-compatible OS originally developed without Digital Research code but later integrated original DR components after receiving permission from Lineo in 2022; it incorporates ZSDOS BDOS and ZCPR command processor
  • LokiOS, launched in 2023 by David Kitson as part of the Open Spectrum Project, includes BIOS, BDOS, CLI source code along with original DR source code and supports hot-swappable OS modules
  • IS-DOS developed for the Enterprise (computer) by Intelligent Software
  • VT-DOS for the Videoton TV-Computer, also produced by Intelligent Software

Improvements

Certain CP/M-compatible operating systems introduced considerable enhancements, exemplified by TurboDOS, which supported multi-processor configurations.

Eastern Bloc Variants

Within the former Eastern Bloc, numerous CP/M-80 derivatives were developed, including SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM, DAC, HC, among others. For CP/M-86 platforms, variants such as SCP1700, CP/K, and K8918-OS were produced. These versions originated from manufacturers like the East German VEB Robotron and additional producers.

Enduring Impact

Numerous elements of Microsoft Windows can be traced back to compatibility with MS-DOS, which itself adopted features from CP/M. The system of drive letter assignments and the 8.3 filename format both originated in CP/M. The use of wildcard symbols (?, *) and reserved device names such as "PRN:" and "CON:" also have their roots in CP/M. The convention of designating floppy disk drives as A and B and hard drives as C continues from CP/M into MS-DOS. Furthermore, the control character ^Z used to signify end-of-file in text files is a legacy feature. DOS commands like DIR, REN/RENAME, and TYPE were modeled after those in CP/M. File extensions including .TXT and .COM remain prevalent today.

Between 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open source license. This allowed redistribution and modification of Digital Research materials related to CP/M and MP/M through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead's passing in 2001, Lineo, the rights holder at that time, revised and broadened the licensing terms later that year. To mark its 40th anniversary in October 2014, the Computer History Museum released early versions of the CP/M source code.

As of , enthusiasts dedicated to vintage computing and certain small enterprises continue to maintain and develop systems primarily utilizing CP/M 2.2 as their operating environment.

See also

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 (featuring IBM's selection of Microsoft DOS over Digital Research's CP/M)
  • CP/M FAQ at comp.os.cpm and Digital Research resources

External links

  1. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wilkinson19811019
  2. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wise19820510
  3. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Infoworld 1981
  4. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  5. ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
  6. ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
  7. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named bunnell19820203
  9. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named libes198206