Jump to content

CP/KSOB

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

CP/M, initially known as Control Program/Monitor and subsequently renamed Control Program for Microcomputers, is a widely adopted operating system introduced in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. Functioning as a disk operating system, CP/M managed file organization on magnetic disks and facilitated program execution. Its early iterations supported single-tasking on 8-bit processor systems with a memory limit of 64 kilobytes, while later releases incorporated multi-user functionality and compatibility with 16-bit processor architectures.

The design of CP/M is composed of three main components: the Basic Input/Output System (BIOS) which provides hardware device drivers, the Basic Disk Operating System (BDOS) responsible for file system operations and application-level services, and the Console Command Processor (CCP), a command-line interface featuring built-in commands.

During its peak, CP/M emerged as the de facto standard operating system for microcomputers utilizing the S-100 bus, dominating the business computing environment from the late 1970s until the mid-1980s. By enabling easier software portability across diverse hardware manufacturers, it broadened both hardware and software ecosystems. The widespread availability of cost-effective CP/M-compatible microcomputers encouraged software development by independent programmers and user communities. However, CP/M's prominence diminished following the 1981 introduction of the IBM PC, which popularized DOS.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, which incorporated a Shugart Associates 8-inch floppy-disk drive connected through a bespoke controller.[1] The system was programmed in Kildall's proprietary language, PL/M (Programming Language for Microcomputers).[2] The design drew inspiration from the TOPS-10 operating system running on the DECsystem-10 mainframe computers, which Kildall had previously utilized.[3][4][5]

CP/M was compatible with numerous machines based on the 8080 and Z80 processors. Among its early licensees was Gnat Computers, which acquired rights in 1977 to deploy CP/M 1.0 on their microcomputers for $90 each. Rapidly increasing demand enabled Digital Research to escalate licensing fees to amounts reaching tens of thousands of dollars.[6]

Under Kildall’s direction, John Pierce spearheaded development of CP/M version 2.0 in 1978. Kathryn Strutynski, who had been a colleague at the Naval Postgraduate School, joined Digital Research in early 1979 to assist with debugging CP/M 2.0; she later played a significant role in advancing CP/M 2.2 and CP/M Plus. Other notable early contributors were Robert "Bob" Silberstein and David "Dave" K. Brown.[7][8]

The original acronym stood for "Control Program/Monitor,"[9] but was officially redefined as "Control Program for Microcomputers" in November 1977.[10] This change aligned with naming conventions such as Kildall’s PL/M programming language and IBM’s CP/CMS operating system. The renaming reflected strategic efforts by Kildall, his wife, and business partner Dorothy McEwen to commercialize both CP/M and the PL/M compiler under the Digital Research banner—seeking to establish the brand as synonymous with "microcomputer," much like IBM and Microsoft later did with "personal computer." Eventually, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[11]

Early Achievements

By September 1981, Digital Research had distributed more than licenses for CP/M, with sublicensing arrangements indicating an even broader user base. Numerous manufacturers developed CP/M-based computers aimed at various market segments; InfoWorld highlighted that CP/M was emerging as the definitive operating system for small computers. Even companies offering proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an alternative on 8080/Z80 hardware—contrasting with the more fragmented landscape seen in the 6502 CPU market.[12] This widespread adoption was largely driven by CP/M’s extensive software catalog. For instance, the Xerox 820 incorporated CP/M to take advantage of its rich application library, despite Digital Research’s limited documentation, which Xerox supplemented through a Howard W. Sams manual.[13][14][15]

By 1984, Columbia University had utilized the same source code to compile Kermit binaries for more than a dozen CP/M variants along with generic builds.[16] CP/M operated effectively as a "software bus",[17][18] allowing software to interact consistently across different hardware platforms.[19] Applications were generally portable between systems, requiring only adaptation of terminal and printer escape codes. This cross-platform compatibility helped expand CP/M’s software ecosystem beyond that of single-vendor operating systems. However, some constraints existed, such as Z80-specific instructions that were incompatible with 8080/8085 CPUs and machine-dependent graphics routines that bypassed OS layers to enhance performance.

