Jump to content

CP/KC

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

CP/M, an acronym initially representing Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely-used operating system introduced in 1974 for Intel 8080 and 85-based microcomputer platforms by Gary Kildall of Digital Research, Inc. This disk operating system was engineered to manage files stored on magnetic disks and to execute programs directly from disk storage. Early iterations supported only single-tasking on 8-bit processors with a memory limit of 64 kilobytes, but subsequent releases incorporated multi-user functionality and compatibility with 16-bit processor architectures.

The fundamental structure of CP/M consists of three main parts: the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS is responsible for hardware communication and device driver management, the BDOS oversees file system operations and core system services, while the CCP functions as the command interpreter, offering a set of integrated commands.

CP/M emerged as the de facto operating standard dominating microcomputers, especially those utilizing the S-100 bus. It gained extensive traction in commercial environments throughout the late 1970s into the mid-1980s. By enabling software to be easily transferred across different hardware platforms, CP/M significantly broadened both software and hardware markets. Its presence on cost-effective microcomputers encouraged software development innovation, fostered by active 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 that employed a custom controller paired with a Shugart Associates 8-inch floppy-disk drive.[1] The system was programmed using Kildall’s own language, PL/M.[2] CP/M’s design was influenced by the TOPS-10 operating system running on the DECsystem-10 mainframe, which Kildall had experience using.[3]

CP/M was compatible with various machines based on the 8080 and Z80 processors. One of its early licensees was Gnat Computers, which in 1977 acquired rights to distribute CP/M version 1.0 at $90 per unit. The demand escalated quickly, allowing Digital Research to increase licensing fees to several tens of thousands annually.[4]

Under Kildall’s guidance, John Pierce spearheaded development of CP/M 2.0 in 1978. Kathryn Strutynski, who had been Kildall’s colleague at the Naval Postgraduate School, joined Digital Research in 1979 to assist with debugging CP/M 2.0 and later played a key role in developing CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert Silberstein and David K. Brown.[5][6]

The original meaning of CP/M as "Control Program/Monitor" was changed to "Control Program for Microcomputers" in trademark documentation filed in 1977.[7] This renaming aligned with naming styles such as Kildall’s own PL/M language and IBM’s CP/CMS systems. The change was part of a strategic move by Kildall, his wife, and business partner Dorothy McEwen to commercialize both CP/M and the PL/M compiler under the Digital Research brand, intending to establish it as a definitive operating system for microcomputers—anticipating similar branding success later achieved by IBM and Microsoft with personal computers. Subsequently, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.[8]

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, with the true market penetration likely greater due to sublicensing arrangements. A wide array of manufacturers offered CP/M-based computers tailored to various sectors; InfoWorld highlighted CP/M's emergence as the dominant operating system for small computers. Even companies maintaining proprietary systems like Heath/Zenith (HDOS) provided CP/M as an option for their 8080/Z80 platforms, contrasting with the 6502 CPU domain where no similar standard existed.[9] The extensive software catalog supporting CP/M contributed significantly to its adoption. For example, the Xerox 820 utilized CP/M to access thousands of compatible programs, despite Digital Research’s documentation being less than ideal.[10][11][12]

By 1984, Columbia University had adapted CP/M source code to produce Kermit executables for more than a dozen CP/M variants along with generic versions.[13] CP/M operated as a "software bus",[14][15] facilitating uniform communication between software and hardware components.[16] Its ability to be ported across different hardware—requiring primarily terminal and printer control definitions—enhanced its widespread use and encouraged software creation. However, some drawbacks included programs employing the Z80’s extended instruction set, which were incompatible with 8080/8085 CPUs, as well as graphics routines that were often hardware-specific in many games.[17]

Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware platform running CP/M.[18] By 1982, Digital Research announced over 450 computer models had licensed CP/M.[19] Prominent systems utilizing CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and MSX machines. Among these, the best-selling CP/M-compatible device was probably the Amstrad PCW. In the UK market, CP/M was accessible on educational machines from Research Machines (with source code released for educational purposes), the BBC Micro outfitted with a Z80 co-processor, the Amstrad CPC, Commodore 128, TRS-80, and subsequent ZX Spectrum models. Additionally, CP/M 3 powered the NIAT handheld computer created for internal use by A. C. Nielsen, featuring 1 MB of solid-state storage.

Multi-user Functionality

