Jump to content

Basic Disk Operating System

From Alfawiki
Adapted from the English Wikipedia article Basic Disk Operating System, available under CC BY-SA 4.0Updated 9 August 202511 sources
Digital Research, Inc.
Company typePrivate
IndustrySoftware
Founded1974
FounderGary Kildall, Dorothy McEwen
Headquarters
United States
Key people
Gary Kildall, Dorothy McEwen, Kathryn Strutynski, John Pierce, Robert Silberstein, David K. Brown
ProductsCP/M, PL/M compiler

CP/M, initially an acronym for Control Program/Monitor and later redefined as Control Program for Microcomputers, is a widely adopted operating system developed in 1974 by Gary Kildall of Digital Research, Inc for Intel 8080 and 85-based microcomputer platforms. This disk operating system was engineered to manage file organization on magnetic storage devices and facilitate program loading from disks. While early versions were confined to single-tasking on 8-bit processor architectures with a maximum of 64 kilobytes of RAM, subsequent releases introduced multi-user support and compatibility with 16-bit processor systems.

The fundamental elements of CP/M comprise the Basic Input/Output System (BIOS), the Basic Disk Operating System (BDOS), and the Console Command Processor (CCP). The BIOS oversees hardware interface drivers, BDOS administers file management and system-level services, and the CCP functions as the command-line interpreter providing built-in command execution.

CP/M emerged as the de facto standard operating system dominating microcomputer environments, particularly on S-100 bus machines prevalent in commercial settings from the late 1970s through the mid-1980s. By enabling easier porting of software across different hardware manufacturers, CP/M broadened both hardware adoption and software development markets. The availability of cost-effective CP/M-compatible microcomputers stimulated innovation among independent programmers and user communities. However, CP/M's prominence waned following the 1981 introduction of the IBM PC, which propelled the widespread adoption of DOS.

Early history

In 1974, Gary Kildall created CP/M as an operating system tailored for the Intel Intellec-8 development platform, utilizing a Shugart Associates 8-inch floppy-disk drive paired with a custom-designed controller. The system was programmed in Kildall’s proprietary language, PL/M. CP/M drew inspiration from the TOPS-10 operating system used on the DECsystem-10 mainframe computers.

CP/M provided support for numerous machines built around the 8080 and Z80 processors. Among early adopters, Gnat Computers acquired rights to CP/M version 1.0 in 1977 for $90, with growing demand quickly elevating licensing revenues into the tens of thousands.

Under Kildall’s guidance, John Pierce spearheaded development of CP/M version 2.0 in 1978. After joining Digital Research in 1979, Kathryn Strutynski played a significant role in debugging CP/M 2.0 and contributed to later iterations including CP/M 2.2 and CP/M Plus. Other notable contributors were Robert Silberstein and David K. Brown.

The original name "Control Program/Monitor" was revised to "Control Program for Microcomputers" during commercialization efforts in 1977. This change aligned with naming conventions such as Kildall’s own PL/M language and Prime Computer’s PL/P, which were influenced by IBM’s PL/I language and CP/CMS systems that Kildall had experience with at the Naval Postgraduate School (NPS).

Together with his wife and business partner Dorothy McEwen, Kildall transformed CP/M alongside the PL/M compiler into a commercial venture under Digital Research, Inc., aiming to establish their brand as synonymous with microcomputing—anticipating a level of recognition comparable to what IBM and Microsoft would later achieve within personal computing markets.

Early Achievements

By September 1981, Digital Research had distributed more than CP/M licenses, with sublicensing arrangements indicating an even broader reach. A variety of manufacturers developed CP/M-based computers aimed at different sectors; InfoWorld highlighted CP/M as becoming the definitive operating system for small computers. Even companies with their own proprietary systems, such as Heath/Zenith (HDOS), provided CP/M as an option for their 8080/Z80 models, a contrast to the absence of a unified OS standard for 6502-based devices.[1] This trend was largely due to CP/M's vast software ecosystem. For instance, the Xerox 820 adopted CP/M because of its extensive library of programs.[2] Since Digital Research’s documentation was often regarded as inadequate, Xerox supplemented it with a Howard W. Sams CP/M manual.[3][4]