Bill Gates noted that the Apple II equipped with a Z-80 SoftCard was the leading hardware platform running CP/M.[20] By 1982, Digital Research announced that CP/M had been licensed for use on over 450 different computer models.[21] Key platforms included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The most commercially successful CP/M-capable computer was probably the Amstrad PCW. In the United Kingdom, CP/M operated on educational systems from Research Machines (with source code publicly available) and on the BBC Micro when paired with a Z80 co-processor. Other supported machines encompassed the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 powered the NIAT handheld device designed for A. C. Nielsen, which featured 1 MB of solid-state storage.

Multi-user Capability

Digital Research introduced MP/M in 1979, a multi-user variant derived from CP/M. MP/M allowed multiple users to connect simultaneously through terminals to a single host computer, each operating independently with separate screens and keyboards. Subsequent releases extended support to processors with 16-bit architecture.

CP/M Plus

Launched in 1983, CP/M Plus (version 3) represented the final iteration of the 8-bit CP/M series and featured BDOS developed by David K. Brown. It incorporated MP/M’s bank-switching memory management into a single-user operating system compatible with applications written for CP/M version 2.2, enabling access to memory beyond 64 KB on 8080 or Z80 processors. Enhancements included file timestamping and an integrated suite of development utilities such as a relocating assembler and linker. Late-model 8-bit systems like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and TRS-80 Model 4 adopted CP/M Plus as their operating system.

16-bit Variants

Digital Research initiated the development of CP/M versions tailored for 16-bit processors, beginning with CP/M-86 designed for the Intel 8086, released in November 1981. The CP/M-86 project was overseen by Kathryn Strutynski. The earlier 8-bit iteration of CP/M subsequently became known as CP/M-80.

Although CP/M-86 was initially expected to serve as the primary operating system for the IBM PC, licensing disagreements between Digital Research and IBM prevented this outcome. Instead, IBM opted for Microsoft’s PC DOS, which was based on 86-DOS. While CP/M-86 was eventually offered as an alternative following legal pressure, its adoption was hindered by a significantly higher cost—$240 compared to PC DOS’s $40.

The DEC Rainbow 100 provided a versatile platform by supporting CP/M-80 on a Z80 processor and either CP/M-86 or MS-DOS on an 8088 CPU, allowing users to maintain their investment in 8-bit applications while transitioning to 16-bit systems. Comparable dual-processor configurations were found in computers such as the CompuPro System 816 (running CP/M 8-16) and the Zenith Z-100.

Following CP/M-86, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 processor. Initially developed using Pascal/MT+68k and later ported to C, this version operated on EXORmacs machines and was considered for Atari ST before Atari selected GEMDOS instead. CP/M-68K also saw use on SORD M68 series computers.

In the same year, a version of CP/M-68K was adapted for the Zilog Z8000 processor under the name CP/M-8000 on the Olivetti M20 system.

These 16-bit iterations necessitated recompilation of software; however, some assembly language programs could be automatically converted using utilities such as Digital Research’s XLT86. This tool translated Intel 8080 assembly instructions into Intel 8086 code while optimizing size and managing calling conventions, easing transitions from CP/M-80/MP-M80 environments to CP/M-86/MP-M86 platforms. XLT86 was accessible on both CP/M-80 and VAX/VMS systems.

Replacement by MS-DOS

By the early 1980s, approximately 2,000 applications were available for CP/M, positioning it as the anticipated standard operating system for 16-bit machines. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a new version of CP/M for use on the IBM PC. When negotiations faltered due to IBM's inability to secure a signed non-disclosure agreement, Microsoft was contracted to supply the operating system instead.

MS-DOS incorporated many fundamental concepts from CP/M, including file management structures and drive letter assignments (A:, B:, etc.). Its principal advancement was the introduction of the FAT file system, which simplified porting popular CP/M applications like WordStar and dBase. Unlike CP/M, MS-DOS did not employ separate user areas for files but took advantage of larger memory capacities (typically 64 KB or more) to embed additional commands into its command interpreter, enhancing speed and usability on floppy disk-based PCs.

