Jump to content

M/OS

From Alfawiki
Adapted from the English Wikipedia article M/OS, available under CC BY-SA 4.0Updated 9 August 202511 sources
Digital Research, Inc.
Company typePrivate
IndustrySoftware
Founded1974
FounderGary Kildall
Headquarters
United States
Key people
Gary Kildall, Dorothy McEwen, John Pierce, Kathryn Strutynski, Robert "Bob" Silberstein, David "Dave" K. Brown
ProductsCP/M, PL/M compiler, MP/M, CP/M Plus, CP/M-86, CP/M-68K, CP/M-8000

CP/M, initially known as Control Program/Monitor and subsequently as Control Program for Microcomputers, is a widely adopted operating system created in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080/85-based microcomputer platforms. Functioning as a disk operating system, CP/M managed file organization on magnetic disks and facilitated program loading from storage media. Its earliest iterations supported single-task operations on 8-bit processors with memory capacities up to 64 kilobytes, while later releases introduced multi-user functionality and compatibility with 16-bit processor architectures.

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

During its peak, CP/M established itself as the de facto operating system standard for microcomputers, particularly those utilizing the S-100 bus, which were prevalent in commercial environments from the late 1970s through the mid-1980s. By enabling easier application portability across different hardware manufacturers, CP/M significantly broadened both hardware and software markets. The availability of cost-effective CP/M-based microcomputers spurred innovation within the software sector, driven by independent developers and user communities. However, CP/M's dominance waned following the introduction of the IBM PC in 1981, which popularized DOS as an alternative operating system.

Early history

In 1974, Gary Kildall created CP/M to serve as an operating system for the Intel Intellec-8 development platform, which incorporated an 8-inch floppy-disk drive from Shugart Associates, operated through a custom-designed controller. The OS was implemented using Kildall's own programming language, PL/M (Programming Language for Microcomputers). CP/M’s design was influenced by the TOPS-10 operating system running on the DECsystem-10 mainframe, which Kildall had experience with.

CP/M was compatible with several computers powered by the 8080 and Z80 processors. One of its earliest licensees was Gnat Computers, based in San Diego, which acquired rights to CP/M 1.0 in 1977 at a cost of $90 per unit. The rapidly increasing demand allowed Digital Research to raise licensing fees substantially within a year.

John Pierce took a leading role in developing CP/M 2.0 under Kildall’s guidance in 1978. By early 1979, Kathryn Strutynski became Digital Research’s fourth employee, initially focusing on debugging CP/M 2.0 before making major contributions to CP/M 2.2 and CP/M Plus. Other notable early contributors included Robert "Bob" Silberstein and David "Dave" K. Brown.

Originally abbreviated as "Control Program/Monitor," CP/M’s official name was changed in November 1977 to "Control Program for Microcomputers." This adjustment aligned with naming trends at the time, such as Kildall’s PL/M language and Prime Computer’s PL/P, reflecting IBM’s influence on industry terminology. The renaming was part of a strategic effort by Kildall, his wife Dorothy McEwen—who also acted as his business partner—to commercialize both CP/M and the PL/M compiler under the Digital Research brand. Their goal was to establish Digital Research as synonymous with “microcomputer,” similar to how IBM and Microsoft later became closely associated with “personal computer.” Eventually, Intergalactic Digital Research, Inc. was renamed Digital Research, Inc.

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, with the actual user base likely exceeding this figure due to sublicensing agreements. A wide array of manufacturers developed CP/M-based machines targeting diverse market segments; InfoWorld recognized CP/M as becoming the definitive operating system for small computers. Even companies that maintained proprietary operating systems, such as Heath/Zenith with HDOS, provided CP/M as an alternative option for their 8080/Z80 hardware, a flexibility not mirrored in popular 6502 CPU platforms.[1] This widespread adoption was largely driven by CP/M's vast software ecosystem. For instance, the Xerox 820 incorporated CP/M to capitalize on its extensive catalog of applications.[2] To enhance user support, Xerox included a Howard W. Sams CP/M manual alongside Digital Research’s documentation, which had received criticism.[3][4]

