Jump to content

CP/Z

From Alfawiki
Adapted from the English Wikipedia article CP/Z, available under CC BY-SA 4.0Updated 9 August 202519 sources
Digital Research, Inc.
IndustrySoftware development
Founded1974
FounderGary Kildall, Dorothy McEwen
Headquarters
United States
ProductsCP/M, MP/M, CP/M-86, CP/M-68K, CP/M-8000

CP/M, initially known as Control Program/Monitor and later renamed 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. This disk operating system was created to manage files stored on magnetic disks and to facilitate loading software from such media. While its first iterations supported only single-tasking on 8-bit processors with a maximum of 64 kilobytes of memory, subsequent releases introduced multi-user functionality and adapted to 16-bit processor architectures.

The architecture of CP/M is composed of several key elements: the Basic Input/Output System (BIOS), responsible for hardware driver management; the Basic Disk Operating System (BDOS), which oversees file system operations and core system services; and the Console Command Processor (CCP), serving as a command-line interface equipped with built-in commands.

During the late 1970s through the mid-1980s, CP/M established itself as the de facto leading operating system for microcomputers, particularly those utilizing the S-100 bus. Its widespread adoption in commercial environments facilitated the growth of both hardware and software sectors by enabling easier application portability across diverse manufacturers’ machines. The platform encouraged software development innovation by providing affordable CP/M-based microcomputers that empowered independent programmers to develop and distribute applications within user communities. Eventually, CP/M’s dominance diminished following the introduction of DOS alongside the 1981 release of the IBM PC.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, integrating it with a Shugart Associates 8-inch floppy-disk drive paired with a custom controller.[1] The system was programmed using Kildall’s proprietary language, PL/M (Programming Language for Microcomputers).[2] CP/M drew inspiration from the TOPS-10 operating system used on the DECsystem-10, which Kildall had experience with during development.[3]

CP/M was compatible with numerous machines powered by the 8080 and Z80 processors. Among its early licensees was Gnat Computers, which secured rights to CP/M version 1.0 in 1977 for $90 to deploy on their microcomputer products. The surge in demand allowed Digital Research to significantly increase licensing fees to amounts in the tens of thousands within just a year.[4]

Under Kildall’s direction, John Pierce spearheaded development of CP/M 2.0 in 1978. Kathryn Strutynski joined Digital Research early in 1979, initially focusing on debugging CP/M 2.0 before contributing significantly to the creation of CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert "Bob" Silberstein and David "Dave" K. Brown.[5][6]

Originally abbreviated as "Control Program/Monitor",[7] CP/M adopted the title "Control Program for Microcomputers" during its commercial introduction in 1977.[8] This change reflected industry naming conventions such as those seen with Kildall’s PL/M language and IBM’s CP/CMS operating system, influenced by Kildall’s tenure at the Naval Postgraduate School (NPS). The renaming was part of an initiative led by Kildall, his wife, and business partner Dorothy McEwen[9] to establish CP/M and the PL/M compiler as commercial products under the Digital Research label. Their ambition was to position Digital Research as synonymous with "microcomputer," mirroring IBM’s and Microsoft’s later association with "personal computer." Subsequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[9]

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, though the actual user base was probably larger due to sublicensing agreements. A wide array of manufacturers offered CP/M-based systems targeting different sectors, with InfoWorld recognizing CP/M as the leading operating system for small computers. Even companies that developed their own proprietary systems, such as Heath/Zenith with HDOS, provided CP/M for their 8080 and Z80 machines—contrasting with the 6502 CPU segment, which lacked a similar universal standard.[10] This broad adoption was largely due to CP/M’s extensive catalog of available software. For instance, the Xerox 820 utilized CP/M to access thousands of existing applications.[11] Because Digital Research’s documentation was considered subpar, Xerox included a Howard W. Sams CP/M manual with their product.[12][13]