Among early IBM PC peripherals was the Baby Blue expansion card, which enabled running 8-bit CP/M programs such as WordStar on the PC. Despite this compatibility option, industry assessments favored MS-DOS; BYTE magazine in 1982 characterized it as "more user-friendly, faster, with many more advantages." By 1984, InfoWorld highlighted that CP/M struggled in the home computing market due to expensive software offerings. By 1986, manufacturers like Kaypro discontinued production of 8-bit CP/M systems to concentrate on MS-DOS compatible hardware. As IBM-compatible platforms gained dominance, CP/M's market share declined sharply and media coverage dwindled considerably by the late 1980s.

Subsequent releases of CP/M-86 enhanced both performance and compatibility with MS-DOS, eventually leading to rebranding efforts under names such as DOS Plus and later DR-DOS.

ZCPR

ZCPR, which stands for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for Digital Research's console command processor (CCP). The initial development was carried out by a collective of enthusiasts known as "The CCP Group," comprising Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, Bob Mathias, and notably Richard Conn, who played a leading role.

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

Richard Conn and Frank Gaude established Echelon Inc. to commercialize the subsequent release while maintaining its free software availability. On 14 July 1984, ZCPR3 was introduced as nine SIG/M disks; this version’s code could be compiled for 8080 systems but with some functionality limitations. Its notable enhancements included the incorporation of shells, alias commands, input/output redirection, flow control mechanisms, named directory support, search path capabilities, customizable menus, password protection, and integrated online help.

Development ceased by Conn in January 1987; however, Echelon engaged Jay Sage to advance the project with ZCPR version 3.3. This update eliminated support for the 8080 processor and introduced substantial new features along with additional utilities. Despite receiving considerable backing from CP/M users, ZCPR was unable to halt the overall decline in CP/M's market presence.

Hardware model

A basic CP/M system operating on an 8-bit platform required the following components:

  • A computer terminal utilizing ASCII character encoding
  • A microprocessor such as the Intel 8080/8085 or Zilog Z80
    • NEC’s V20 and V30 processors provided 8080 emulation capabilities enabling CP/M operation on PC-DOS/MS-DOS hardware; similarly, any IBM PC-compatible could run CP/M-86
  • A minimum of 16 KB RAM beginning at memory address zero
  • A bootstrap mechanism to load the initial disk sector
  • At least one floppy disk drive

The official CP/M from Digital Research was designed exclusively for the Intel 8080 Development System; hardware vendors typically adapted portions of the operating system to suit their specific configurations. CP/M functioned on Z80-based machines due to their backward compatibility with 8080 instruction sets. While Digital Research’s core components avoided using Z80-specific instructions to maintain portability, many BIOS implementations and applications on Z80 systems took advantage of these extended instructions.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system aimed at cost-effective computers lacking disk drives. This OS first appeared in the Sharp MZ-800 cassette-driven system with optional disk support and utilized enhanced Z80 instructions rather than strictly preserving compatibility with the original 8080 architecture.

American Microsystems introduced the S83 microprocessor: a Z80-compatible chip integrating an 8 KB ROM containing both the OS and BIOS along with built-in logic for dynamic RAM interfacing. The S83 was priced at $32 per unit when purchased in lots of one thousand.

Most systems employed a minimal ROM bootstrap combined with techniques like bank switching or bus injection to load executable code at address zero—a requirement of the 8080 processor—though some machines necessitated manual program entry through front-panel switches during startup.

CP/M utilized the standard 7-bit ASCII character set; however, manufacturers implemented differing extensions within the eighth bit—for instance, Kaypro used these for Greek alphabet characters, Osborne machines applied them for underlining text, and WordStar designated them as end-of-word markers. International editions generally substituted certain ASCII characters according to ISO 646 standards rather than expanding beyond the original seven-bit range.

