Jump to content

DOS-PSA

From Alfawiki
Adapted from the English Wikipedia article DOS-PSA, available under CC BY-SA 4.0Updated 9 August 20258 sources
Digital Research, Inc.
Company typePrivate
IndustrySoftware
Founded1974
FounderGary Kildall
Headquarters
United States
ProductsCP/M, MP/M, CP/M-86, CP/M-68K, CP/M-8000, CP/M Plus

CP/M, initially an acronym for Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely adopted operating system introduced in 1974. It was developed by Gary Kildall of Digital Research, Inc specifically for Intel 8080 and 85-based microcomputer platforms. As a disk operating system, CP/M was designed to manage file storage on magnetic disks and facilitate program loading from these disks. The earliest versions supported single-task operations on 8-bit processors with memory capacities up to 64 kilobytes, while subsequent releases incorporated multi-user functionality and compatibility with 16-bit processor architectures.

The architecture of CP/M is composed of three primary elements: the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for hardware control and device driver management, the BDOS oversees the file system along with essential system services, and the CCP functions as the command interpreter providing a suite of built-in commands.

During its peak, CP/M established itself as the de facto standard OS for microcomputers utilizing the S-100 bus, maintaining dominance in business computing from the late 1970s through the mid-1980s. By enabling easier application portability among different manufacturers’ hardware, CP/M broadened both hardware and software markets. The availability of cost-effective CP/M-compatible microcomputers fostered a surge in software development, supported by independent programmers who often collaborated within user group communities. Eventually, CP/M’s prevalence declined 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, utilizing an 8-inch floppy-disk drive from Shugart Associates equipped with a custom controller.[1] The system was programmed in Kildall’s proprietary language, PL/M.[2] CP/M’s design drew inspiration from the TOPS-10 operating system used on the DECsystem-10, which Kildall had experience with.[3]

CP/M was compatible with multiple machines powered by the 8080 and Z80 processors. One of its initial licensees, Gnat Computers, secured rights to use CP/M version 1.0 for $90 in 1977. The demand for CP/M surged swiftly, enabling Digital Research to raise licensing fees to amounts reaching tens of thousands within a year.[4]

The development of CP/M 2.0 in 1978 was primarily led by John Pierce under Kildall’s direction. In 1979, early Digital Research team member Kathryn Strutynski joined to assist in debugging this version and later played a major role in advancing CP/M 2.2 and CP/M Plus. Other notable contributors included Robert Silberstein and David K. Brown.[5]

Initially abbreviated as "Control Program/Monitor",[6] the name was updated to "Control Program for Microcomputers" at its commercial debut in 1977.[7] This renaming followed naming trends of that era, similar to Kildall's own PL/M and IBM's CP/CMS, emphasizing its microcomputer orientation. This rebranding effort was part of Kildall and his associates’ strategy to position Digital Research as a premier microcomputer software company, aiming to make its name as closely associated with "microcomputer" as IBM or Microsoft would later become with "personal computer." The company initially known as Intergalactic Digital Research, Inc. was eventually shortened to Digital Research, Inc.[8]

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, with the actual market penetration likely higher due to sublicensing agreements. A wide range of manufacturers developed CP/M-based systems targeting diverse sectors; InfoWorld highlighted CP/M as becoming the leading operating system for small computers. Even companies that maintained proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an alternative option for their 8080/Z80 platforms—a contrast to the absence of a similar standard for 6502-based devices. This widespread adoption was largely driven by CP/M's extensive software ecosystem. The Xerox 820 incorporated CP/M to take advantage of thousands of compatible applications, although Digital Research's manuals were frequently criticized for their low quality. By 1984, Columbia University utilized CP/M source code to compile Kermit binaries tailored for more than a dozen CP/M variants alongside generic versions.

CP/M operated effectively as a "software bus", facilitating communication between multiple programs and varied hardware through a standardized interface. Its portability meant software could be executed across numerous machines with minimal adjustments, typically confined to terminal and printer control codes. This wide-ranging compatibility significantly contributed to CP/M’s success and the availability of software beyond single-vendor operating systems. However, some drawbacks existed, such as applications employing Z80-specific instructions incompatible with 8080/8085 CPUs, and graphics routines that accessed hardware directly—an approach common in early DOS programs.

Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the most prevalent CP/M hardware platform. By 1982, Digital Research reported that CP/M was licensed for over 450 distinct computer models. Prominent CP/M-compatible systems included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The best-selling system supporting CP/M was probably the Amstrad PCW. In the United Kingdom, CP/M was available on educational computers from Research Machines, which even published source code for instructional purposes, and on the BBC Micro through a Z80 co-processor. Additional supported platforms included the Amstrad CPC, Commodore 128, TRS-80, and later models of the ZX Spectrum. CP/M 3 was also utilized by the NIAT handheld device developed for A. C. Nielsen, featuring 1 MB of solid-state storage.