Digital Research introduced MP/M in 1979, a multi-user variant derived from CP/M. MP/M allowed multiple users to access a single system simultaneously through separate terminals, each equipped with its own display and keyboard. Subsequent iterations expanded support to include 16-bit processors.

CP/M Plus

Released in 1983, CP/M Plus (also known as CP/M 3) represented the final iteration of the 8-bit CP/M series, incorporating BDOS designed by David K. Brown. This version combined MP/M’s bank switching memory management into a single-user, single-task operating system that maintained compatibility with applications developed for CP/M 2.2 while enabling utilization of memory beyond 64 KB on 8080 or Z80 CPUs. Enhancements included file date stamping and integrated development utilities such as a relocating assembler and linker. CP/M 3 targeted advanced late-generation 8-bit systems like the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX platforms, and TRS-80 Model 4.

16-bit Variants

Digital Research extended CP/M to support 16-bit processors, beginning with CP/M-86 designed for the Intel 8086, released in November 1981. The CP/M-86 product line was overseen by Kathryn Strutynski. To differentiate it from the original, the 8-bit version was renamed CP/M-80.

Although CP/M-86 was initially anticipated to become the default operating system for the IBM PC, licensing conflicts caused IBM to select Microsoft's PC DOS, which was based on 86-DOS. Despite Digital Research later offering CP/M-86 as an alternative following legal pressure, it struggled to gain market share because IBM priced it substantially higher than PC DOS—$240 compared to $40.

The DEC Rainbow 100 supported multiple environments: CP/M-80 running on a Z80 processor, CP/M-86 or MS-DOS on an 8088 CPU, or both simultaneously via CP/M-86/80. This arrangement allowed users to maintain their existing 8-bit software investments while transitioning to 16-bit platforms. Similar dual-processor configurations were implemented in systems such as the CompuPro System 816 (CP/M 8-16) and Zenith Z-100.

After CP/M-86, Digital Research developed CP/M-68K in 1982 for the Motorola 68000 CPU. Initially coded in Pascal/MT+68k and subsequently ported to C, this version operated on EXORmacs machines and was considered for the Atari ST before Atari adopted GEMDOS. It also found use on SORD M68 and M68MX computers.

In that same year, a C-based port called CP/M-8000 was created for the Zilog Z8000 processor, running on the Olivetti M20.

These 16-bit versions required applications to be recompiled; however, Digital Research provided the XLT86 utility to automate converting Intel 8080 assembly source code into Intel 8086 assembly. This tool optimized code size and adapted calling conventions, easing the migration from CP/M-80 and MP/M-80 to their 16-bit successors. XLT86 was available for both CP/M-80 and VAX/VMS environments.

Replacement by MS-DOS

By the early 1980s, approximately 2,000 applications existed for CP/M, and it was widely expected to become the dominant OS for 16-bit machines. In 1980, IBM approached Digital Research—following a recommendation from Bill Gates—to license a version of CP/M for the forthcoming IBM PC. When negotiations faltered due to an unsigned non-disclosure agreement, IBM instead contracted Microsoft to supply an operating system.

MS-DOS incorporated many design elements from CP/M, such as file management structures and drive letter assignments. Its key advancement was implementing the FAT file system, which simplified porting popular CP/M software like WordStar and dBase. Additionally, MS-DOS took advantage of increased memory availability (typically exceeding 64 KB on IBM PCs) to offer more integrated command-line capabilities, improving performance and user experience on floppy disk-based systems.

Although early IBM PC accessories like the Baby Blue card allowed running 8-bit CP/M programs, industry reviews quickly favored MS-DOS. BYTE magazine in 1982 praised MS-DOS as being more intuitive and faster than CP/M. By 1984, InfoWorld highlighted CP/M's limited success in home computing due to expensive software costs. By 1986, manufacturers such as Kaypro had discontinued CP/M-based models in favor of MS-DOS systems. As a result, CP/M rapidly lost relevance amid the industry's shift toward IBM-compatible platforms; major publications ceased covering CP/M by the late 1980s.

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

ZCPR

ZCPR (Z80 Command Processor Replacement) was launched on 2 February 1982 as a direct substitute for Digital Research's original console command processor (CCP). Developed by "The CCP Group," a collective of enthusiasts led by Richard Conn and including Frank Wancho, Keith Petersen, Ron Fowler, Charlie Strom, and Bob Mathias, it aimed to enhance command processing capabilities.