Components

When CP/M is operational in memory, it consists of three primary parts:[9][22][23][24][25]

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

Both the BIOS and BDOS remain resident in memory continuously, whereas the CCP stays resident unless temporarily replaced by an application, after which it is reloaded. Standard utilities are delivered as transient commands stored in .COM files on disk.

The BIOS oversees hardware devices except for the CPU and main memory, managing tasks such as character input/output and reading or writing disk sectors. The BDOS operates the CP/M file system and provides I/O abstractions like redirection atop the BIOS layer. The CCP interprets user commands, executing internal commands such as DIR and ERA or launching executable transient commands like PIP.COM and STAT.COM. Third-party software designed for CP/M runs as transient commands.

Across different CP/M versions, BDOS, CCP, and the standard transient commands remain unchanged; only the BIOS adapts to specific hardware configurations.

To utilize added memory, CP/M must be reinstalled so transient programs can access the expanded space. The MOVCPM utility modifies object code addresses to correspond with new memory locations, enabling the operating system to leverage additional memory. Once installed, BIOS, BDOS, and CCP are stored in designated disk areas used during booting. Typically, a bootloader embedded in ROM firmware loads the OS from the disk in drive A:.

By contemporary standards, CP/M appears rudimentary because of its tight size limitations. Early editions did not detect disk swaps automatically, which risked data corruption if a new disk was inserted without reloading its directory. Starting with version 1.1, attempting to write before reading a new disk directory causes a critical error that prevents overwriting but requires restarting the system.

The bulk of CP/M's complexity resides within BDOS and, to a lesser degree, within CCP and transient commands. This architecture permitted porting only the BIOS routines to new hardware platforms to achieve full OS functionality, significantly reducing development time and facilitating CP/M's broad adoption. This method of hardware abstraction was pioneering at that time and has since become commonplace in modern operating systems.

Console Command Processor

The Console Command Processor (CCP) manages input from the keyboard and outputs responses to terminals, supporting both printing devices and video displays. Users enter commands through a command-line interface, typically indicated by a prompt showing the current default disk drive (for example, A>). Changing the default drive is accomplished by typing the drive letter followed by a colon (e.g., B:), which updates the prompt accordingly.

The command-line style of CP/M draws influence from Digital Equipment Corporation’s command languages found in systems such as RT-11 and OS/8. Commands consist of a keyword followed by parameters separated by spaces or special symbols. Internal commands are executed directly by the CCP; other commands launch executable files known as "transient" programs, after which BDOS reloads CCP to free memory.

Several commands preserve legacy names from earlier systems—for instance, file copying is performed using PIP (Peripheral Interchange Program). Parameter syntax varies among programs without a unified standard for option characters.

Core CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient utilities encompass tools like ASM, DDT, DUMP, ED, and SYSGEN.

In CP/M Plus (Version 3), built-in commands are enhanced with additions such as DIRSYS/DIRS for managing system files and ERASE/ERASE for file deletion, along with abbreviations for internal commands. The list of transient commands is also extended to include utilities like COPYSYS, DATE, HELP, LINK, among others, providing more sophisticated system management capabilities.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) oversees fundamental tasks such as file management, console output, and printing functions. Programs interact with BDOS by placing function identifiers and parameters into processor registers before invoking a specific memory location. This standardized method guarantees software compatibility across various hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers essential low-level services required by the operating system, including character input/output and reading or writing disk sectors. Before the release of CP/M 3.0, BIOS was designed around a fixed 128-byte sector size typical of single-density 8-inch floppy disks; support for larger sector sizes found on 5.25-inch disks was implemented through BIOS variations tailored to specific models.

Due to the wide range of hardware configurations—such as integrated video displays, different serial port arrangements, and memory-mapped I/O—BIOS customization was necessary to mask these differences from the OS. Serial communication capabilities within BIOS were limited or sometimes nonexistent, prompting CP/M applications that used modems to include user-installed overlays for managing machine-specific serial ports.