By 1984, Columbia University had utilized the same CP/M source code to compile Kermit binaries compatible with over a dozen CP/M variants as well as generic versions.[14] CP/M was often described as a "software bus",[15][16] facilitating interaction between various software applications and diverse hardware platforms in a uniform manner.[17] Applications written for CP/M generally exhibited portability across different machines, typically requiring only adjustments for terminal and printer escape codes. This adaptability contributed significantly to CP/M’s widespread adoption and substantial software library compared to operating systems tied to specific hardware. Some constraints existed, such as programs utilizing the Z80 processor’s extended instruction set that were incompatible with 8080 or 8085 CPUs, and graphics routines that bypassed the OS for performance gains by directly accessing hardware.[10]

Bill Gates highlighted the Apple II equipped with a Z-80 SoftCard as the most prevalent hardware platform running CP/M.[18] By 1982, Digital Research claimed over 450 different computer models licensed to run CP/M.[19] Significant examples included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX systems. The Amstrad PCW was likely the highest-selling CP/M-compatible machine. In the United Kingdom, CP/M operated on educational computers from Research Machines, with source code openly published for academic purposes, as well as on the BBC Micro when paired with a Z80 co-processor. Additional supported platforms included the Amstrad CPC, Commodore 128, TRS-80, and later models of the ZX Spectrum. The NIAT handheld device developed for A. C. Nielsen ran CP/M 3 and featured a solid-state drive with 1 MB of storage.

Multi-user Versions

Digital Research introduced MP/M in 1979 as a multi-user extension of CP/M. MP/M allowed several users to simultaneously access a single computer through multiple terminals, each equipped with its own display and keyboard. Subsequent iterations expanded compatibility to include 16-bit processors.

CP/M Plus

The final iteration of the 8-bit CP/M series, known as CP/M Plus (or CP/M 3), was introduced in 1983 featuring a BDOS developed by David K. Brown. This version incorporated MP/M’s bank switching memory management into a single-user, single-task operating system that maintained compatibility with CP/M 2.2 applications, enabling the use of memory beyond 64 KB on 8080 or Z80 processors. CP/M 3 added support for file date stamping and included tools such as a relocating assembler and linker. It found adoption in later 8-bit machines like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.

16-bit versions

Digital Research began creating CP/M variants for 16-bit processors starting with CP/M-86 for the Intel 8086, released in November 1981 under the leadership of Kathryn Strutynski. To differentiate it from the original 8-bit system, the earlier version was renamed CP/M-80.

CP/M-86 was initially expected to become the IBM PC’s default operating system but lost out to Microsoft’s PC DOS, which was based on 86-DOS, after IBM declined to finalize an agreement with Digital Research. Although CP/M-86 was eventually made available for IBM PCs following legal pressure, its higher price point ($240 compared to PC DOS’s $40) hindered widespread adoption.

The DEC Rainbow 100 offered multiple OS choices—CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or a dual-processor configuration supporting both CP/M-86 and CP/M-80—allowing simultaneous operation and protecting users’ investments in existing 8-bit software. Other dual-CPU systems with similar capabilities included CompuPro System 816’s CP/M 8-16 and Zenith Z-100’s CP/M-86.

Following this, Digital Research released CP/M-68K for the Motorola 68000 in 1982. Initially developed using Pascal/MT+68k and later ported to C, this version was intended for use on the Atari ST; however, Atari ultimately chose GEMDOS instead. Nonetheless, CP/M-68K was employed on systems like the EXORmacs and SORD M68.

Also in 1982, CP/M was adapted for the Zilog Z8000 architecture as CP/M-8000 for the Olivetti M20 computer.

These 16-bit versions necessitated recompiling software; certain assembly code could be converted automatically using utilities such as Digital Research’s XLT86. This tool translated Intel 8080 assembly (.ASM) into Intel 8086 assembly (.A86), optimizing code size and adjusting calling conventions to facilitate porting from CP/M-80/MP-M-80 to CP/M-86/MP-M-86 platforms. XLT86 was accessible on both CP/M-80 and VAX/VMS environments.

Displacement by MS-DOS

By the early 1980s, approximately 2,000 applications existed for CP/M, leading many to anticipate it becoming the dominant OS for 16-bit systems. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for its forthcoming IBM PC. However, after negotiations failed due to the absence of a signed non-disclosure agreement, IBM contracted Microsoft to supply an operating system instead.