The initial release, ZCPR1, appeared on a SIG/M disk distributed by the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was issued on 14 February 1983 across ten SIG/M disks and later upgraded to version 2.3. This update also included an 8080-compatible codebase to support systems running 8080 and 8085 processors.

Richard Conn and Frank Gaude established Echelon Inc. to commercialize ZCPR while maintaining its free software availability. On 14 July 1984, ZCPR3 was introduced via nine SIG/M disks, featuring a version that could be compiled for 8080 processors with limited functionality. By version 3, notable enhancements comprised command shells, aliases, input/output redirection, control flow mechanisms, named directory shortcuts, search path support, customizable menus, password protection, and integrated online help.

Development by Conn ended in January 1987; thereafter, Echelon commissioned Jay Sage to advance the project with ZCPR 3.3. This iteration discontinued support for 8080 processors but incorporated numerous new utilities and features. Despite enthusiastic adoption among CP/M users, ZCPR was unable to halt the overall decline of the CP/M platform.

Hardware model

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

  • A terminal capable of ASCII character display
  • A microprocessor such as Intel's 8080/8085 or Zilog's Z80
    • NEC’s V20/V30 processors supported emulation of the 8080 instruction set to enable CP/M operation on PC-DOS/MS-DOS hardware; PC-compatible machines could run CP/M-86
  • Minimum RAM of 16 KB beginning at address zero
  • A bootstrap loader for initiating from the first disk sector
  • At least one floppy disk drive

Digital Research officially endorsed only the Intel 8080 Development System hardware. Various manufacturers adapted CP/M to fit their specific hardware environments. Although the core CP/M did not utilize Z80-specific instructions, many Z80-based systems incorporated Z80 code within BIOS routines and applications.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant aimed at low-cost machines lacking disk drives. Initially implemented in cassette-driven systems like the Sharp MZ-800 with optional disk support, Personal CP/M exploited enhanced Z80 instructions rather than maintaining full portability across platforms.

American Microsystems introduced the S83 microprocessor—a Z80-compatible chip featuring an 8 KB ROM containing OS/BIOS code and integrated logic for dynamic RAM interfacing—offered at approximately $32 in volume quantities.

Most implementations relied on a minimal ROM bootloader combined with techniques such as bank switching or bus injection to load executable code at address zero; some required manual input via front-panel switches during startup.

CP/M utilized a 7-bit ASCII character set; however, extended character sets varied by manufacturer—for instance, Kaypro employed them for Greek characters, Osborne used them for underlining text, and WordStar assigned them as end-of-word markers. International versions generally adhered to ISO 646 standards by substituting certain ASCII characters rather than extending beyond seven bits.

Components

During operation, the CP/M operating system loaded into memory consists of three primary components:

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

While both BIOS and BDOS remain resident in memory continuously, the CCP also stays resident unless replaced temporarily by an application; it is automatically restored after application termination. Standard utility commands exist as transient programs stored as .COM files on disk.

The BIOS manages all hardware devices aside from the CPU and main memory—handling tasks such as character input/output and reading/writing disk sectors. On top of this layer, BDOS implements file system management and input/output abstractions including redirection functionalities. The CCP interprets user commands—executing internal commands like DIR or ERASE or invoking external transient commands such as PIP.COM or STAT.COM. Third-party applications operate as transient commands within this framework.

Across different CP/M versions, BDOS, CCP, and standard transient utilities maintain consistency; however, BIOS is tailored specifically for each hardware platform.

Expanding system memory necessitates reinstalling CP/M so that transient programs can utilize additional space. The MOVCPM utility facilitates relocating system code within memory by adjusting addresses accordingly, thereby freeing more memory for applications. Once installed, BIOS, BDOS, and CCP reside in reserved areas on disk used during boot-up. At startup, a bootloader—usually embedded in ROM firmware—loads the operating system from the A: drive.

By contemporary standards, CP/M appears rudimentary due to stringent program size restrictions. Early versions lacked automatic detection of disk changes, which risked data corruption if disks were swapped without reloading directory information. Later iterations introduced error signaling to prevent overwrites but required rebooting afterward.

Most of CP/M’s complexity is concentrated within BDOS and to a lesser degree within CCP and transient commands. Porting relatively simple BIOS routines to new hardware enabled rapid OS adaptation across platforms—significantly reducing development effort and contributing to CP/M’s wide adoption. This approach of abstracting hardware through a modular BIOS was innovative during an era when most operating systems targeted single hardware configurations exclusively.