By 1984, Columbia University utilized CP/M source code to compile Kermit binaries compatible with over a dozen CP/M variants as well as generic builds.[5] The operating system functioned effectively as a "software bus",[6][7] facilitating uniform communication between software and hardware components.[8] Applications written for CP/M were typically portable across different systems, requiring only minor modifications to terminal and printer control sequences. This adaptability contributed significantly to CP/M’s widespread use and the abundance of available software compared to operating systems that were confined to specific hardware brands. However, some constraints existed, such as programs relying on the Z80’s enhanced instruction set that were incompatible with 8080/8085 CPUs, and machine-specific graphics routines that bypassed the OS to optimize performance.[9]

Bill Gates identified the combination of the Apple II with a Z-80 SoftCard as the leading hardware platform running CP/M.[10] By 1982, Digital Research announced that over 450 types of computers had licensed CP/M.[11] Prominent machines utilizing CP/M included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro portable computers, and various MSX models. Among these, the best-selling system capable of running CP/M was probably the Amstrad PCW. In the United Kingdom, CP/M was accessible on Research Machines educational devices—with source code released for instructional purposes—and on the BBC Micro when equipped with a Z80 co-processor. Additionally, it operated on systems such as the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. The NIAT handheld computer developed for A. C. Nielsen ran CP/M 3 and featured 1 MB of solid-state storage.

Multi-user Capability

In 1979, Digital Research introduced MP/M, a multi-user variant derived from CP/M that enabled multiple terminals to connect simultaneously to a single computer system, granting each user independent access. Subsequent editions expanded support to include 16-bit processors.

CP/M Plus

Released in 1983, CP/M Plus (version 3) was the last iteration of the 8-bit CP/M series, featuring a BDOS created by David K. Brown. This version incorporated MP/M’s bank-switching memory management into a single-user operating system that remained compatible with CP/M 2.2 software, allowing access to memory beyond the 64 KB limit on 8080 or Z80 processors. CP/M Plus introduced file date stamping and bundled development utilities such as a relocating assembler and linker. It found adoption in later 8-bit platforms including the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX computers, and the TRS-80 Model 4.

16-bit versions

Digital Research expanded CP/M to support 16-bit processors, starting with CP/M-86 for the Intel 8086, which debuted in November 1981. The development of the CP/M-86 family was overseen by Kathryn Strutynski. To distinguish it from the original, the earlier 8-bit version was renamed CP/M-80.