By 1984, Columbia University utilized CP/M source code to create Kermit binaries compatible with over a dozen CP/M variants along with generic versions.[5] CP/M acted as a "software bus",[6][7] facilitating uniform communication between software and diverse hardware platforms.[8] Applications were typically portable across different machines, requiring mainly adjustments in terminal and printer escape codes. This cross-platform capability contributed significantly to CP/M's widespread adoption and encouraged broader software development compared to single-vendor operating systems. However, certain limitations existed: some applications employed Z80-specific instructions incompatible with 8080/8085 processors, and others used machine-dependent graphics routines that bypassed the OS to enhance performance.[9]

Bill Gates recognized the Apple II equipped with a Z-80 SoftCard as the leading hardware platform for running CP/M.[10] By 1982, Digital Research claimed over 450 licensed systems operating CP/M.[11] Prominent platforms included the Altair 8800, IMSAI 8080, Osborne 1, Kaypro luggable computers, and MSX machines. The most commercially successful CP/M-capable system was likely the Amstrad PCW. In the United Kingdom, CP/M operated on educational computers from Research Machines (whose source code was published for educational use), the BBC Micro fitted with a Z80 co-processor, as well as on the Amstrad CPC, Commodore 128, TRS-80, and later versions of the ZX Spectrum. Additionally, CP/M 3 was implemented on the NIAT handheld computer used internally by A. C. Nielsen, which featured 1 MB of solid-state storage.

Multi-User Capability

In 1979, Digital Research introduced MP/M, a multi-user variant of CP/M that enabled multiple terminals to connect simultaneously to one computer, granting each user independent access. Subsequent releases added support for 16-bit processors.

CP/M Plus

The last iteration of the 8-bit CP/M line, known as CP/M 3 or CP/M Plus, was released in 1983 with a BDOS developed by David K. Brown. It incorporated bank switching memory management from MP/M into a single-user operating system compatible with applications designed for CP/M 2.2, allowing usage of memory beyond 64 KB on 8080 or Z80 CPUs. Enhancements included file date stamping and bundled development utilities such as a relocating assembler and linker. CP/M 3 was aimed at later-generation 8-bit platforms including the Amstrad PCW, Amstrad CPC, ZX Spectrum +3, Commodore 128, MSX machines, and TRS-80 Model 4.

16-bit Variants

Digital Research created several 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 product line was overseen by Kathryn Strutynski. To differentiate it from the original 8-bit system, the earlier CP/M was renamed CP/M-80.

Initially, CP/M-86 was expected to become the default operating system for the IBM PC. However, IBM did not finalize licensing with Digital Research and instead collaborated with Microsoft to supply PC DOS, which was based on 86-DOS. Although CP/M-86 was later offered as an alternative due to legal challenges, its higher cost ($240 compared to $40 for PC DOS) hindered widespread use.

The DEC Rainbow 100 was capable of running CP/M-80 (for the Z80 processor), CP/M-86 or MS-DOS (for the 8088), or both simultaneously through CP/M-86/80. This allowed users to preserve their existing 8-bit applications while transitioning to 16-bit environments. Similarly, the CompuPro System 816 featured a dual-processor model known as CP/M 8-16, and the Zenith Z-100 also supported operation of two CPUs to execute software on both processors.

Following CP/M-86, Digital Research launched CP/M-68K in 1982 for the Motorola 68000 CPU. Initially developed using Pascal/MT+68k and subsequently rewritten in C, CP/M-68K operated on Motorola EXORmacs systems and was considered by Atari for the ST platform before they opted for GEMDOS. It also ran on SORD M68 and M68MX machines.

In that same year, Digital Research developed CP/M-8000, written in C for the Zilog Z8000 processor found in the Olivetti M20.

These 16-bit iterations required application recompilation. To ease this transition, Digital Research offered utilities like XLT86, which translated Intel 8080 assembly code into Intel 8086 assembly language. This tool optimized code size and adjusted calling conventions to simplify porting from CP/M-80/MP-M80 to CP/M-86/MP-M86 environments. XLT86 was implemented in PL/I-80 and made available on both CP/M-80 and VAX/VMS platforms.