Console Command Processor

The Console Command Processor (CCP) manages keyboard inputs and delivers output to the terminal, accommodating both printing and video terminal types. Users enter commands on the command line, which is generally marked by the A> prompt, indicating the active default disk drive. To switch the default drive, users type the drive letter followed by a colon (for example, B:), which updates the prompt to reflect this change.

The design of CP/M's command-line interface was inspired by Digital Equipment Corporation's Concise Command Language, utilized in operating systems such as RT-11 and OS/8. Commands are composed of a keyword followed by parameters separated by spaces or special delimiters. Internal commands are processed directly by the CCP; if not internal, the CCP loads executable files known as "transient" programs from the current disk drive and user area. Upon completion of these programs, BDOS reloads the CCP to reclaim memory for subsequent transient program execution.

Several command names trace their origins to earlier utilities, like PIP, which serves for file copying purposes. The syntax for parameters varies among programs, with no uniform convention for option characters.

Core CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Transient commands encompass utilities such as ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.

With CP/M Plus (Version 3), built-in commands were extended to include DIRSYS/DIRS for system file listing, ERASE/ERA for file removal, RENAME/REN for changing filenames, TYPE/TYP for displaying ASCII text files, and USER/USE for modifying user numbers. This version also introduced support for abbreviated forms of built-in commands. Transient commands offered in CP/M 3 feature tools like COPYSYS, DATE, DEVICE, DUMP, ED, GET, HELP, HEXCOM, INITDIR, LINK, MAC, PIP, PUT, RMAC, SET, SETDEF, SHOW, SID, SUBMIT, and XREF.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) oversees critical functions such as file management, console output handling, and printing services. Application software interacts with BDOS by loading designated function codes and parameters into processor registers before invoking a fixed memory address. This consistent entry point ensures compatibility across different hardware platforms.

Basic Input Output System

At the lowest level, the Basic Input Output System (BIOS) delivers essential services required by the operating system, including character input/output and reading or writing disk sectors. While BDOS manages some aspects of disk buffering, it presumes a fixed sector size of 128 bytes prior to CP/M 3.0; thus BIOS customization is necessary to accommodate various disk formats.

BIOS abstracts hardware differences—such as integrated video displays versus terminals, assorted UART chips controlling serial ports, and memory-mapped I/O devices—through standardized entry routines. Because BIOS typically offers limited or no serial communication support for modems, CP/M applications that rely on serial ports often incorporate user-supplied overlays to handle specific modem interactions.

Applications

CP/M served as the foundational environment for several prominent business software titles, including WordStar (word processing), dBase (database management), Turbo Pascal (programming language), Multiplan and VisiCalc (spreadsheets), SuperCalc (the leading CP/M spreadsheet), and AutoCAD (computer-aided design). Numerous early Microsoft applications and language compilers were also compatible with CP/M.

To accommodate different hardware platforms, software installers modified programs accordingly; for instance, Kaypro II users converted disks from the Xerox 820 format to their native Kaypro format. BASIC source code was commonly distributed, and copy protection measures were largely ineffective due to CP/M’s uniform disk formats, which encouraged file interoperability across various software.

Although graphical capabilities limited the complexity of video games on CP/M, a wide range of text-based games—such as Telengard, Gorillas, Hamurabi, Lunar Lander, Zork, and Colossal Cave Adventure—were ported to the system. Interactive fiction titles from Infocom consistently supported CP/M. Lifeboat Associates facilitated distribution of user-created utilities like XMODEM, which provided reliable modem file transfers, as well as the outline processor KAMAS.

Transient Program Area

In the original CP/M implementations for processors like the 8080, 8085, and Z80, the memory region between address 0100H and just before 0006H (where BDOS begins) was designated as the Transient Program Area (TPA), reserved for running application programs. Despite these CPUs being capable of addressing up to 64 KB of memory, the size of the available TPA depended on system architecture because portions of memory were allocated to BIOS ROM or video memory. Techniques such as bank switching allowed larger TPAs by swapping out ROM or video memory segments. CP/M 3.0 enhanced this approach by permitting parts of the BDOS to be placed within bank-switched memory.

Debugging application

CP/M included a tool called the Dynamic Debugging Tool (DDT), which provided capabilities for inspecting and modifying memory contents and program modules, along with stepwise execution of programs—essential features for developers during debugging and troubleshooting.