Early MS-DOS releases shared several design elements with CP/M, including file management structures and drive letter assignments (such as A: and B:). Its primary innovation was the introduction of the FAT file system. This resemblance facilitated porting popular CP/M programs like WordStar and dBase. Unlike CP/M’s use of separate user areas for files on a single disk, MS-DOS did not implement this feature. With IBM PCs typically offering more than 64 KB of memory, MS-DOS incorporated additional commands directly into its command-line interpreter, improving performance and usability on floppy disk-based systems.

Although early hardware expansions like the Baby Blue card allowed running CP/M software on IBM PCs, industry reviews quickly favored MS-DOS. In 1982, BYTE magazine described MS-DOS as "more user-friendly, faster, with many more advantages." By 1984, InfoWorld highlighted CP/M’s decline in home computing due to expensive software costs. By 1986, manufacturers such as Kaypro had ceased producing new 8-bit CP/M machines to concentrate on MS-DOS-compatible hardware. As microcomputing shifted towards IBM-compatible platforms, CP/M rapidly lost market share and never regained its former status. Prominent industry publications like Byte discontinued coverage of CP/M products within a few years following the IBM PC launch.

Subsequent versions of CP/M-86 enhanced performance and compatibility with MS-DOS, eventually being rebranded as DOS Plus, which later evolved into DR-DOS.

ZCPR

ZCPR, standing for Z80 Command Processor Replacement, was introduced on 2 February 1982 as a direct substitute for the console command processor (CCP) developed by Digital Research. Its initial creation was the work of an enthusiast group known as "The CCP Group," headed by Richard Conn.

The first version, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey. This was followed by ZCPR2 on 14 February 1983, released as ten SIG/M disks. Subsequent updates led to version 2.3, which was modified to support 8080 and 8085 microprocessors.

To commercialize ZCPR while preserving its free availability, Conn and Frank Gaude established Echelon Inc. On 14 July 1984, ZCPR3 was launched across nine SIG/M disks. This iteration featured code compilable for non-Z80 processors with limited functionality. Key capabilities included command shells, aliasing, input/output redirection, flow control structures, named directory shortcuts, search path support, customizable menus, password protection, and integrated online help.

Development responsibility shifted in January 1987 when Conn stepped back and Echelon brought in Jay Sage to continue progress. The release of ZCPR 3.3 discontinued support for the 8080 processor and introduced a broad range of enhancements and utilities. Despite strong enthusiasm within the CP/M user community, ZCPR was unable to halt the gradual decline of the CP/M operating system.

Hardware model

A basic CP/M setup for an 8-bit system required the following components:

  • An ASCII-compatible computer terminal
  • A microprocessor such as Intel 8080/8085 or Zilog Z80
    • NEC V20/V30 processors offered 8080 emulation capabilities enabling CP/M operation on PC-DOS/MS-DOS hardware
  • A minimum of 16 KB RAM beginning at address zero
  • A bootstrap mechanism capable of loading disk sectors
  • At least one floppy disk drive

Digital Research officially supported only the Intel 8080 Development System; other manufacturers tailored CP/M to their specific configurations involving memory size, disk drives, and console devices. Many systems based on the Z80 processor ran CP/M due to its backward compatibility with 8080 code but often incorporated BIOS code and applications optimized for the Z80.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant designed for budget-friendly computers lacking disk drives. This version first appeared in Sharp’s MZ-800 cassette-based machine with optional disk support and utilized enhanced Z80 instructions rather than striving for full portability.

American Microsystems introduced the S83 microprocessor featuring integrated ROM containing OS/BIOS code along with dynamic RAM interface logic, priced at approximately $32 when purchased in volume.

Most machines employed a minimal ROM bootloader combined with bank switching or bus injection techniques to load executable code at address zero—a necessity because while the 8080 expects boot code at that location, CP/M requires RAM there during operation. Some systems demanded manual bootstrap entry through front-panel controls.