Applications

CP/M served as a platform for groundbreaking business software, including WordStar, one of the earliest widely used word processors, and dBase, an early popular database application. Other significant programs available on CP/M included Turbo Pascal (the forerunner of Borland Delphi), Multiplan (which preceded Microsoft Excel), VisiCalc (the first spreadsheet), and AutoCAD from Autodesk. Sorcim's SuperCalc emerged as the leading spreadsheet for CP/M before competing in the MS-DOS environment.

A diverse selection of compilers and interpreters supported languages such as BASIC, FORTRAN, and PL/I, featuring several early offerings from Microsoft. CP/M software often came with adaptable installation routines capable of handling different hardware setups; for instance, Kaypro II users could convert software formatted for Xerox 820 disks to their own system format.

The open design of CP/M allowed easy access to source code and reduced the effectiveness of copy protection mechanisms. Unlike contemporaneous systems that relied on proprietary disk formats for security, CP/M prioritized interoperability by using standard disk formats.

Although limited graphics capabilities restricted video game development on CP/M, numerous text-based games like Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction titles such as Zork and Colossal Cave Adventure were successfully ported. Infocom consistently released titles in CP/M format. Lifeboat Associates distributed user-created freeware like XMODEM, which facilitated dependable file transfers over modems. The outline processor KAMAS also originated within the CP/M environment.

Transient Program Area

In the original CP/M implementations for the 8080, 8085, and Z80 processors, the read/write memory region extending from address 0100 hexadecimal up to just below the BDOS start address (0006H) was designated as the Transient Program Area (TPA), intended for application use. Although these CPUs could address up to 64 KB of memory, the actual TPA size depended on system architecture. Some machines reserved portions of address space for BIOS ROMs or video memory, thereby reducing available TPA capacity. Bank switching techniques allowed larger TPAs by dynamically replacing ROM or video memory segments as needed. With CP/M 3.0, this concept was expanded to permit sections of BDOS itself to reside within bank-switched memory areas.

Application Debugging

CP/M featured a Dynamic Debugging Tool, commonly known as DDT, which facilitated memory inspection, program module manipulation, and stepwise execution of software.

Resident Utilities

Initially, CP/M did not provide native support for terminate-and-stay-resident (TSR) programs as found in DOS. Nonetheless, developers could intercept operating system calls to enhance functionality, enabling additional utilities like SmartKey, a keyboard remapping tool. With the release of CP/M 3, the system incorporated support for dynamically loadable Resident System Extensions (RSX), permitting the CCP to load RSXs directly without requiring transient programs through null command files. Similarly, third-party adaptations such as Resident System Modules (RSMs) were backported to CP/M 2.2 to achieve comparable capabilities.

Software Setup

Although CP/M standardized interfaces for disk and console input/output, applications still required configuration to accommodate device-specific features such as printers and terminals. Because these peripherals often depended on manufacturer-dependent escape sequences—for instance, printer commands to enable bold text varied by model—installation routines allowed users to select devices or customize these sequences on a per-application basis. No centralized operating system service managed these hardware interfaces.

Programs had to embed printer initialization codes internally. Consequently, using software like WordStar with multiple printers (e.g., dot-matrix and daisy wheel) necessitated distinct versions tailored for each device, obliging users to reload the appropriate version when switching printers.

Disk Formats

The standard 8-inch floppy disk format for CP/M was based on the IBM System/34 and IBM 3740 designs, featuring 128-byte sectors in single-density, single-sided configuration. In contrast, no universal 5.25-inch disk format existed within CP/M; manufacturers such as Kaypro, Morrow Designs, and Osborne each implemented proprietary formats. Among these, some gained wider acceptance—most commercial software was distributed in the Xerox 820 format compatible with systems like the Kaypro II. However, according to a 1981 InfoWorld estimate, approximately two dozen formats were prevalent enough that software publishers needed to support multiple disk types to maximize market reach. For example, JRT Pascal was offered on various 5.25-inch formats including North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain, alongside an 8-inch version. Ellis Computing supported both Heath formats plus sixteen additional 5.25-inch variants including TRS-80 CP/M types. Distributors such as Lifetree also converted CP/M applications across different hardware platforms.