Supplanting by MS-DOS

By the early 1980s, approximately 2,000 applications were available for CP/M, leading many to anticipate it becoming the dominant OS for 16-bit systems. In 1980, IBM approached Digital Research—prompted by Bill Gates—to license a version of CP/M for their upcoming PC. However, after failing to obtain a signed non-disclosure agreement from Digital Research, IBM turned to Microsoft to supply an operating system instead.

MS-DOS incorporated many foundational elements from CP/M, such as file management structures and drive letter assignments (A:, B:, etc.). Its significant advancement was the introduction of the FAT file system, which simplified porting popular CP/M software like WordStar and dBase. Unlike CP/M’s separate user file areas, MS-DOS utilized larger memory allocations (commonly 64 KB or more on IBM PCs) to embed additional commands within its command shell, enhancing performance and usability on floppy disk systems.

Among early IBM PC peripherals was the Baby Blue card, which allowed execution of 8-bit CP/M programs on the PC. Despite this compatibility option, BYTE magazine in 1982 described MS-DOS as "significantly more user-friendly and faster," offering more benefits than CP/M. By 1984, InfoWorld observed that CP/M struggled in the home computer market due to expensive software prices. By 1986, manufacturers such as Kaypro discontinued their 8-bit CP/M hardware lines in favor of MS-DOS compatible machines. As microcomputing gravitated toward IBM-compatible architectures, CP/M's market presence and industry attention diminished rapidly; Byte magazine ceased covering CP/M by 1987.

Later iterations of CP/M-86 enhanced speed and improved compatibility with MS-DOS, eventually being rebranded as DOS Plus—a product that later evolved 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 originated from a collective of enthusiasts named "The CCP Group," headed by Richard Conn.

The initial version, ZCPR1, appeared on a disk issued by SIG/M, affiliated with the Amateur Computer Club of New Jersey. Subsequently, ZCPR2 was released on 14 February 1983, distributed across ten SIG/M disks and later updated to version 2.3. This update included an 8080-compatible code variant, enabling operation on both 8080 and 8085 processors.

Richard Conn and Frank Gaude established Echelon Inc. to commercialize the succeeding ZCPR iteration while retaining free public availability. On 14 July 1984, ZCPR3 was introduced via nine SIG/M disks; it featured a compiled edition for 8080 systems with some functionality limitations. This version incorporated enhanced capabilities such as command shells, aliases, input/output redirection, flow control mechanisms, named directory support, search paths, customizable menus, password protection, and integrated online assistance.

Development responsibilities shifted to Jay Sage in January 1987, culminating in ZCPR 3.3. This release discontinued support for the 8080 series but added numerous new features and utilities. Although ZCPR enjoyed considerable popularity among CP/M users, it could not reverse the overall decline of the CP/M platform.

Hardware model

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

  • A computer terminal supporting ASCII characters
  • A microprocessor from the Intel 8080/8085 or Zilog Z80 families
    • NEC V20 and V30 processors provided an 8080 emulation mode enabling CP/M operation on compatible PC-DOS/MS-DOS systems
  • Minimum of 16 KB RAM starting at address zero
  • A bootstrap mechanism for loading the initial disk sector
  • At least one floppy disk drive

Digital Research officially endorsed only the Intel 8080 Development System; however, various manufacturers adapted CP/M to suit their hardware configurations. Due to binary compatibility, CP/M also ran on Z80-based machines, which often featured BIOS and applications tailored specifically for the Z80.

In collaboration with Zilog and American Microsystems, Digital Research developed Personal CP/M—a ROM-based operating system aimed at cost-effective diskless systems—first implemented in the Sharp MZ-800 cassette-driven computer with optional disk drives. Personal CP/M exploited advanced Z80 instructions rather than maintaining strict compatibility with the 8080 processor.

American Microsystems introduced the S83 microprocessor incorporating onboard ROM housing both OS and BIOS code alongside logic for dynamic RAM interfacing; its unit price was approximately $32 at volume production levels.