CP/M used the standard 7-bit ASCII character set; however, extended 8-bit characters varied depending on manufacturer and region—for instance, Kaypro utilized them for Greek letters, Osborne indicated underlining, WordStar marked word boundaries, and international editions applied ISO 646 substitutions.

Components

While operational in memory, CP/M consists of three main elements:

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

Both BIOS and BDOS remain resident in memory continuously; CCP also stays resident unless temporarily replaced by an application program, after which it is reloaded. Standard utility commands that are not built-in exist as transient programs stored as .COM files on disk.

The BIOS manages hardware interfaces apart from the CPU and main memory—handling tasks such as character input/output and reading or writing disk sectors. BDOS provides file system management and I/O abstractions including redirection layered above BIOS functions. The CCP interprets user commands by executing internal commands like DIR or ERA or loading transient external commands such as PIP.COM or STAT.COM. Third-party software typically operates as transient commands.

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

When additional memory is installed, CP/M must be reinstalled to enable use of this extra space by transient programs. The MOVCPM utility facilitates relocating object code into new memory areas by adjusting jump and call instructions accordingly—allowing applications access to expanded memory. After installation, OS components reside in designated reserved disk sectors used during booting. The bootloader—usually embedded in ROM firmware—loads the operating system from drive A: at startup.

By today’s standards, CP/M appears rudimentary due to strict limitations on program size. Early releases lacked mechanisms to detect disk changes automatically; swapping disks without refreshing directory information risked data corruption. Starting with version 1.1, attempting to write to a disk that had changed before reading its directory results in a fatal error that prevents overwriting but requires rebooting.

The majority of CP/M’s complexity lies within BDOS and to a lesser extent CCP and transient utilities. By porting simple BIOS routines tailored to new hardware platforms, the entire OS could be deployed with minimal development effort—significantly accelerating adoption of CP/M. This layered hardware abstraction model was innovative at the time since most contemporary operating systems targeted single hardware platforms without such modular designs.

Console Command Processor

The Console Command Processor (CCP) is responsible for handling keyboard inputs and terminal outputs within CP/M, supporting both video and printer terminals. Users interact with the system by entering commands at the command line, typically indicated by a prompt such as A>, which reflects the default disk drive. To switch the default drive, the user types the desired drive letter followed by a colon (for example, B:), which then updates the prompt to match.

CP/M’s command-line interface was inspired by Digital Equipment Corporation’s Concise Command Language, utilized in operating systems like RT-11 and OS/8. Commands are composed of a primary keyword followed by one or more parameters, separated by spaces or special delimiters. When a command is built-in, CCP executes it directly; otherwise, it searches for an executable program—referred to as a "transient"—on the current disk and user area. It then loads and runs this program with the provided parameters. Upon completion, BDOS reloads CCP to reclaim memory allocated to transient programs.

Several commands retain legacy names from DEC systems, such as PIP, which is used for copying files. Parameter conventions vary among programs and do not follow a unified standard for option characters.

Core internal CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass utilities like ASM, DDT, DUMP, ED, LOAD, PIP, and others.

With CP/M Plus (Version 3), built-in commands were expanded to include DIRSYS/DIRS for system file listing, ERASE alongside ERA for file deletion, RENAME/REN for renaming files, TYPE/TYP for displaying ASCII content, and USER/USE for switching user numbers. This version also introduced abbreviated command entry. Additional transient commands were added such as COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, SETDEF, SHOW, SID, SUBMIT, and XREF.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) oversees fundamental tasks including file management, console output handling, and printing operations. Applications request BDOS services by loading specific operation codes and parameters into processor registers before invoking a fixed memory address. This fixed invocation point guarantees that software remains compatible across various hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers essential low-level services required by CP/M, including character input/output and disk sector reading/writing. While BDOS manages buffered data transfers to and from diskettes, BIOS handles device-specific operations such as controlling disk sector sizes—which were standardized at 128 bytes before CP/M 3.0 but could vary depending on hardware capabilities.

Due to the wide diversity of hardware designs—including integrated video displays versus separate terminals, different serial communication chips, and memory-mapped I/O configurations—BIOS must be customized accordingly. It provides uniform entry points that mask these hardware differences, allowing CP/M to function consistently across multiple systems. Modem support within BIOS is limited; therefore, many CP/M programs incorporate user-supplied overlays to facilitate serial port communications.