Although CP/M-86 was initially expected to become the IBM PC’s primary operating system, licensing disagreements led IBM to collaborate with Microsoft instead, resulting in PC DOS derived from 86-DOS. While CP/M-86 was eventually offered as an option on IBM PCs due to legal pressure, its higher price point ($240 compared to PC DOS's $40) hindered widespread acceptance.

The DEC Rainbow 100 supported multiple OS choices: CP/M-80 (Z80), CP/M-86, MS-DOS (8088), or a dual-processor setup running both CP/M-86 and CP/M-80 simultaneously. This design allowed users to maintain their existing 8-bit software investments while transitioning to 16-bit computing. Similar dual-CPU systems included CompuPro System 816’s CP/M 8-16 and Zenith Z-100’s CP/M-86 implementations supporting both processor types.

Following this, Digital Research introduced CP/M-68K in 1982 for the Motorola 68000 CPU. Initially developed using Pascal/MT+68k and subsequently ported to C, it operated on EXORmacs machines and was considered for Atari ST before Atari opted for GEMDOS. The OS was also deployed on SORD M68 and M68MX systems.

In that same year, Digital Research ported CP/M to the Zilog Z8000 processor under the name CP/M-8000 for Olivetti’s M20 computer, with the codebase written in C.

These 16-bit editions necessitated recompiling existing applications. To ease this transition, Digital Research provided XLT86, a utility that converted Intel 8080 assembly source code into optimized Intel 8086 assembly compatible with CP/M-86 and MP/M-86 environments. XLT86 was accessible on both CP/M-80 and VAX/VMS platforms.

Displacement by MS-DOS

By the early 1980s, roughly two thousand applications were available for CP/M, positioning it as a likely standard for 16-bit computing platforms. In 1980, IBM approached Digital Research to license a CP/M variant for its forthcoming IBM PC; however, talks collapsed over disagreements regarding a non-disclosure agreement. Consequently, IBM turned to Microsoft for an operating system solution.

MS-DOS borrowed many features from CP/M such as file management structures and drive letter assignments (A:, B:, etc.). Its major advancement was the introduction of the FAT file system, which simplified porting popular CP/M programs like WordStar and dBase. Additionally, MS-DOS utilized more memory—IBM PCs typically had at least 64 KB compared to CP/M’s minimum of 16 KB—allowing more comprehensive command-line tools and enhanced performance on floppy disk systems.

Although hardware add-ons like the Baby Blue card enabled running CP/M applications on IBM PCs early on, industry feedback favored MS-DOS due to its superior speed and user experience. By 1984, attempts to penetrate the home computer market with CP/M largely faltered because of expensive software prices. By 1986, manufacturers such as Kaypro had fully transitioned their focus toward MS-DOS machines. As IBM-compatible systems gained dominance, CP/M’s market share declined sharply, with major publications like Byte discontinuing coverage of it within a few years after the IBM PC's introduction.

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

ZCPR

ZCPR, standing for Z80 Command Processor Replacement, was launched on 2 February 1982 as a direct substitute for Digital Research's original console command processor (CCP). The project was developed by a group of enthusiasts known as "The CCP Group," led by Richard Conn.

The initial release, ZCPR1, appeared on a disk distributed by SIG/M, affiliated with the New Jersey Amateur Computer Club. Subsequently, ZCPR2 was introduced on 14 February 1983, delivered as a set of ten disks from SIG/M. This version was later enhanced to 2.3, which included an 8080-compatible code variant to support 8080 and 8085 processors.

Richard Conn and Frank Gaude established Echelon Inc. to commercialize the next iteration while maintaining its availability as free software. On 14 July 1984, ZCPR3 was released across nine disks via SIG/M, featuring a compilable edition for systems not based on the Z80. Its capabilities encompassed command shells, aliasing, input/output redirection, flow control mechanisms, named directory shortcuts, search path functionality, customizable menus, password protection, and built-in online assistance.

Development halted in January 1987 when Conn stepped away; thereafter, Echelon contracted Jay Sage to continue advancing the software. The resulting ZCPR 3.3 version eliminated support for the 8080 processor but introduced numerous new features and utilities. Despite enthusiastic adoption among CP/M users, ZCPR was ultimately unable to halt the gradual decline of CP/M itself.

Hardware model

A basic CP/M system built around an 8-bit architecture 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 or MS-DOS machines
  • A minimum of 16 KB RAM beginning at memory address zero
  • A method for bootstrapping from the first sector of a disk
  • At least one floppy disk drive

Digital Research officially supported only the Intel 8080 Development System hardware; however, other manufacturers adapted CP/M to fit their specific machine designs. Due to instruction set compatibility with the Z80, many CP/M systems ran on this processor variant, with BIOS and applications frequently optimized for the Z80 environment.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based variant aimed at cost-effective systems lacking disk drives. This version initially appeared on the cassette-driven Sharp MZ-800 (which also offered optional disk drives) and prioritized advanced Z80 instructions over strict portability with the original 8080 architecture. American Microsystems released the S83 microprocessor incorporating ROM for operating system and BIOS storage alongside DRAM interface logic; this chip was priced at approximately $32 per unit in volume production.

Most CP/M machines employed a minimal ROM-based bootloader combined with techniques such as bank switching or bus injection to ensure that boot code resided at address zero in memory. Certain systems required manual input via front-panel switches during startup to initiate booting.

CP/M utilized the standard 7-bit ASCII character set; however, its extended 8-bit character range lacked standardization and varied between manufacturers—for example, Kaypro used it to represent Greek letters; Osborne applied it for underlining text; WordStar designated it as an end-of-word marker. International editions frequently adopted ISO 646 standards by substituting specific ASCII characters rather than expanding beyond seven bits.

Components

When operational in memory, the CP/M operating system is composed of three primary elements:

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

Both BIOS and BDOS remain resident in memory continuously; CCP also stays resident unless temporarily overwritten by an executing application, after which it reloads automatically. Standard utility commands are implemented as transient programs stored in .COM files on disk.

The BIOS handles direct interaction with hardware components beyond CPU and RAM, managing functions such as character input/output and reading or writing disk sectors. BDOS implements higher-level file system management and input/output abstractions including redirection built atop BIOS services. The CCP interprets user commands—either executing internal commands like DIR or ERA or loading external transient commands such as PIP.COM or STAT.COM. Third-party applications operate as transient commands within this framework.

While BDOS, CCP, and standard transient utilities remain consistent across a given CP/M version, BIOS customization is necessary for each distinct hardware platform.

Expanding system memory requires reinstalling CP/M so that transient programs can utilize additional space. The MOVCPM utility facilitates this by relocating object code segments to new memory areas through adjustment of absolute jump and subroutine call addresses. The modified version can then be saved onto a new disk to enable applications to access expanded memory regions. Operating system components reside in reserved disk sectors used during booting; upon startup, a bootloader—typically embedded in ROM firmware—loads the OS from drive A:.

By contemporary standards, CP/M appears rudimentary due to stringent program size limits. Early versions lacked detection of disk changes which risked data corruption if disks were swapped without reloading directory information. Later revisions introduced fatal error notifications when write attempts occurred before directory reads following disk changes—preventing overwrites but necessitating system reboot.

The majority of system complexity resides within BDOS and, to a lesser degree, CCP and transient commands. Porting simple BIOS routines to new hardware platforms enabled full OS functionality with minimal effort—significantly accelerating development time and contributing greatly to CP/M’s widespread adoption. This approach of creating a hardware abstraction layer was pioneering at a time when operating systems were typically designed for single machine architectures.

Console Command Processor

The Console Command Processor (CCP) is responsible for managing keyboard inputs and displaying output on the terminal. CP/M supports both printing and video terminals, presenting the A> prompt to signify the currently selected default disk drive. Users can switch the default drive by entering a drive letter followed by a colon (for example, B:), which updates the prompt to reflect this change.

The command-line interface in CP/M draws inspiration from Digital Equipment Corporation operating systems such as RT-11 and OS/8. Commands comprise a keyword accompanied by parameters separated by spaces or special symbols. Internal commands execute directly within the CCP, whereas other commands launch executable "transient" programs stored on disk or in user areas; after these transient programs finish running, BDOS reloads the CCP to reclaim memory.

Certain commands retain legacy names; for instance, file copying is performed using PIP (Peripheral Interchange Program), a utility inherited from DEC systems. Parameter conventions differ between programs, as there was no universal standard for option characters.

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

With CP/M Plus (Version 3), the set of internal commands expanded to encompass DIR, DIRSYS/DIRS, ERASE/ERA, RENAME/REN, TYPE/TYP, and USER/USE, allowing abbreviated forms for commands. Additional transient utilities introduced included COPYSYS, DATE, DEVICE, HELP, LINK, MAC, PUT, SET, SHOW, SID, SUBMIT, and XREF, thereby improving system administration and development functions.

Basic Disk Operating System

The Basic Disk Operating System (BDOS) oversees tasks such as file management, console messaging, and printer control. Application software accesses BDOS services through fixed memory address calls, ensuring uniform functionality across diverse hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers fundamental hardware-level operations for CP/M, including character input/output and reading or writing disk sectors. Prior to version 3.0 of CP/M, BIOS was designed around a fixed sector size of 128 bytes typical for 8-inch floppy disks; support for larger sector formats on 5.25-inch disks was implemented via BIOS-specific routines.

Due to the wide variety of hardware configurations—ranging from integrated video displays to separate terminals, assorted UART chips managing serial ports, and differing I/O system designs—BIOS customization was critical. It standardizes access through defined entry points that provide services like character I/O and disk operations. Since BIOS offered limited or no built-in modem support, CP/M applications frequently incorporated user-supplied overlays to handle serial communications.

Applications

CP/M served as the platform for several key business applications, including WordStar, one of the earliest widely adopted word processors, and dBase, a pioneering database management system. Initial outliner programs such as KAMAS and Out-Think were first created for CP/M before migrating to MS-DOS. Development tools like Turbo Pascal (the precursor to Borland Delphi) and Multiplan (an early version of Microsoft Excel) were introduced on CP/M. The groundbreaking spreadsheet VisiCalc and the popular SuperCalc also operated on CP/M prior to their transition to MS-DOS. Autodesk's AutoCAD was initially released on this operating system as well.

A diverse assortment of compilers and interpreters—including BASIC, Turbo Pascal, FORTRAN, and PL/I—were accessible, many representing some of Microsoft's initial software offerings.

CP/M applications frequently incorporated installers designed to adapt software for different hardware configurations; for example, Kaypro II owners converted Xerox 820 disks to their native format. BASIC source code was typically available, and due to CP/M’s uniform disk format promoting compatibility across software, copy protection measures were generally ineffective.

Although CP/M’s limited graphical capabilities restricted video game development, numerous text-based games were ported to the system, including titles like Telengard, Gorillas, Hamurabi, Lunar Lander, along with interactive fiction classics such as the Zork series and Colossal Cave Adventure. Infocom regularly released games compatible with CP/M. Lifeboat Associates distributed user-created freeware like XMODEM, which facilitated dependable file transfers over modems. The outline processor KAMAS also originated on CP/M.

Transient Program Area

In the original CP/M versions for the 8080, 8085, and Z80 processors, the read/write memory segment between address 0100 hexadecimal and just below the address stored at 0006H (indicating the lowest BDOS address) was designated as the Transient Program Area (TPA), reserved for application execution. Although these CPUs could address up to 64 KB of memory, the accessible TPA size varied depending on system architecture since some systems allocated portions of address space for BIOS ROM or video memory. To expand TPA size, bank switching was commonly employed to replace ROM or video memory segments. CP/M 3.0 enhanced this capability by permitting parts of the BDOS to be located in bank-switched memory.

Debugging application

CP/M featured a Dynamic Debugging Tool known as DDT, which allowed users to inspect and modify memory contents and program modules while executing programs step-by-step.

Resident programs

Originally, CP/M did not support terminate-and-stay-resident (TSR) utilities like those found in DOS. Nonetheless, programmers could intercept operating system calls to augment functionality, enabling add-on desk accessories such as SmartKey, a keyboard enhancement tool. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) became available; these could be loaded without a transient program by using a null command file. Additionally, third-party developers back-ported similar resident modules (RSMs) to CP/M 2.2 systems.