Multi-user Capabilities

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

CP/M Plus

The final iteration of the 8-bit CP/M series was version 3, also referred to as CP/M Plus, which debuted in 1983. Developed by David K. Brown, its BDOS integrated MP/M’s bank switching memory management into a single-user, single-task operating system that remained compatible with CP/M 2.2 applications. This enhancement enabled CP/M Plus to address more than 64 KB of memory on 8080 or Z80 processors and introduced support for file date stamping. The package included tools such as a relocating assembler and linker. CP/M Plus was primarily aimed at advanced 8-bit machines like 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 various CP/M editions tailored for multiple 16-bit processors.

The inaugural release was CP/M-86 for the Intel 8086 CPU, launched in November 1981 under the leadership of project manager Kathryn Strutynski. To differentiate it from the original 8-bit system, that earlier version became known as CP/M-80.

Initially anticipated to become the standard operating system for the IBM PC, CP/M-86 lost out due to licensing conflicts when IBM chose to collaborate with Microsoft instead, resulting in PC DOS derived from 86-DOS. Although Digital Research eventually provided CP/M-86 for IBM PCs following legal pressure, its market presence never matched PC DOS because IBM priced it substantially higher ($240 compared to $40).

The Digital Equipment Corporation Rainbow 100 featured support for CP/M-80 via a Z80 processor, CP/M-86 or MS-DOS on an 8088 chip, or both simultaneously through CP/M-86/80. This dual-processor configuration enabled users to maintain their existing 8-bit CP/M software investments while transitioning into a 16-bit environment. Comparable dual-CPU solutions were implemented in systems like the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.

Following this, Digital Research introduced CP/M-68K for the Motorola 68000 processor in 1982. Initially developed in Pascal/MT+68k and subsequently ported to C, CP/M-68K operated on EXORmacs hardware and was considered by Atari for the ST but ultimately lost out to GEMDOS. It was also deployed on SORD M68 and M68MX machines.

That same year saw the creation of CP/M-8000, a C-based port designed for the Zilog Z8000 CPU found in the Olivetti M20.

These 16-bit variants necessitated recompilation of existing applications. To ease this process, Digital Research provided XLT86—a utility that converted Intel 8080 assembly source code into optimized Intel 8086 assembly compatible with CP/M-86 systems. XLT86 automated handling of calling conventions and minimized code size and was accessible on both CP/M-80 and VAX/VMS platforms.

Displacement by MS-DOS

By the early 1980s, approximately 2,000 applications were available for CP/M, positioning it as the anticipated standard OS for emerging 16-bit computers. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for use on the IBM PC. However, after failing to finalize a signed non-disclosure agreement, IBM turned to Microsoft to supply an operating system instead.

MS-DOS inherited many foundational elements from CP/M, such as file management structures and drive letter assignments (A:, B:, etc.). Its principal advancement was incorporating the FAT file system. This resemblance facilitated porting widely-used CP/M software like WordStar and dBase onto MS-DOS. Additionally, MS-DOS capitalized on the increased memory capacity typical of IBM PCs (usually exceeding 64 KB), allowing it to include more internal commands within its command-line interface—resulting in improved speed and user experience relative to CP/M.

Early hardware add-ons like the Baby Blue card allowed running legacy 8-bit CP/M programs on IBM PCs; nevertheless, by 1982 BYTE magazine characterized MS-DOS as "more user-friendly, faster, with many advantages." InfoWorld noted in 1984 that high software prices hindered CP/M’s adoption in home computing markets. By 1986, manufacturers such as Kaypro had discontinued CP/M-based machines to concentrate exclusively on MS-DOS compatible devices. Consequently, as microcomputing gravitated toward IBM-compatible systems, CP/M’s market share declined swiftly. Industry outlets like Byte gradually ceased coverage of CP/M products by the late 1980s.

Subsequent iterations of CP/M-86 enhanced performance and compatibility with MS-DOS, rebranding under names like DOS Plus and eventually 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 console command processor (CCP) provided by Digital Research. The initial development was carried out by a collective of computer enthusiasts known as "The CCP Group," which included Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, with Richard Conn serving as the lead developer.