Applications

CP/M served as the platform for groundbreaking software titles such as WordStar (word processing), dBase (database management), KAMAS and Out-Think (outlining tools), Turbo Pascal (programming language), and Multiplan (spreadsheet). The spreadsheet market on CP/M was initially dominated by VisiCalc—the pioneering spreadsheet—and Sorcim's SuperCalc before these programs transitioned to compete on MS-DOS. Autodesk launched AutoCAD on CP/M as well. A diverse assortment of compilers and interpreters for languages including BASIC, FORTRAN, and PL/I were accessible, featuring early offerings from Microsoft.

Software designed for CP/M commonly contained installers that adapted applications to different hardware configurations. For instance, users of the Kaypro II converted software from Xerox 820 disk formats to those compatible with Kaypro systems. BASIC source code was often provided, and copy protection measures were generally ineffective due to CP/M’s uniform disk format standards that ensured compatibility across various software.

The platform’s limited graphical capabilities restricted video game development; nonetheless, numerous text-based games were ported to CP/M, including titles like Telengard, Gorillas, Hamurabi, Lunar Lander, as well as interactive fiction series such as Zork and Colossal Cave Adventure. Infocom notably released the majority of its text adventures in CP/M format. Lifeboat Associates distributed user-created freeware programs like XMODEM for dependable modem file transfers and the outlining processor KAMAS.

Transient Program Area

In the original CP/M implementations for the 8080, 8085, and Z80 processors, the read/write memory region spanning from address 0100 hexadecimal up to just before the BDOS start at 0006H was designated as the Transient Program Area (TPA), allocated for application use. Although these CPUs could address up to 64 KB, the size of available TPA differed depending on system architecture, due to reserved memory areas for BIOS ROMs or video display memory. To increase TPA size, bank switching was frequently employed by swapping out ROM or video memory segments. Additionally, CP/M 3.0 incorporated support for portions of the BDOS within bank-switched memory regions.

Debugging application

CP/M included a tool called the Dynamic Debugging Tool (DDT), which allowed users to inspect and modify memory contents 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) programs similar to those found in DOS. Nevertheless, developers could intercept operating system calls to enhance functionality, resulting in auxiliary desk accessory utilities such as SmartKey, a keyboard enhancement program. With CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling system enhancements without relying on transient programs. Third-party developers also retrofitted comparable features like Resident System Modules (RSMs) into CP/M 2.2.

Software installation

Although CP/M provided standardized interfaces for disk and console I/O operations, most applications required installation processes to support device-specific functions such as printers and terminals. These peripherals often utilized manufacturer-specific escape sequences—for example, to enable bold text on printers. Installation routines permitted users to choose devices or modify escape sequences corresponding to particular features. Since no centralized OS service managed these devices, this setup had to be repeated individually for each program.

Printer initialization commands were embedded directly within application software. Consequently, using applications like WordStar with multiple printer types—such as a rapid dot-matrix printer alongside a slower daisy wheel model—necessitated separate software versions tailored to each device, compelling users to load the version matching their selected printer.

Disk formats

The 128-byte per sector, single-density, single-sided disk format utilized by the IBM System/34 and IBM 3740 became the standard 8-inch floppy disk format for CP/M. In contrast, no unified 5.25-inch disk format emerged within the CP/M ecosystem; companies such as Kaypro, Morrow Designs, Osborne, and others each implemented their own unique proprietary formats. The majority of software was distributed in the Xerox 820 disk format, which was compatible with systems like the Kaypro II. However, in 1981, InfoWorld estimated that approximately two dozen disk formats were sufficiently widespread that software developers needed to accommodate them to maximize market reach. Versions of JRT Pascal and Ellis Computing’s software supported multiple 5.25-inch formats, including North Star, Osborne, Heath/Zenith hard and soft sector variants, Superbrain, and various TRS-80 CP/M adaptations. Distributors such as Lifetree also converted CP/M applications to operate on a range of hardware platforms.