Software installation

Even though CP/M provided standardized interfaces for disk and console input/output operations, individual applications still required installation procedures to support device-specific features like printers and terminals. Control over these devices often depended on manufacturer-specific escape codes—for instance, activating bold text varied from printer to printer. Installation routines enabled users to select devices or customize escape sequences according to desired functions. Because no centralized operating system service managed these peripherals, this setup process had to be repeated for each application.

Printer initialization commands were embedded directly within software packages. Consequently, using applications such as WordStar with multiple printers—like a fast dot-matrix alongside a slower daisy wheel—necessitated preparing separate versions tailored for each printer type. Switching between printers required reloading the corresponding program version.

Disk formats

The 128-byte per sector, single-density, single-sided disk format used by the IBM System/34 and IBM 3740 became the standard 8-inch floppy disk format for CP/M systems. In contrast, there was no universal 5.25-inch disk format for CP/M; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own unique formats. Certain disk formats gained greater traction than others. The Xerox 820 format, compatible with systems like the Kaypro II, was widely supported for software distribution. However, an InfoWorld report from September 1981 noted that approximately two dozen formats were sufficiently widespread that software developers needed to accommodate them to reach the largest audience. For instance, JRT Pascal was released on multiple 5.25-inch disks tailored to North Star, Osborne, Apple, Heath/Zenith (both hard and soft sector), and Superbrain platforms, alongside a version for 8-inch disks. Ellis Computing supported both Heath disk types as well as sixteen additional 5.25-inch formats including TRS-80 CP/M variants. Distributors such as Lifetree also facilitated porting of CP/M applications across different hardware.