Most systems employed a minimal ROM bootloader combined with bank switching or bus injection techniques to load CP/M into RAM at address zero; some required manual input via front-panel controls during startup.

CP/M utilized the standard seven-bit ASCII character set; extended character usage varied by vendor—for example, Kaypro machines used them to represent Greek letters, Osborne computers indicated underlining by setting the eighth bit, while WordStar employed it as an end-of-word marker. International editions commonly followed ISO 646 standards by substituting certain ASCII characters instead of expanding beyond seven bits.

Components

When operational in memory, CP/M consists of three main modules:

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

The BIOS and BDOS remain resident in memory continuously; the CCP stays resident unless replaced temporarily by an application program, after which it automatically reloads. Standard utility commands exist as transient programs stored on disk with a .COM extension.

The BIOS manages hardware elements excluding the CPU and main memory, overseeing character input/output and disk sector reading/writing. BDOS handles file system functions and I/O abstractions such as redirection built atop BIOS services. The CCP interprets user commands by executing built-in commands (e.g., DIR for directory listing, ERA for file deletion) or launching transient executable commands (e.g., PIP.COM for file copying). Third-party applications operate as transient commands within this framework.

While BDOS, CCP, and standard transient utilities remain consistent across CP/M versions, the BIOS is customized per hardware platform. Expanding system memory necessitates reinstalling CP/M so transient programs can utilize additional space. The MOVCPM utility facilitates relocating object code into new memory regions by adjusting jump and call addresses accordingly; this patched OS version can then be saved to disk for use by applications.

Operating system components reside in reserved disk areas designated for booting. Upon startup, a bootloader—typically embedded in ROM firmware—loads the OS from drive A:.

By contemporary standards, CP/M is rudimentary due to strict limitations on program size. Early editions lacked mechanisms to detect disk changes automatically, risking data corruption if disks were swapped without reloading directory information. Later versions introduced fatal error warnings to prevent overwriting but required rebooting afterward.

Most complexity is contained within BDOS; CCP and transient commands contribute comparatively less functionality. This modular architecture allowed developers to port only BIOS routines when adapting CP/M to new hardware platforms—facilitating rapid support across diverse machines—a critical factor in CP/M’s widespread adoption. While modern operating systems commonly implement hardware abstraction layers, CP/M was a pioneer in this design approach during an era when most OSs targeted single hardware configurations.

Console Command Processor

The Console Command Processor (CCP) is responsible for managing keyboard inputs and presenting output on terminals, accommodating both printing and video display devices. Users input commands via the command line, which is typically introduced by a prompt showing the current default disk drive, for example, A>. To switch the default drive, users enter its letter followed by a colon, such as B:, which then updates the prompt to reflect the change.

The command-line interface of CP/M is influenced by Digital Equipment’s Concise Command Language, utilized in operating systems like RT-11 and OS/8. Commands are structured with keywords followed by parameters separated by spaces or specific delimiters. Commands internal to the CCP execute directly; otherwise, the processor loads executable files known as "transient" programs from the active disk and user area. After these programs finish, BDOS reloads the CCP if it has been overwritten, thereby freeing maximum memory for transient application use.

Several commands maintain legacy names derived from DEC utilities, such as PIP, which serves for file copying. Parameter syntax varies between programs and does not adhere to a unified option character convention.

Core CCP commands include DIR, ERA, REN, SAVE, TYPE, and USER. Frequently used transient commands encompass ASM, DDT, DUMP, ED, LOAD, PIP, STAT, SUBMIT, and SYSGEN.

In CP/M Plus (Version 3), built-in commands are expanded with options like DIRSYS/DIRS for system file listings, ERASE/ERA to remove files, RENAME/REN for renaming, TYPE/TYP to display ASCII content, and USER/USE to switch user numbers. This version also supports abbreviated forms of built-in commands. Transient utilities available in CP/M 3 include 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 key functions such as file management—including opening files—as well as console output and printing tasks. Applications communicate with BDOS by loading processor registers with specific function codes and relevant parameters before invoking a fixed memory address. This consistent interface guarantees software compatibility across various hardware platforms.

Basic Input Output System