CP/M provides flexibility in defining disk parameters—such as reserved areas, directory allocation, and logical-to-physical sector mapping—allowing these settings to be customized for different systems. Despite this adaptability, there is no standardized approach for loading these parameters from disks formatted on other machines.

Nearly all CP/M systems equipped with 8-inch floppy drives can read IBM’s single-sided, single-density format; however, compatibility between CP/M computers is largely influenced by the types of disk drives and controllers employed. This variation arises from differences in floppy disk designs—including hard versus soft sectoring, single or double density, single or double sided media, and track counts ranging from 35 to 80 tracks. By 1982, soft-sectored, single-sided 40-track 5.25-inch disks had become the dominant medium for CP/M software distribution on popular consumer hardware such as the Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. Translation utilities facilitated reading disks with similar formats—for instance, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson machines. Nonetheless, certain disk types like those with 80 tracks or hard-sectoring were incompatible. Apple II owners were confined to Apple's proprietary GCR encoding and had to obtain CP/M software either on Apple-formatted disks or transfer it via serial connections.

The diversity of CP/M disk formats compelled distributors to maintain inventories across several media types or invest in duplication equipment capable of handling multiple formats—unlike the more standardized IBM PC disk systems—which contributed significantly to CP/M’s swift decline after 1981.

Among the final notable CP/M-compatible computers was the Commodore 128 (released in 1985), which included a Z80 processor for running CP/M alongside its native CPU. This system required a 1571 or 1581 drive to read soft-sectored 40-track MFM disks.

The earliest computer featuring a 3.5-inch floppy drive was the Sony SMC-70, operating with CP/M 2.2. Other CP/M-supporting machines utilizing 3.5-inch disks comprised the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (through Montezuma CP/M 2.2). Applied Engineering’s CP/AM for Apple II also accommodated both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially adopted 3-inch drives before transitioning to the more common 3.5-inch format.

File system

File names adhered to the 8.3 convention, consisting of up to eight characters, followed by a period, and a three-character extension denoting the file type (for example, .COM for executable files or .TXT for text documents). When entered at the command prompt, filenames were automatically converted to uppercase; however, certain applications such as MBASIC could generate lowercase filenames that were not easily accessible via the command line.

Disk drives were designated by single letters (e.g., A, B), and files were referenced by prefixing the drive letter and a colon, as in A:FILE.TXT. If no drive letter was specified, the system defaulted to the current drive for file access.

File sizes were expressed in units of 128-byte records, which corresponded to disk sectors; precise byte-level sizing was not supported. The operating system maintained file size information 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 this character mid-file would truncate any subsequent content.

The introduction of larger removable and fixed disk drives brought about disk de-blocking, which increased the number of disk blocks per allocation unit and enabled support for larger files. This improvement, however, raised the minimum allocatable file size from 1 KB on single-density disks up to 32 KB on double-density disks, thereby decreasing storage efficiency for numerous small files.

CP/M 2.2 did not include file modification timestamps; such features were optionally available in MP/M and CP/M 3.0.

Instead of subdirectories, CP/M 2.2 provided 16 numbered user areas for organizing files. Users could switch between these areas using "User X" commands (where X ranged from 0 to 15), with USER 0 set as the default. Files stored in other user areas were isolated from one another, while those in USER 0 remained accessible across all users through explicit path references. This functionality was particularly useful on systems equipped with hard drives rather than smaller floppy disks, enabling separation of tasks—for example, allocating distinct user areas for data entry and billing—to avoid mixing files.

Graphics

Although some S-100 systems supported graphics early on, CP/M itself did not offer standardized graphics capabilities until 1982 with the release of GSX. Because of limited memory resources, graphics usage was rare on 8-bit CP/M platforms, which generally displayed simple ASCII art or utilized custom character sets. Certain models such as the Kaypro series and the TRS-80 Model 4 provided block graphics accessible to programmers using assembler or BASIC. Notably, the Model 4 could deliver 640×240 pixel resolution graphics when equipped with an optional high-resolution board.

Official