The selection of disk formats was influenced by system architecture and media properties. CP/M provided flexibility by allowing customization of reserved sectors, directory layouts, and logical-to-physical sector mappings; however, there was no standardized approach for reading formatting parameters from disks created on other machines.

Almost every CP/M computer equipped with 8-inch drives could read the IBM single-sided, single-density format. Yet compatibility with other disk types depended heavily on the specific drive and controller hardware because floppy disks varied significantly in dimensions (8-inch versus 5.25-inch), sectoring methods (hard or soft), density levels (single or double), number of sides, track counts (ranging from 35 to 80), and sector organization. By 1982, soft-sectored, single-sided 40-track 5.25-inch disks emerged as the prevalent distribution medium for CP/M software, largely due to their adoption by popular consumer machines such as Apple II, TRS-80, Osborne 1, Kaypro II, and the IBM PC. Conversion utilities enabled systems like the Kaypro II to read disks formatted for TRS-80, Osborne, IBM PC, and Epson QX-10 platforms. Nonetheless, certain disk varieties—such as those with 80 tracks or hard-sectoring—remained incompatible across different systems. Apple II users were generally restricted to Apple's GCR format for CP/M titles or had to rely on serial transfer methods.

The diversity of CP/M disk formats compelled software distributors to maintain inventories in multiple formats or invest in equipment capable of duplicating various disk types—unlike the more uniform IBM PC disk standards—contributing to CP/M's swift decline following 1981.