The first iteration, ZCPR1, appeared on a disk distributed by SIG/M (Special Interest Group/Microcomputers), affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was released on 14 February 1983 as a ten-disk collection from SIG/M and later updated to version 2.3. This version was also made available in 8080 machine code to accommodate systems based on the 8080 and 8085 processors.

To commercialize the succeeding version while maintaining free access, Richard Conn and Frank Gaude established Echelon Inc. ZCPR3 was introduced on 14 July 1984 as a nine-disk set from SIG/M. It offered the possibility of compiling with reduced functionality for the 8080 CPU, thereby supporting non-Z80 platforms. Version 3 incorporated advanced features such as command shells, alias support, input/output redirection, flow control mechanisms, named directory shortcuts, search path capabilities, customizable menus, password protection, and an integrated online help system.

In January 1987, after Conn ended his involvement in development, Echelon brought Jay Sage on board to enhance ZCPR further. Under his guidance, ZCPR reached version 3.3, which discontinued compatibility with the 8080 processors and introduced a broad range of new utilities and improvements. Despite its popularity within the CP/M user community, ZCPR was unable to halt the overall decline of the CP/M operating system.

Hardware model

A basic CP/M system built around an 8-bit architecture required the following components:

  • A computer terminal capable of ASCII character display
  • A microprocessor such as the Intel 8080/8085 or the Zilog Z80
    • NEC’s V20/V30 processors offered 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 memory address zero
  • A bootstrap mechanism to load the initial disk sector
  • At least one floppy disk drive unit

Digital Research’s official CP/M release was designed exclusively for the Intel 8080 Development System. Hardware manufacturers adapted CP/M to suit their specific configurations involving memory sizes, storage devices, and console interfaces. Since CP/M was compatible with 8080 instructions, it also operated on systems powered by the Z80 processor; many BIOS versions and software packages utilized Z80-specific instructions for enhanced performance.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system aimed at low-cost machines that might lack disk drives. This version first appeared in devices like the Sharp MZ-800 (a cassette-based computer with optional disk support), employing extended Z80 instructions rather than maintaining strict portability with the original 8080 code base. American Microsystems introduced their S83 microprocessor incorporating ROM for both OS and BIOS alongside integrated logic for dynamic RAM control; bulk pricing was approximately $32 per chip.

Most CP/M systems relied on a minimal ROM bootstrap combined with techniques such as bank switching or code injection to load CP/M at address zero in memory; some required manual program entry using front-panel switches during startup.

CP/M utilized a seven-bit ASCII character encoding standard; however, extended characters differed across manufacturers—for instance, Kaypro systems used them to represent Greek letters, Osborne computers employed the eighth bit to denote underlining, and WordStar used it to mark word boundaries. International editions typically substituted specific ASCII characters with localized equivalents according to ISO 646 standards rather than expanding beyond seven bits.

Components

When CP/M is executed, the operating system loaded into memory consists of three main parts:

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

Both the BIOS and BDOS remain resident in memory, whereas the CCP stays resident unless replaced by an application, after which it automatically reloads. Utility commands classified as transient reside on disk as files with a .COM extension.

The BIOS manages hardware elements aside from the CPU and primary memory, overseeing tasks such as character input/output and reading or writing disk sectors. The BDOS provides CP/M’s file system along with input/output abstractions like redirection, operating atop the BIOS layer. The CCP interprets user-entered commands, executing internal instructions (such as DIR or ERA) or loading transient executable commands (for example, PIP.COM or STAT.COM). Third-party software designed for CP/M also functions as transient commands.

While BDOS, CCP, and standard transient utilities remain uniform across different CP/M versions, the BIOS is specifically customized for each hardware platform.

Expanding memory necessitates reinstalling CP/M to allow transient programs to utilize the additional space. The MOVCPM utility modifies object code addresses for jumps and calls to relocate the OS into new memory regions. This patched version can then be saved to disk, enabling applications to access the extended memory. The OS components reside in reserved areas on disk used for booting; during startup, a bootloader—commonly stored in ROM—loads the OS from drive A:.

From a contemporary viewpoint, CP/M appears rudimentary due to its stringent size constraints. Early releases did not detect disk changes automatically, which risked data corruption if disks were swapped without refreshing directory information. Later editions introduced error notifications when attempting to write to a disk that had been changed without reloading its directory, preventing accidental overwrites but requiring a system reboot.