The Basic Input Output System (BIOS) delivers fundamental low-level services like character input/output and disk sector manipulation. While BDOS handles some disk buffering duties, it presumes a standard sector size of 128 bytes prior to CP/M version 3.0. Given that many 5.25-inch floppy disks utilize larger sector sizes, BIOS incorporates device-specific routines to manage buffering and sector operations effectively.

Due to the wide variety of hardware configurations—including integrated video terminals, diverse serial port arrangements, and memory-mapped I/O—BIOS requires customization for each system. It provides standardized entry points for essential services such as character I/O and disk access to abstract these hardware differences. Support for serial communication within BIOS is limited or sometimes nonexistent; consequently, CP/M applications that employ modems often rely on user-supplied overlays tailored for particular serial port implementations.

Applications

CP/M served as the platform for several key business applications, including WordStar for word processing and dBase for database management. Early outlining tools like KAMAS and Out-Think were initially created for CP/M before their MS-DOS counterparts appeared. Turbo Pascal, which later evolved into Borland Delphi, and Multiplan, the predecessor to Microsoft Excel, both made their debut on CP/M. The pioneering spreadsheet program VisiCalc, along with Sorcim's SuperCalc—which became the dominant spreadsheet on CP/M and later competed in the MS-DOS environment—also originated on this system. Autodesk’s AutoCAD was first released for CP/M as well. A diverse selection of compilers and interpreters, including BASIC, Turbo Pascal, FORTRAN, and PL/I, were available, featuring some of Microsoft’s earliest software offerings.

CP/M applications often included adaptable installers designed to accommodate different hardware platforms. For instance, users of the Kaypro II could convert software originally distributed on Xerox 820 disks to formats compatible with Kaypro drives. BASIC source code was typically provided openly, and copy protection measures were generally ineffective due to CP/M’s rigid file format conventions that ensured interoperability across software.

Although limited graphical capabilities restricted gaming options, text-based games such as Telengard, Gorillas, Hamurabi, Lunar Lander, and interactive fiction titles like Zork and Colossal Cave Adventure were ported to CP/M. Infocom regularly released its games in CP/M format. Lifeboat Associates distributed user-generated freeware including XMODEM for reliable modem file transfers and the KAMAS outliner.

Transient Program Area

In the original CP/M implementations for 8080, 8085, and Z80 processors, the read/write memory region from address 0100 hexadecimal up to just below the address stored at 0006H (which holds the lowest BDOS address) was designated as the Transient Program Area (TPA), allocated for application use. Although these CPUs could address up to 64 KB of memory, the size of available TPA varied depending on system architecture since some reserved portions of address space for BIOS ROMs or video memory. Bank switching techniques were frequently employed to increase TPA by swapping out ROM or video memory segments. CP/M 3.0 further allowed parts of BDOS to reside within bank-switched memory areas.

Debugging application

CP/M included a utility called DDT, a dynamic debugger enabling users to inspect and manipulate memory contents and program modules interactively, as well as execute programs step-by-step.

Resident programs

Unlike DOS, early versions of CP/M did not support terminate-and-stay-resident (TSR) programs. Nevertheless, developers engineered software capable of intercepting operating system calls to extend system functionality; examples include desk accessories like SmartKey, a keyboard enhancement tool. With the release of CP/M 3, dynamically loadable Resident System Extensions (RSX) became available, allowing extensions without relying on transient programs. Additionally, third parties adapted similar capabilities—known as Resident System Modules (RSMs)—for CP/M 2.2.

Software installation

While CP/M abstracted disk and console input/output operations at the hardware level, most applications required installation procedures to support device-specific features such as printers or terminals. These peripherals were controlled via escape sequences that differed by manufacturer and model. Installation utilities enabled users to select devices or customize escape codes; however, this configuration had to be performed individually for each program because no centralized operating system service managed device settings.

For example, printer initialization sequences had to be embedded directly within applications. Running software like WordStar across multiple printer types necessitated maintaining separate versions customized for each printer; switching printers involved exiting the application and launching the version tailored to the new device.

Disk Formats