Among the final notable computers supporting CP/M was the Commodore 128 (released in 1985), which incorporated a Z80 processor dedicated to running CP/M alongside its primary CPU. This system required either a 1571 or 1581 drive capable of handling soft-sectored 40-track MFM disks.

The earliest machine featuring a 3.5-inch floppy drive was the Sony SMC-70, operating under CP/M 2.2. Other systems offering CP/M support 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. Additionally, Applied Engineering’s CP/AM for Apple II provided compatibility with both 3.5-inch floppy disks and RAM disks. The Amstrad PCW initially utilized 3-inch floppy drives before transitioning to the more common 3.5-inch format.

File system

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

Disk drives were denoted by letters (for example, A:, B:). To reference files on a particular drive, the drive letter and colon were prefixed (e.g., A:FILE.TXT); if omitted, the system assumed the current default drive.

File size was quantified in 128-byte records, corresponding to disk sectors, without support for precise byte-level measurement. The File Control Block (FCB) maintained file size information within the operating system. Text files typically ended with a control-Z character (ASCII SUB, hex 1A) to signify the end-of-file marker; inserting this character mid-file could result in truncation.

With the advent of larger removable and fixed disks, disk de-blocking algorithms increased the number of blocks per logical allocation unit. This allowed storage of larger files but also increased minimum allocation sizes—from 1 KB on single-density disks up to 32 KB—leading to inefficient space utilization when handling numerous small files.

CP/M 2.2 did not support 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 for organizing files. Users could switch between these areas using the "User X" command; USER 0 was the default area accessible by all users, whereas other user areas isolated their respective files. This mechanism enabled multi-tasking on systems equipped with hard drives by segregating data for different functions (such as separating data entry from billing), although it offered limited advantages on smaller floppy-based systems.

Graphics

Despite early availability of graphics-capable S-100 computer systems, CP/M did not include standardized graphics support until the introduction of GSX in 1982. Due to limited memory resources, graphics usage was rare on 8-bit CP/M machines, which mainly displayed simple ASCII art or utilized custom character sets. Certain models like the Kaypro series and TRS-80 Model 4 incorporated video hardware capable of block graphics accessible through assembler and BASIC programming. The TRS-80 Model 4 could render graphics at a resolution of 640x240 pixels when equipped with an optional high-resolution expansion board.

Official

Some organizations created official CP/M enhancements derived from Digital Research’s source code, including IMDOS, developed for the IMSAI 8080, a clone of the Altair 8800.

Compatible