Differences in disk formats stemmed from system design choices and hardware constraints. While CP/M permitted customization of reserved areas, directory sizes, and logical-to-physical sector mappings, no standardized approach existed to automatically read formatting parameters from disks created on other systems.

Nearly all CP/M machines equipped with 8-inch drives could read the IBM single-sided, single-density format. Compatibility with other formats depended heavily on the specific drive and controller hardware amid numerous floppy variations—ranging from hard or soft sectored media; single or double density and sided; track counts varying from 35 up to 80; and diverse sector arrangements. When formats were sufficiently similar, conversion utilities enabled cross-machine disk reading—for instance, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. Nonetheless, certain formats such as 80-track or hard sectored disks remained incompatible. Apple II users were confined to Apple's GCR format and required either Apple-formatted disks or serial transfers to utilize CP/M software.

The fragmented nature of CP/M disk formats compelled distributors to maintain inventories of multiple disk types or invest in multi-format duplication hardware. This lack of uniformity compared with IBM PC disk standards significantly contributed to CP/M’s rapid decline post-1981.

Among the last prominent CP/M-capable computers was the Commodore 128 (1985), which incorporated a Z80 processor dedicated to running CP/M alongside its native CPU. It necessitated a 1571 or 1581 drive to read soft-sector 40-track MFM formatted disks.

The earliest computer featuring a 3.5-inch floppy drive was the Sony SMC-70, operating under 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 running Montezuma CP/M 2.2. Applied Engineering’s CP/AM for Apple II also provided compatibility with 3.5-inch disks and RAM disks through memory expansion cards. The Amstrad PCW originally utilized 3-inch floppy drives before transitioning to 3.5-inch drives.

File system