Resident programs

Originally, CP/M did not support terminate-and-stay-resident (TSR) programs similar to those found in DOS. Nonetheless, developers devised software that intercepted operating system calls to extend functionality, resulting in commercial desk accessories like SmartKey—a keyboard macro utility. With CP/M 3, dynamically loadable Resident System Extensions (RSX) were introduced, enabling background extensions without occupying TPA space. Additionally, third-party solutions such as Resident System Modules (RSMs) were retrofitted into CP/M 2.2 to provide comparable capabilities.

Software installation

Although CP/M standardized disk operations and console input/output interfaces, individual applications still required installation procedures tailored to specific hardware devices like printers and terminals. Device management relied on escape sequences that differed across manufacturers and models, necessitating customized configuration for each program. Users typically ran installation utilities to select devices or manually edit escape sequences on a feature-by-feature basis. This setup process had to be repeated for every application since there was no centralized operating system service handling device management.

Printer initialization codes were embedded directly within applications; therefore, supporting multiple printer types—such as dot-matrix and daisy wheel—demanded separate versions of software. Users needed to launch the appropriate version corresponding to the printer in use.

Disk Formats

The 128-byte-per-sector, single-density, single-sided disk format from IBM System/34 and IBM 3740 established itself as the standard 8-inch floppy disk format for CP/M. In contrast, no unified 5.25-inch disk format existed for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own proprietary schemes. The majority of software was distributed using the Xerox 820 format, which was compatible with machines like the Kaypro II. Nevertheless, InfoWorld estimated in 1981 that roughly two dozen disk formats were sufficiently widespread for software developers to consider them when targeting a broad audience. For instance, JRT Pascal released versions on various 5.25-inch disk formats including North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), Superbrain, as well as one 8-inch variant. Ellis Computing supported both Heath formats along with sixteen additional 5.25-inch variants, including those tailored for TRS-80 CP/M systems. Lifetree and other distributors also adapted CP/M applications to run across multiple hardware platforms.

CP/M permitted users to customize reserved areas, directory spaces, and the logical-to-physical sector mappings on disks; however, there was no universal approach for loading these configuration parameters from disks formatted on different systems. While most CP/M setups equipped with 8-inch drives could read IBM’s single-sided, single-density disks, cross-machine compatibility varied significantly due to differences in floppy drive hardware and controllers. Disk attributes ranged widely—featuring hard or soft sectoring, single or double density/sidedness, and track counts between 35 and 80—with numerous sector arrangements.

By 1982, the prevalent format for CP/M software distribution had become soft-sector, single-sided, 40-track 5.25-inch disks. This format was adopted by popular consumer computers such as the Apple II, TRS-80, Osborne 1, Kaypro II, and IBM PC. Translation utilities allowed reading disks from related formats; for example, the Kaypro II could access disks from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. However, some disk types—like those with 80 tracks or hard-sector encoding—remained incompatible across different platforms. Apple II users were generally confined to Apple's proprietary GCR format for CP/M software or had to transfer data through serial connections.

The fragmented nature of the CP/M disk ecosystem compelled distributors to maintain inventories of multiple formats or invest in multiformat duplication equipment—a complexity absent in the more standardized IBM PC disk formats—and this fragmentation contributed to CP/M’s swift decline after 1981.

Among the final noteworthy CP/M-capable machines was the Commodore 128 (introduced in 1985), which incorporated a Z80 processor specifically for CP/M compatibility alongside its native CPU. To run CP/M on this system required either a 1571 or 1581 disk drive capable of handling soft-sector 40-track MFM disks.

The earliest computer featuring a 3.5-inch floppy drive was the Sony SMC-70, operating under CP/M 2.2. Other platforms supporting CP/M on 3.5-inch floppies included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering's CP/AM for Apple II also facilitated use of 3.5-inch disks and RAM disks via compatible memory expansion cards. The Amstrad PCW initially utilized 3-inch floppy drives before shifting to 3.5-inch models.

File system

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

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

File sizes were expressed in units called records, each consisting of 128 bytes equivalent to one disk sector. Specifying file size in exact bytes was not supported. The operating system tracked file size within the File Control Block (FCB). Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to indicate end-of-file; inserting this character mid-file could lead to truncation.