Various independently developed operating systems compatible with CP/M but created without using Digital Research code include:

  • Cromemco CDOS by Cromemco
  • MSX-DOS for MSX computers, capable of executing CP/M software
  • Epson QX-10 offering either CP/M or compatible TPM-II/TPM-III environments
  • British ZX Spectrum compatible SAM Coupé featuring optional Pro-DOS (compatible with CP/M-2.2)
  • Amstrad/Schneider CPC and PCW series bundled with CP/M disk sets
  • Husky (computer) running DEMOS, a ROM-based loader supporting many CP/M applications
  • ZSDOS, an alternative BDOS replacement for CP/M-80 version 2.2 developed by Harold F. Bower and Cameron W. Cotrill
  • CPMish, a free and open-source operating system compatible with CP/M 2.2 initially without Digital Research code; includes ZSDOS BDOS and ZCPR command processor. Since 2022, developer David Given has been updating CPMish incorporating original DR CP/M code under authorization from Lineo’s president.
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is a CP/M 2.2 compatible OS providing source code for BIOS, BDOS, CLI, original DR components, and modular OS elements supporting hot-swapping.
  • IS-DOS for the Enterprise, developed by Intelligent Software
  • VT-DOS for the Videoton TV Computer, also created by Intelligent Software

Improvements

Certain CP/M-compatible operating systems enhanced capabilities considerably, with examples like TurboDOS, which supported multiple processors.

Eastern Bloc Variants

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

Enduring Influence

Numerous elements within Microsoft Windows trace their origins to compatibility with MS-DOS, which itself aimed to maintain alignment with CP/M standards. The convention of assigning drive letters and the 8.3 filename format in MS-DOS and early Windows were inherited from CP/M. Wildcards such as ? and * utilized in Windows stem from CP/M practices, along with reserved device filenames like "PRN:" (printer) and "CON:" (console). The floppy drives were designated as A and B in CP/M; when hard disks emerged, they were labeled C:, a convention that persists in Windows command-line environments. The control character ^Z, used to signify end-of-file in text files, also originates from CP/M. Commands including DIR, REN/RENAME, TYPE, and ERA/ERASE in DOS reflect the command syntax established by CP/M. File extensions such as .TXT and .COM continue to serve as standard markers for file types across various platforms.

Between 1997 and 1998, Caldera released CP/M version 2.2 binaries along with source code under an open source license. This allowed redistribution and modification of Digital Research’s CP/M and MP/M related files via Tim Olmstead’s "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo—holder of these Digital Research assets—expanded the licensing terms later that year. To honor the 40th anniversary of CP/M’s introduction in October 2014, the Computer History Museum published early versions of its source code.

As of 2018, enthusiasts focused on vintage computing and some niche commercial ventures remain active in developing and maintaining systems primarily running CP/M 2.2 as their core operating system.

See also

Further reading

  • Rodnay Zaks, The CP/M Handbook With MP/M, SYBEX Inc., 1980, ISBN 0-89588-048-2
  • Richard Conn, ZCPR3 - The Manual, New York Zoetrope, 1985, ISBN 0-918432-59-6
  • Z-System Corner: Tenth Anniversary of ZCPR, The Computer Journal, issue 54
  • The origin of CP/M's name
  • Mustafa A. Katie, Intel iPDS-100 Using CP/M-Video, 2013
  • IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974, Computer History Museum, 2014
  • Triumph of the Nerds, PBS (covers IBM’s choice of Microsoft DOS over Digital Research's CP/M)
  • 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 wilkinson19811019
  2. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named wise19820510
  3. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named meyer19820614
  4. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Infoworld 1981
  5. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named dacruz19840427
  6. ↑ Clarke, A.; Eaton, J. M.; David, D. Powys Lybbe (October 26, 1983). CP/M - the Software Bus: A Programmer's Companion. Sigma Press.
  7. ↑ Johnson, Herbert R. (July 30, 2014). "CP/M and Digital Research Inc. (DRI) History".
  8. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named Swaine_1997_Entrepreneurship
  9. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named citation needed
  10. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named bunnell19820203
  11. ↑ Cite error: Invalid <ref> tag; no text was provided for refs named libes198206