File names adhered to the 8.3 convention, allowing up to eight characters before a period, followed by an extension of no more than three characters, typically denoting the file type (for example, .COM for executable files and .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 names, which posed challenges for command line referencing.

Disk drives were designated by a drive letter (such as A: or 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 defaulted to the current active drive.

File size was represented in 128-byte records, corresponding to disk sectors, rather than exact byte counts. The current length of a file was maintained within its File Control Block (FCB). Text files traditionally concluded with a control-Z character (ASCII SUB, hex 1A) to signify the end-of-file; inserting this character prematurely truncated the file at that point.

With the advent of larger removable and fixed disks, disk de-blocking techniques increased the number of blocks per allocation unit, enabling support for bigger files. However, this raised the minimum allocatable unit size from 1 KB (typical of single-density disks) up to 32 KB for even a single-byte file on newer drives, resulting in inefficient storage usage when handling numerous small files.

Modification timestamps were not present in CP/M 2.2 but became optionally available in MP/M and CP/M 3.0 versions.

CP/M 2.2 did not support subdirectories, instead providing 16 numbered user areas for file organization. Users could switch between these areas using the "User X" command at the prompt. Security measures were minimal, reflecting its design for personal computing environments. User areas mainly facilitated compatibility with multi-user MP/M systems and helped segregate tasks on machines equipped with hard drives—for instance, separating billing records from data entry files. Files stored in USER 0 were accessible across user areas but required explicit user area path specification. While less advantageous on small floppy disks, user areas improved file management on devices with larger storage capacities.

Graphics

Although early S-100 systems supported graphics capabilities, CP/M itself lacked standardized graphics functionality until 1982 with the introduction of the GSX. Due to limited memory resources, graphics usage was rare on 8-bit CP/M machines, which primarily displayed simple ASCII art or utilized custom character sets. Certain models such as the Kaypro line and the TRS-80 Model 4 included video hardware capable of block graphics accessible through assembler or BASIC’s CHR$ function. Additionally, the Model 4 offered an optional high-resolution mode with 640x240 pixel display capability.

Official

Several organizations created official CP/M enhancements derived from Digital Research’s source code. One example is IMDOS, developed for the IMSAI 8080, which was a clone of the Altair 8800.

Compatible

A variety of independently developed CP/M-compatible operating systems emerged without utilizing Digital Research’s original codebase, including:

  • Cromemco CDOS by Cromemco
  • MSX-DOS, designed for MSX computers and compatible with CP/M applications
  • Epson QX-10 provided CP/M or compatible TPM-II/III environments
  • The British ZX Spectrum-compatible SAM Coupé featured Pro-DOS, an OS compatible with CP/M-2.2
  • Amstrad/Schneider CPC and PCW product lines included CP/M disk packs
  • Husky (computer) operated DEMOS, a ROM-based loader supporting numerous CP/M programs
  • ZSDOS served as a replacement BDOS for CP/M-80 2.2 developed by Harold F. Bower and Cameron W. Cotrill
  • CPMish is a free OS compatible with CP/M 2.2 initially developed without Digital Research code; it has since incorporated original DR components following authorization from Lineo’s president in 2022
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is compatible with CP/M 2.2 and includes source code plus utilities enabling hot-swappable OS modules
  • IS-DOS for the Enterprise, created by Intelligent Software
  • VT-DOS for the Videoton TV Computer, also produced by Intelligent Software

Improvements

Certain CP/M-compatible operating systems expanded capabilities considerably, exemplified by TurboDOS, which supported multi-processor configurations.

Eastern Bloc Variants

Within the former Eastern Bloc, numerous CP/M-80 offshoots appeared 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, there were CP/M-86 adaptations like SCP1700, CP/K, and K8918-OS. These versions were manufactured by entities including the East German VEB Robotron.

Legacy Impact

Several features in Microsoft Windows trace their origins to backward compatibility with MS-DOS, which itself inherited aspects from CP/M. For instance, the drive letter assignment system and the 8.3 filename format used in MS-DOS and early Windows were derived from CP/M conventions. Wildcard symbols such as ? and * employed in Windows command lines also originate from CP/M. Reserved device names for output redirection like "PRN:" and "CON:" have their roots in CP/M as well. In CP/M, floppy drives were assigned letters A and B; when hard disks became common, they were designated as C:, a practice that MS-DOS continues to follow. The control character ^Z, used to indicate end-of-file in certain text documents, likewise stems from CP/M. Numerous DOS commands (for example DIR, REN/RENAME, TYPE) closely resemble those found in CP/M, and file extensions such as .TXT and .COM remain widely utilized.

Between 1997 and 1998, Caldera made available CP/M 2.2 binaries along with source code under an open source license. This facilitated redistribution and modification of Digital Research’s software through Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—then holding these rights—broadened the license terms. In October 2014, the Computer History Museum released early CP/M source code to honor its 40th anniversary.

As of 2018, communities dedicated to vintage computing alongside niche commercial entities persist in developing and maintaining systems predominantly running CP/M 2.2 as their primary 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 (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, 2014
  • Triumph of the Nerds, PBS documentary covering IBM's choice of Microsoft DOS over Digital Research's CP/M
  • CP/M FAQ at comp.os.cpm and Digital Research archives

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. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Dr. Dobb's Journal Apr 1976
  5. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Digital Research (Firm)
  6. ↑ ...
  7. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Brown-Strutynski-Wharton_1983
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Strutynski_2010
  9. ↑ 9.0 9.1 Cite error: Invalid <ref> tag; no text was provided for refs named CPM.NYT83
  10. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall_1993
  11. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall.NYT
  12. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wilkinson19811019
  13. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wise19820510
  14. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named meyer19820614
  15. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Infoworld 1981
  16. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  17. ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
  18. ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
  19. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  20. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named bunnell19820203
  21. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named libes198206
  22. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CPM-system-manual
  23. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CPM-86-system-guide
  24. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CPM-68k-system-guide
  25. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named CPM-8000-system-guide