The bulk of CP/M’s complexity lies within BDOS, with CCP and transient commands being comparatively simpler. By simply adapting BIOS routines for new hardware, developers could enable the entire operating system to run on different machines, significantly shortening development cycles and contributing to CP/M’s widespread use. This modular hardware abstraction was innovative at the time; most contemporary operating systems targeted only specific hardware platforms without such flexible designs.

Console Command Processor

The Console Command Processor (CCP) is responsible for handling keyboard input and displaying output on terminals. CP/M supports both printing and video terminals, presenting the A> prompt to indicate the current default disk drive. Users switch drives by entering a 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 a keyword plus optional parameters; internal commands are executed directly by CCP. If a command is not recognized internally, CCP searches for corresponding executable files ("transient" programs) within the current disk and user area, passing any parameters along. After execution completes, BDOS reloads CCP to free memory occupied by transient programs.

Certain commands retain legacy names—for instance, file copying uses PIP (Peripheral Interchange Program), a term borrowed from DEC utilities. Parameter syntax varies among programs without a universal option character standard.

Built-in CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass utilities such as ASM, DDT, DUMP, ED, and SYSGEN.

In CP/M Plus (Version 3), built-in commands are enhanced with features including DIR (which excludes SYS attribute files), DIRSYS / DIRS for listing SYS attribute files, ERASE / ERA, RENAME / REN, TYPE / TYP, and USER / USE for changing user numbers. This version also allows abbreviated forms of built-in commands. Additional transient commands available in CP/M 3 include COPYSYS, DATE, DEVICE, HELP, LINK, PIP, SET, among others, broadening capabilities for system management and programming tasks.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) oversees tasks such as file management, console output, and printing functions. Applications place function codes and parameters into processor registers before invoking a specific fixed memory location. This unchanging address ensures that software remains compatible across multiple hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers the fundamental low-level operations for the operating system, including character input/output and disk sector read/write capabilities. While BDOS performs some disk buffering, it relies on a fixed sector size of 128 bytes prior to CP/M 3.0, necessitating BIOS adjustments to accommodate different disk formats.

Due to the variety of hardware configurations—ranging from integrated video displays versus terminal setups, different UART chips with unique port addresses, to memory-mapped I/O compared to standard 8080 I/O—the BIOS abstracts these variations by providing standardized entry points for CP/M services such as character I/O and disk operations. BIOS support for serial communications is limited or non-existent; therefore, modem functionality generally depends on user-installed overlays containing device-specific serial port routines.

Applications

CP/M served as the platform for numerous groundbreaking business applications. WordStar, one of the earliest widely adopted word processors, and dBase, a prominent microcomputer database system, were initially created for CP/M. Early outlining tools like KAMAS and Out-Think also originated on CP/M before transitioning to MS-DOS. Turbo Pascal (the predecessor to Borland Delphi) and Multiplan (the forerunner of Microsoft Excel) debuted on CP/M before their MS-DOS counterparts. VisiCalc, recognized as the first spreadsheet program, along with Sorcim’s SuperCalc—CP/M’s leading spreadsheet—played significant roles in business computing. Autodesk’s AutoCAD was initially released on CP/M as well.

CP/M supported a wide range of compilers and interpreters for languages such as BASIC, Turbo Pascal, FORTRAN, and PL/I, including early offerings from Microsoft. Many software packages featured installers designed to adapt programs across different hardware platforms; for example, Kaypro II users often converted Xerox 820 disks into their native format. BASIC source code was frequently available, and copy protection measures were generally ineffective due to CP/M’s uniform disk format which facilitated compatibility among software titles.

Graphical constraints limited video games primarily to text-based or character graphics formats, including titles like Telengard, Gorillas, Hamurabi, Lunar Lander, and early interactive fiction such as Zork and Colossal Cave Adventure. Infocom regularly published games compatible with CP/M. Lifeboat Associates distributed user-generated freeware including XMODEM for dependable modem file transfers and the outline processor KAMAS.

Transient Program Area

In the original CP/M implementations for the 8080, 8085, and Z80 processors, the read/write memory range from address 0100 hexadecimal up to just below the address stored at 0006H (which marks the lowest BDOS entry point) was designated as the Transient Program Area (TPA) reserved for application use. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system architecture since some systems allocated substantial address space for BIOS ROMs or video memory. Bank switching was frequently employed to enlarge the TPA by replacing ROM or video memory segments. Additionally, CP/M 3.0 introduced support for placing portions of BDOS within bank-switched memory areas.