Various companies developed official CP/M enhancements derived from Digital Research’s source code. For instance, IMDOS was created by IMS Associates, Inc. for the IMSAI 8080, a clone of the Altair 8800.

Compatible

Several independent operating systems compatible with CP/M but developed without Digital Research code include:

  • Cromemco CDOS by Cromemco
  • MSX-DOS, designed for MSX computers, compatible with CP/M and capable of running its programs
  • The Epson QX-10, offering either CP/M or TPM-II/III-compatible options
  • The British ZX Spectrum-compatible SAM Coupé, which optionally used Pro-DOS (compatible with CP/M-2.2)
  • Amstrad/Schneider CPC and PCW lines bundled with CP/M disk packs
  • The Husky (computer), featuring DEMOS—a ROM-based loader supporting many CP/M applications
  • ZSDOS, a replacement BDOS for CP/M-80 2.2 developed by Harold F. Bower and Cameron W. Cotrill
  • CPMish, an open-source CP/M 2.2-compatible operating system originally created without DR code; since 2022 it has been updated incorporating original DR components under permission from Lineo’s president Bryan Sparks
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS including original DR source code and supports hot-swappable OS modules
  • IS-DOS for the Enterprise and VT-DOS for the Videoton TV-Computer, both developed by Intelligent Software

Improvements

Certain CP/M-compatible operating systems greatly expanded its capabilities, with TurboDOS being a notable example for its support of multiple processors.

Eastern Bloc Variants

Within the former Eastern Bloc, numerous CP/M-80 versions were developed under a variety of names such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, CP/Z, MICRODOS, BCU880, ZOAZ, OS/M, TOS/M, ZSDOS, M/OS, COS-PSA, DOS-PSA, CSOC, CSOS, CZ-CPM, DAC, HC, among others. Additionally, there were CP/M-86 adaptations including SCP1700, CP/K, and K8918-OS. These operating systems were manufactured by companies like the East German VEB Robotron and other producers.

Enduring Influence

Several features in Microsoft Windows originate from legacy compatibility with MS-DOS, which was itself designed to maintain alignment with CP/M. The use of drive letters and the 8.3 filename format are inherited directly from CP/M conventions. Wildcard symbols (? and *) found in Windows command lines also derive from CP/M syntax. Reserved device names such as "PRN:" for printers and "CON:" for the console trace their roots back to CP/M as well. In CP/M, floppy drives were assigned the letters A and B; with the introduction of hard disks, the letter C: was designated for them—a standard that continued into MS-DOS. The control character ^Z, used to signify end-of-file in certain text files, is another element carried over from CP/M. Many DOS commands including DIR, REN/RENAME, and TYPE were modeled after their CP/M equivalents. File extensions like .TXT and .COM remain prevalent across various operating systems today.

Between 1997 and 1998, Caldera made available CP/M 2.2 executables and source code under an open source license. This allowed redistribution and modification of Digital Research’s files related to the CP/M and MP/M families through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead's passing in 2001, Lineo—then holding ownership of these Digital Research assets—broadened the licensing terms later that year. To mark CP/M’s 40th anniversary in October 2014, the Computer History Museum published early versions of its source code.

As of 2018, enthusiasts dedicated to vintage computing along with some niche commercial enterprises continue to develop and maintain systems primarily running 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 (covers IBM's choice of Microsoft DOS over Digital Research's CP/M for the IBM PC)
  • CP/M FAQ at comp.os.cpm and digitalresearch.biz

External links

  1. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1980_CPM
  2. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1975_BDOS
  3. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named johnson
  4. ↑ 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.
  5. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Brown-Strutynski-Wharton_1983
  6. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Strutynski_2010
  7. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CPM.NYT83
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1993
  9. ↑ 9.0 9.1 Cite error: Invalid <ref> tag; no text was provided for refs named Kildall.NYT
  10. ↑ 10.0 10.1 Cite error: Invalid <ref> tag; no text was provided for refs named wilkinson19811019
  11. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wise19820510
  12. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named meyer19820614
  13. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Infoworld 1981
  14. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  15. ↑ 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.
  16. ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
  17. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  18. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named bunnell19820203
  19. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named libes198206