With the advent of larger removable and fixed disks, disk de-blocking was introduced, enabling multiple disk blocks per allocation unit and support for bigger files. This improvement increased the minimum allocation size from 1 KB on single-density disks up to 32 KB on high-density media, which led to inefficient storage utilization for many small files.

CP/M 2.2 did not include file modification timestamps; however, this feature was optionally available in MP/M and CP/M 3.0.

While CP/M 2.2 lacked hierarchical subdirectories, it provided 16 numbered user areas to help organize files. Switching between user areas was accomplished using the "User X" command, which allowed file separation by user number—primarily for organizational purposes rather than security, which remained minimal on personal computers. Files stored in user area 0 were accessible across all users but required explicit path specification. This mechanism proved useful for managing files on systems equipped with hard drives by isolating workflows or users—for example, keeping data entry and billing records separate without mixing files.

Graphics

Although some early S-100 systems supported graphics capabilities, CP/M itself did not offer standardized graphics support until 1982 with the introduction of GSX. Due to limited memory resources on typical 8-bit CP/M machines, graphical applications were rare. Most displays relied on simple ASCII art or customized character sets. Certain models such as the Kaypro line and the TRS-80 Model 4 provided block graphics accessible through assembly language or BASIC’s CHR$ function. Additionally, the Model 4 could render graphics at a resolution of 640×240 pixels when equipped with an optional high-resolution graphics board.

Official

Some vendors created official CP/M variants derived from Digital Research’s source code; an example is IMDOS developed for the IMSAI 8080, a clone of the Altair 8800.

Compatible

A number of independent operating systems compatible with CP/M appeared without incorporating Digital Research’s original codebase, including:

  • Cromemco CDOS produced by Cromemco
  • MSX-DOS, designed for MSX computers and capable of running CP/M software
  • Epson QX-10 offered either CP/M or TPM-II/III-compatible OS alternatives
  • The British ZX Spectrum-compatible SAM Coupé featured Pro-DOS as an optional CP/M-2.2-compatible system
  • Amstrad/Schneider CPC 6xx and PCW models shipped with CP/M disk sets included
  • The Husky (computer) utilized DEMOS, a ROM-based loader supporting numerous CP/M applications
  • ZSDOS, a replacement BDOS for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
  • CPMish, a free and open-source OS compatible with CP/M 2.2 initially developed without Digital Research code; since 2022 it has incorporated original CP/M components under license from Digital Research
  • LokiOS, launched in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2-compatible OS featuring source code availability and hot-swappable operating system modules
  • IS-DOS for the Enterprise, developed by Intelligent Software
  • VT-DOS for the Videoton TV-Computer, also produced by Intelligent Software

Feature Improvements

Certain CP/M-compatible operating systems introduced substantial enhancements, including TurboDOS, which supported multi-processor configurations.

Eastern Bloc Variations

In the former Eastern Bloc, numerous CP/M-80 offshoots were developed under various titles such as SCP (), SCP/M, CP/A, CP/J, CP/KC, CP/KSOB, CP/L, among others. Versions of CP/M-86 like SCP1700, CP/K, and K8918-OS were also created. These operating systems were manufactured by East German firms including VEB Robotron and additional enterprises.

Enduring Influence

Several elements found in Microsoft Windows can be traced back to its MS-DOS roots, which themselves drew heavily from CP/M standards. This includes the use of drive letters (A:, B:, C:), the 8.3 filename convention, wildcard symbols (?, *), and reserved device identifiers such as "PRN:" and "CON:". The control character ^Z, denoting the end-of-file in text files, also originates from CP/M. Commands in DOS like DIR, REN/RENAME, and TYPE are direct reflections of their CP/M counterparts. Common file extensions such as .TXT and .COM continue to be prevalent today.

Between 1997 and 1998, Caldera made available the binaries and source code for CP/M 2.2 under an open source license, facilitating redistribution and modification via Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—then holding these Digital Research properties—expanded the licensing terms later that year. To mark the 40th anniversary of CP/M in October 2014, the Computer History Museum published early versions of its source code.

As of 2018, enthusiasts within vintage computing circles as well as some niche businesses persist in developing and maintaining environments primarily based on CP/M 2.2.

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

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 Kildall_1993
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Kildall.NYT
  9. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wilkinson19811019
  10. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wise19820510
  11. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named meyer19820614
  12. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Infoworld 1981
  13. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  14. ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
  15. ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
  16. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  17. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named citation needed
  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