The 128-byte-per-sector, single-density, single-sided disk format introduced by IBM System/34 and IBM 3740 became the standard 8-inch floppy disk layout for CP/M systems. In contrast, no uniform 5.25-inch disk format existed within the CP/M ecosystem; manufacturers such as Kaypro, Morrow Designs, Osborne, and others each implemented their own distinct versions. Among these, some formats gained greater traction—most notably, software was frequently distributed in the Xerox 820 format, which was compatible with devices like the Kaypro II. However, a 1981 InfoWorld report noted that approximately two dozen disk formats were prevalent enough for software developers to consider when targeting a wide audience. For instance, JRT Pascal was available on several 5.25-inch disk types (including North Star, Osborne, Apple, Heath/Zenith hard and soft sector, and Superbrain) as well as an 8-inch variant. Ellis Computing supported both Heath formats along with sixteen additional 5.25-inch formats, including various TRS-80 CP/M editions. Distributors such as Lifetree routinely converted CP/M applications to function across different hardware platforms.

The choice of disk format was influenced by system architecture and disk properties. Although CP/M permitted customization of reserved areas, directory structures, and logical-to-physical sector mapping, there was no universal standard for loading disk parameters from disks formatted on different machines.

Almost all CP/M computers equipped with 8-inch drives could access the IBM single-sided, single-density format. Compatibility with other formats depended heavily on the type of drive and controller used due to variations in floppy disk sizes (8-inch versus 5.25-inch), sectoring methods (hard or soft), density levels (single or double), number of sides (single or double), track counts ranging from 35 to 80, and sector arrangements. Utilities existed to translate between formats when hardware permitted; for example, the Kaypro II could read disks originating from TRS-80, Osborne, IBM PC, and Epson QX-10 systems. However, certain disk types such as those with 80 tracks or hard sectoring were incompatible across platforms. Users of the Apple II were confined to Apple's proprietary GCR format, necessitating CP/M software distribution either on Apple-formatted disks or via serial data transfer.

The fragmented nature of CP/M's disk formats compelled distributors to maintain inventories of multiple disk types or to invest in duplication equipment capable of handling various formats simultaneously. This complexity stood in stark contrast to the more standardized IBM PC disk formats and played a role in CP/M's swift decline after 1981.

Among the last significant CP/M-compatible computers was the Commodore 128 released in 1985, which incorporated a Z80 processor dedicated to running CP/M alongside its primary 6502-based CPU. This machine required either a 1571 or 1581 drive to read soft-sector 40-track MFM disks.

The pioneering computer to include a 3.5-inch floppy drive was the Sony SMC-70, running CP/M 2.2. Other systems supporting CP/M on 3.5-inch media included the Commodore 128, Bondwell-2 laptop, Micromint/Ciarcia SB-180, MSX, and TRS-80 Model 4 (using Montezuma CP/M 2.2). Applied Engineering’s CP/AM expansion for the Apple II offered support for both 3.5-inch floppy disks and RAM disks through memory expansion cards. Initially, the Amstrad PCW utilized 3-inch floppy drives for CP/M before transitioning to the more common 3.5-inch drives.

File system

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

Disk drives were designated by letters (for example, A, B), and files were referenced by prefixing the drive letter and colon (e.g., A:FILE.TXT). In the absence of a drive letter prefix, the system defaulted to the current active drive.

File sizes were expressed in units called records, each consisting of 128 bytes corresponding to disk sectors; precise byte-level sizing was not supported. The File Control Block (FCB) maintained file size information within the operating system. Text files traditionally ended with a control-Z character (ASCII SUB, hex 1A) to signify end-of-file, influencing how text editors handled file truncation.

With the advent of larger removable and fixed disks, disk de-blocking was introduced, increasing allocation block sizes from 1 KB on single-density drives up to 32 KB for minimal files on higher-density drives. This enhancement facilitated handling larger files but decreased storage efficiency when managing many 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.

Instead of subdirectories, CP/M 2.2 provided 16 numbered user areas to organize files. Users could switch between these areas using the "User X" command, isolating files under different user numbers. USER 0 served as the default area accessible universally, while other user areas restricted visibility to their own files. This functionality allowed multi-tasking on single-user machines and was particularly useful with hard drives to separate tasks such as data entry and billing without mixing files.