Application Debugging

CP/M featured the Dynamic Debugging Tool, commonly referred to as DDT, which allowed users to inspect and modify memory and program components, as well as execute code in a stepwise manner.

Resident Utilities

Initially, CP/M did not support terminate and stay resident (TSR) programs like those found in DOS. Nevertheless, developers could intercept operating system calls to enhance functionality, resulting in auxiliary utilities such as SmartKey, a keyboard customization tool assigning predefined strings to keys. With the arrival of CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced. A null command file mechanism permitted the Command Processor (CCP) to load RSXs without needing transient programs. Comparable approaches, including Resident System Modules (RSMs), were later adapted for CP/M 2.2 by third-party developers.

Installing Software

Although CP/M standardized interfaces for disk and console input/output, most applications required installation procedures to fully support peripherals like printers and terminals. Device control often relied on manufacturer-specific escape sequence codes (for instance, printer commands for bold text), compelling users to execute installation routines to select or tailor these codes for each device. Since CP/M lacked centralized device management, these steps had to be repeated per application.

Printer initialization sequences needed embedding within software. For example, using Wordstar with multiple printers—such as a high-speed dot-matrix alongside a slower daisy wheel printer—demanded separate Wordstar versions customized for each printer type, forcing users to exit and reload the appropriate version when switching devices.

Disk Formats

The 128-byte sector, single-density, single-sided disk format from IBM System/34 and IBM 3740 became the standard 8-inch floppy format for CP/M systems. No unified 5.25-inch disk format existed; manufacturers like Kaypro, Morrow Designs, and Osborne each implemented their own schemes. Most software was distributed in Xerox 820 format, compatible with machines such as the Kaypro II. However, InfoWorld estimated in 1981 that approximately two dozen disk formats were sufficiently popular to require software vendors to support multiple types for wide distribution. JRT Pascal, for example, was available on various 5.25-inch formats (North Star, Osborne, Apple, Heath/Zenith hard and soft sector, Superbrain) plus an 8-inch version. Ellis Computing supported both Heath formats along with sixteen other 5.25-inch variants including TRS-80 CP/M derivatives. Distributors like Lifetree converted CP/M applications across different systems.

CP/M permitted customization of reserved areas, directory structures, and logical-to-physical sector mappings on disks; however, no standard method existed for loading formatting parameters from disks created on other machines. While most CP/M setups with 8-inch drives could read IBM’s single-sided single-density format, cross-system compatibility heavily depended on disk drive hardware and controllers due to the diversity of floppy disk layouts in both 8-inch and 5.25-inch sizes. Variations included sectoring methods (hard or soft), density levels (single or double), number of sides (single or double), track counts (35, 40, 77, or 80), and sector arrangements.

By 1982, the dominant distribution medium for CP/M software became soft-sector, single-sided 40-track 5.25-inch disks utilized by popular consumer systems such as Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. Translation utilities enabled reading disks formatted in similar schemes; for instance, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 platforms. Nonetheless, certain formats like 80-track or hard-sectored disks remained incompatible across systems. Apple II users were confined to Apple’s GCR format and had to acquire CP/M software on Apple-specific media or transfer it through serial connections.

This fragmented landscape of CP/M disk formats—forcing distributors either to stock multiple disk types or invest in multi-format duplication equipment—was a major factor contributing to CP/M’s swift decline after 1981 compared with the more uniform IBM PC disk standards.