Graphics

While some S-100 bus systems supported graphics due to commercialization of the bus, CP/M itself lacked a standardized graphics subsystem until 1982 with the introduction of GSX. The limited memory on 8-bit CP/M machines constrained graphical capabilities, which mostly consisted of simple ASCII art or custom character set graphics. Certain systems like the Kaypro line and the TRS-80 Model 4 provided block graphics accessible through assembler or BASIC programming. Notably, the Model 4 could deliver a resolution of 640×240 pixels when equipped with an optional high-resolution graphics board.

Official

Some companies created official CP/M variants derived from Digital Research’s source code, such as IMDOS, developed for the IMSAI 8080, a clone of the Altair 8800 produced by IMS Associates, Inc.

Compatible

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

  • Cromemco CDOS developed by Cromemco
  • MSX-DOS designed for MSX computers, capable of running CP/M applications
  • Epson QX-10 offered either CP/M or compatible TPM-II/III systems
  • The British ZX Spectrum-compatible SAM Coupé featured optional Pro-DOS (compatible with CP/M-2.2)
  • Amstrad/Schneider CPC and PCW models were often bundled with CP/M disk packages
  • The Husky (computer) employed DEMOS, a ROM-based loader supporting many CP/M programs
  • ZSDOS, an alternative BDOS for CP/M-80 version 2.2 created by Harold F. Bower and Cameron W. Cotrill
  • CPMish, an open-source CP/M 2.2-compatible OS initially developed without Digital Research code but later incorporated original DR components after receiving authorization from Lineo’s president in 2022; it includes ZSDOS BDOS and ZCPR command processor
  • LokiOS, released in 2023 by David Kitson for the Open Spectrum Project, is compatible with CP/M 2.2 and provides source code for BIOS, BDOS, CLI along with original DR code and supports hot-swappable OS modules
  • IS-DOS for the Enterprise, developed by Intelligent Software
  • VT-DOS designed for the Videoton TV Computer, also created by Intelligent Software

Feature Improvements

Certain CP/M-compatible operating systems introduced considerable advancements, including the multi-processor support found in TurboDOS.

Eastern European Variants

In the former Eastern Bloc, multiple CP/M-80 adaptations were developed under various titles such as SCP (), SCP/M, CP/A, CP/J, CP/KC, among others. For CP/M-86, versions like SCP1700, CP/K, and K8918-OS emerged. These operating systems were manufactured by East German enterprises, notably VEB Robotron.

Enduring Influence

A number of characteristics in Microsoft Windows can be traced back to its MS-DOS compatibility layer, which itself drew heavily from CP/M. Features such as drive letter assignments, the 8.3 filename format, wildcard symbols (? and *), reserved device identifiers ("PRN:", "CON:"), and the convention of using drives A and B for floppy disks all originated with CP/M. The use of the control character ^Z to signify end-of-file in text documents also stems from CP/M. Commands in DOS like DIR, REN/RENAME, and TYPE were inspired by their counterparts in CP/M. Common file extensions including .TXT and .COM continue to be widely utilized.

Between 1997 and 1998, Caldera made CP/M 2.2 binaries and source code available under an open source license, facilitating redistribution and modification of Digital Research's files through Tim Olmstead's "The Unofficial CP/M Web site." Following Olmstead’s passing in 2001, Lineo revised and broadened the licensing terms. To commemorate CP/M’s 40th anniversary in October 2014, the Computer History Museum published early source code for the system.

As of 2018, a dedicated community of vintage computing enthusiasts alongside some niche businesses persist in maintaining and advancing platforms primarily running 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: Celebrating a Decade of ZCPR, The Computer Journal, Issue 54
  • The origin story behind 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 (explores IBM’s selection of Microsoft DOS instead of Digital Research's CP/M for the IBM PC)
  • CP/M FAQ, comp.os.cpm and Digital Research documentation

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. ↑ CP/M - the Software Bus: A Programmer's Companion.
  7. ↑ "CP/M and Digital Research Inc. (DRI) History". {{cite web}}: Missing or empty |url= (help)
  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 graphics_limitation
  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