Among the last notable CP/M-compatible computers was the Commodore 128 (1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. Operating CP/M on this machine required a 1571 or 1581 disk drive capable of reading soft-sector 40-track MFM disks.

The earliest computer featuring a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (with 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 transitioning to the more common 3.5-inch format.

File system

File naming followed the 8.3 convention, allowing up to eight characters for the name, followed by a period and a three-character extension denoting the file type (for example, .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 that were not easily accessible via the command line interface.

Disk drives were designated by letters (like A, B), with file paths beginning with the drive letter and a colon (e.g., A:FILE.TXT). If no drive letter was specified, commands operated on the current default drive.

File sizes were quantified in 128-byte records, which corresponded to disk sectors; precise byte-level sizing was not supported. The operating system tracked file sizes within the File Control Block (FCB). Text files typically ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, influencing how software interpreted file content.

As disk capacities increased, disk de-blocking techniques raised the number of disk blocks per allocation unit. This enabled handling larger files but also increased the minimum allocation size from 1 KB up to 32 KB for very small files, resulting in inefficient disk space usage when many small files were stored.

CP/M 2.2 did not include file modification timestamps; these were later introduced optionally in MP/M and CP/M 3.0.

While CP/M 2.2 lacked support for subdirectories, it provided 16 numbered user areas to help organize files. Users could switch between these areas using the "User X" command, effectively isolating files by user number and offering basic multi-user functionality. User area 0 was the default and accessible to all users, whereas other user areas kept files separate. This mechanism facilitated file management on systems equipped with hard drives and allowed task segregation—for instance, separating data entry from billing operations on the same computer.

Graphics

Although early S-100 systems offered graphics capabilities, CP/M did not standardize graphics support until 1982 with the introduction of GSX. Due to limited memory resources on typical 8-bit CP/M machines, graphics usage was rare; most displays showed simple ASCII art or employed custom character sets. Certain models—such as those in the Kaypro series and the TRS-80 Model 4—provided block graphics accessible through assembler programming or BASIC's CHR$ function. The TRS-80 Model 4 also supported a 640×240 pixel graphics mode when equipped with an optional high-resolution graphics board.

Official

Some firms created official CP/M upgrades utilizing Digital Research’s source code—for example, IMDOS for the IMSAI 8080, itself a clone of the Altair 8800.

Compatible

A variety of independently developed CP/M-compatible operating systems appeared without incorporating Digital Research code, including:

  • Cromemco CDOS developed by Cromemco
  • MSX-DOS designed for MSX computers, capable of running CP/M applications
  • Epson QX-10 offered either CP/M or compatible TPM-II/TPM-III
  • The British SAM Coupé featured an optional Pro-DOS compatible with CP/M-2.2
  • Amstrad/Schneider CPC and PCW models distributed with CP/M disk sets
  • Husky (computer) employed DEMOS, a ROM-based loader supporting many CP/M programs
  • ZSDOS, a BDOS replacement for CP/M-80 2.2 developed by Harold F. Bower and Cameron W. Cotrill
  • CPMish, an open-source CP/M 2.2-compatible OS originally free of DR code; since 2022 updated to include original DR code under permission from Lineo’s president
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS incorporating DR source code and hot-swappable components
  • IS-DOS for the Enterprise, created by Intelligent Software
  • VT-DOS for the Videoton TV Computer, also developed by Intelligent Software

Feature Improvements

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

Eastern European Variants

Within the former Eastern Bloc, numerous derivatives of CP/M-80 were developed under diverse designations, 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, CP/M-86 versions like SCP1700, CP/K, and K8918-OS were produced. These operating systems were manufactured by entities including the East German VEB Robotron.

Historical Impact

Microsoft Windows incorporates several features inherited from MS-DOS, which itself aimed to maintain backward compatibility with CP/M. The use of drive letters and the 8.3 filename format trace back to CP/M. The wildcard symbols (?, *) employed in Windows originate from CP/M conventions, as do reserved device names such as "PRN:" and "CON:" used for output redirection. In CP/M, floppy drives were identified by the letters A and B; hard disks began with C:, a scheme preserved in MS-DOS. The control character ^Z signifying end-of-file in text documents also stems from CP/M. Numerous DOS commands—like DIR, REN/RENAME, and TYPE—were modeled after their CP/M counterparts. File extensions including .TXT and .COM continue to be widely utilized.

Between 1997 and 1998, Caldera made CP/M 2.2 binaries and source code available under an open source license. This allowed redistribution and modification of Digital Research's CP/M and MP/M files through Tim Olmstead's "The Unofficial CP/M Web site." After Olmstead passed away in 2001, Lineo, then holding these rights, expanded the licensing terms later that year. To mark its 40th anniversary in October 2014, the Computer History Museum published early versions of the CP/M source code.

As of 2018, enthusiasts of vintage computing alongside some niche commercial enterprises remain active in developing and supporting systems primarily running CP/M 2.2 as their main operating system.

Related Topics

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 (archived)
  • Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013 (archived)
  • IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, Computer History Museum
  • Triumph of the Nerds, PBS (covers IBM's choice of Microsoft DOS over Digital Research's CP/M)
  • CP/M FAQ at comp.os.cpm and Digital Research official FAQ

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. ↑ ...
  5. ↑ ...
  6. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CPM.NYT83
  7. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1993
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall.NYT