Recent from talks
Nothing was collected or created yet.
| MP/M | |
|---|---|
| Developer | Digital Research, Inc. / Tom Rolander,[1][2][3][4] Gary Kildall, Frank Holsworth[5][6] |
| OS family | CP/M |
| Working state | Discontinued |
| Source model | Originally closed source, since open sourced |
| Initial release | 1979[7][8] |
| Latest release | 2.1 / 1982 |
| Available in | English |
| Supported platforms | 8080, 8085, Z80, 8086, 80286 |
| Kernel type | Monolithic kernel |
| Default user interface | Command-line interface |
| License | Originally proprietary, now BSD-like |
| Preceded by | CP/M, CP/M-86 |
| Succeeded by | Concurrent CP/M, Concurrent CP/M-86 |
| Official website | www |
MP/M (Multi-Programming Monitor Control Program[8]) is a discontinued multi-user version of the CP/M operating system, created by Digital Research developer Tom Rolander in 1979.[1][7][8][9][2][3][4] It allowed multiple users to connect to a single computer, each using a separate terminal.
MP/M was a fairly advanced operating system for its era, at least on microcomputers. It included a priority-scheduled multitasking kernel (before such a name was used, the kernel was referred to as the nucleus) with memory protection, concurrent input/output (XIOS) and support for spooling and queueing. It also allowed for each user to run multiple programs, and switch between them.
MP/M platforms
[edit]MP/M-80
[edit]The 8-bit system required a 8080 (or Z80) CPU and a minimum of 32 KB of RAM to run, but this left little memory for user applications. In order to support reasonable setups, MP/M allowed for memory to be switched in and out of the machine's "real memory" area. So for instance a program might be loaded into a "bank" of RAM that was not addressable by the CPU, and when it was time for the program to run that bank of RAM would be "switched" to appear in low memory (typically the lower 32 or 48 KB) and thus become visible to the OS. This technique, known as bank switching was subsequently added to the single user version of CP/M with version 3.0.
One of the primary uses of MP/M, perhaps to the surprise of DRI, was as a "power user" version of CP/M for a single user. The ability to run several programs at the same time and address large amounts of memory made the system worth the extra price.
MP/M II 2.0 added file sharing capabilities in 1981,[10][11][12] MP/M II 2.1 came with extended file locking in January 1982.[10]
Versions:
- MP/M 1.0 (1979)[13]
- MP/M 1.1[10] (January 1980)
- MP/M II 2.0 (July 1981,[11][12] added: file sharing)[10]
- MP/M II 2.1 (January 1982, added: extended file locking)[10]
MP/M-86
[edit]Like CP/M, MP/M was eventually ported to the 16-bit Intel 8086, and appeared as MP/M-86 2.0 in September 1981.[14][15][16] Main developers of the system include Francis "Frank" R. Holsworth,[5][6] later a director of marketing at Digital Research. Known revisions of MP/M-86 2.0 were dated 25 September 1981 and 5 October 1981. There also was an MP/M-86 2.1 dated 20 July 1982.[17]
MP/M-86 2.1 absorbed some of the technology of CP/M-86 1.1 (BDOS 2.2) to become Concurrent CP/M-86 3.0[nb 1] (BDOS 3.0) in late 1982,[18] which also added support for "virtual screens".[18] Kathryn Strutynski, the project manager for CP/M-86, continued as project manager for Concurrent CP/M-86. In December 1983,[19] a DOS emulator named PC-MODE became available as an optional module for Concurrent CP/M-86 3.1 (BDOS 3.1), shipping on 21 February 1984,[20] and the system was further developed into the MS-DOS compatible Concurrent DOS (BDOS 3.1 and higher).[21] This in turn continued to evolve into FlexOS and Multiuser DOS and as such is still in use in some industrial applications.
Concurrent CP/M is often abbreviated CCP/M.[22]
MP/M 8-16
[edit]MP/M 8-16 (sometimes also referred to as MP/M-8/16[18]) was CompuPro's name for a combination of the multi-user 16-bit MP/M-86 to perform single-user, single-stream CP/M functions, along with multi-user, multi-tasking 8-bit MP/M operations[18] running on the multi-processor CompuPro System 816.[23] Later on, this system was also able to run Concurrent DOS 3.1.
MP/M-286
[edit]In 1982, Digital Research announced plans to develop MP/M-286 to take advantage of the 16-bit Intel 80286's new memory management and protection features to run existing MP/M-86 and CP/M-86 applications.[24] This was apparently never published "as is", but was further developed into Concurrent CP/M-286,[25] which seems to have formed the basis for the later Concurrent DOS 286 in 1985[25] and FlexOS 286 in 1986.
Commands
[edit]CP/NET, CP/NOS, MP/NET and MP/NOS
[edit]In the early 1980s Digital Research also developed networking software named CP/NET used to connect an MP/M server with multiple CP/NET clients (named requesters) running CP/M.[27] It was originally developed by Tom Rolander.[2]
MP/NET was an MP/M system with networking allowing the MP/M system to function as both requester and server with CP/M requesters.[27]
The CP/NET clients could also be run in a diskless configuration with the system stored in ROM, then named CP/NOS (with NOS for Network Operating System). Similar, MP/NOS contained MP/M without local disk facilities. Like CP/NOS, MP/NOS performed the disk functions through the network.[27]
The system allowed to share files and printers and send electronic messages.
- NIOS – Network I/O System[28]
- SNIOS – Slave Network I/O System[28]
- NDOS – Network Disk Operating System[28]
CP/NET existed in versions 1.0, 1.1 and 1.2 in versions for 8080 and Z80 processors. CP/NET-86 for 8086 was available as well.
Legacy
[edit]Caldera permitted the redistribution and modification of all original Digital Research files, including source code, related to the CP/M and MP/M families through Tim Olmstead's "The Unofficial CP/M Web site" since 1997.[29][30][31] After Olmstead's death on 12 September 2001,[32] the free distribution license was refreshed and expanded by Lineo, who had meanwhile become the owner of those Digital Research assets, on 19 October 2001.[33][34][35][36]
Notes
[edit]- ^ Since there was apparently no 8-bit version of Concurrent CP/M, the 16-bit version Concurrent CP/M-86 was also referred to simply as Concurrent CP/M.[clarification needed]
References
[edit]- ^ a b "Catalog Search | Computer History Museum". Information Technology Corporate Histories Collection. Computer History Museum.
- ^ a b c "IEEE Milestone in Electrical Engineering and Computing - CP/M - Microcomputer Operating System, 1974" (PDF). Computer History Museum. 2014-04-25. Archived (PDF) from the original on 2019-04-03. Retrieved 2019-04-03.
- ^ a b Shustek, Len (2016-08-02). "In His Own Words: Gary Kildall". Remarkable People. Computer History Museum.
- ^ a b Kildall, Gary Arlen (2016-08-02) [1993]. Kildall, Scott; Kildall, Kristin (eds.). Computer Connections: People, Places, and Events in the Evolution of the Personal Computer Industry (Manuscript, part 1). Kildall Family. Retrieved 2016-11-17.
- ^ a b Wein, Josef "Joe" (2002). "Gary Kildall in England". Archived from the original on 2019-04-03. Retrieved 2019-04-03.
- ^ a b Holsworth, Francis "Frank" R. (2006-02-01). "Video: Frank Holsworth, developer" (interview). Information Technology Corporate Histories Collection. Computer History Museum. CHM Catalog Number 102770341. ITCHP 44403c1a3fd53. Lot Number X7847.2017. Archived from the original on 2019-04-03. Retrieved 2019-04-04.
- ^ a b Digital Research (July 1981) [1979]. MP/M - Multi-Programming Monitor Control Program - User's Guide (PDF) (4 ed.). Pacific Grove, CA, USA: Digital Research. Archived from the original (PDF) on 2017-01-04. Retrieved 2017-01-04.
- ^ a b c Digital Research (1979-08-09). "MP/M 1.0 - A Multi-Programming Monitor Control Program for Microcomputer System Development - FUNCTIONAL SPECIFICATION" (PDF) (internal specification). Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-04.
- ^ Evans, Harold; Buckland, Gail; Lefer, David (2004). They Made America: From the Steam Engine to the Search Engine: Two Centuries of Innovators. Little, Brown and Co. ISBN 978-0-316-27766-2.
- ^ a b c d e Digital Research (January 1982), MP/M II Operating System Release 2.1 Release Notes, Pacific Grove, CA, USA: Digital Research, retrieved 2017-01-04 [1] [2]
- ^ a b Digital Research (August 1981). MP/M II Operating System - User's Guide (PDF) (1 ed.). Pacific Grove, CA, USA: Digital Research. Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-04.
- ^ a b Digital Research (1981). MP/M II Operating System - Programmer's Guide (PDF) (1 ed.). Pacific Grove, CA, USA: Digital Research. Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-04.
- ^ Digital Research (March 1981) [1979]. MP/M - Multi-Programming Monitor Control Program - User's Guide (PDF) (3 ed.). Digital Research. Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-04.
- ^ Digital Research (October 1981) [September 1981]. MP/M-86 Operating System - System Guide (PDF) (corrected 1st ed.). Pacific Grove, CA, USA: Digital Research. Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-04.
- ^ Digital Research (1981-09-25). MP/M-86 Operating System - User's Guide (PDF) (1 ed.). Pacific Grove, CA, USA: Digital Research. Archived from the original (PDF) on 2017-01-04. Retrieved 2017-01-04.
- ^ Digital Research (September 1981). MP/M-86 Operating System - Programmer's Guide (PDF) (1 ed.). Pacific Grove, CA, USA: Digital Research. Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-04.
- ^ "MP/M-86 2.1 disk contents". Retrieved 2020-01-07.
- ^ a b c d Kildall, Gary Arlen (1982-09-16). "Running 8-bit software on dual-processor computers" (PDF). Electronic Design: 157. Archived (PDF) from the original on 2017-08-19. Retrieved 2017-08-19.
- ^ Digital Research (1984). "PC-Mode bridges CP/M and PC DOS". Digital Dialogue - Employee Newsletter of Digital Research Inc. 3 (1): 3. Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-03.
- ^ Digital Research (1984). "Concurrent CP/M ships early in response to team effort". Digital Dialogue - Employee Newsletter of Digital Research Inc. 3 (1): 1. Archived (PDF) from the original on 2017-01-04. Retrieved 2017-01-04.
- ^ Digital Research (May 1984). "Concurrent DOS bridges PC DOS, CP/M". Digital Research News - for Digital Research Users Everywhere. 4 (2): 3.
[…] "Concurrent DOS Release 3.1 is rapidly gaining momentum and support from a wide range of microcomputer manufacturers," Wandryk said. "Some 60 hardware companies have licensed the product since it was released in early March." […]
- ^ "CCP/M articles in the press".
- ^ "Compupro 8/16". oldcomputers.com. Archived from the original on 2016-01-03. Retrieved 2011-07-13.
- ^ Swaine, Michael (1982-04-05). "Homebrew Computer Club views Intel's superchip". InfoWorld. 4 (13). Palo Alto, CA, USA: 4. Archived from the original on 2020-01-07. Retrieved 2020-01-07.
[…] Digital Research is producing an operating system for the 286. MP/M-286 will take advantage of the processor's memory management and protection and virtual memory support. Digital Research is promising "complete" compatibility with its MP/M-86 and CP/M-86 for the 8086 processor. Intel is supplying Digital Research with the hardware to develop and test MP/M-286. […]
- ^ a b Bidmead, Christopher H. (2006-05-09) [1985-03-25]. "Surviving Big Blue". Doctor Who. Which Computer?. Archived from the original on 2020-01-07. Retrieved 2020-01-07.
[…] Paul Bailey of Digital Research keenly promotes this approach; it is his company that is supplying ICL and others with Concurrent Dos-286. This chameleon operating system allows ICL and other 80286 manufacturers to build machines that will be able to cope with all the existing body of IBM-PC software -- and at the same time promise multi-tasking, windowing and true concurrency, three features that together allow a single micro to do several things at once. […] Although no firm announcements have been made, it seems certain that by the end of the year ACT will be offering a Concurrent CP/M 286 machine to fuel its drive into the corporate market. But by this time it will have to contend with IBM's own 80286 office micro, the PC/AT. […] IBM also have a software product in the offing that could pull the rug out from under the Concurrent contenders. Some 180K in size, TopView is a program for IBM PC's and AT's that beefs up the operating system to provide windowing facilities for existing 'well behaved' standard packages. […]
- ^ Digital Research (August 1982). MP/M II Operating System - User's Guide (PDF) (2 ed.). Pacific Grove, CA, USA: Digital Research. Archived (PDF) from the original on 2019-10-20. Retrieved 2020-01-02.
- ^ a b c Kildall, Gary Arlen (June 1981). "CP/M: A Family of 8-and 16-Bit Operating Systems". BYTE. Retrieved 2018-09-09.
- ^ a b c CP/NET - Network Operating System - Reference Manual (5 ed.). Digital Research. November 1982 [1980]. Archived from the original on 2016-11-24. Retrieved 2016-11-25.
- ^ Olmstead, Tim (1997-08-10). "CP/M Web site needs a host". Newsgroup: comp.os.cpm. Archived from the original on 2017-09-01. Retrieved 2018-09-09.
- ^ Olmstead, Tim (1997-08-29). "ANNOUNCE: Caldera CP/M site is now up". Newsgroup: comp.os.cpm. Archived from the original on 2017-09-01. Retrieved 2018-09-09. [3]
- ^ "License Agreement". Caldera, Inc. 1997-08-28. Archived from the original on 2018-09-08. Retrieved 2018-09-09.
{{cite web}}: CS1 maint: bot: original URL status unknown (link) [4][dead link] [5][permanent dead link] - ^ Allison (2001-09-12). "Tim Olmstead". Newsgroup: comp.os.cpm.
- ^ Sparks, Bryan Wayne (2001-10-19). Chaudry, Gabriele "Gaby" (ed.). "License agreement for the CP/M material presented on this site". Lineo, Inc. Archived from the original on 2018-09-08. Retrieved 2018-09-09.
[…] Let this email represent a right to use, distribute, modify, enhance and otherwise make available in a nonexclusive manner the CP/M technology as part of the "Unofficial CP/M Web Site" with its maintainers, developers and community. I further state that as Chairman and CEO of Lineo, Inc. that I have the right to do offer such a license. […] Bryan Sparks […]
{{cite web}}: CS1 maint: bot: original URL status unknown (link) - ^ Chaudry, Gabriele "Gaby" (ed.). "The Unofficial CP/M Web Site". Archived from the original on 2016-02-03.
- ^ Gasperson, Tina (2001-11-26). "CP/M collection is back online with an Open Source licence - Walk down memory lane". The Register. Archived from the original on 2017-09-01.
- ^ Swaine, Michael (2004-06-01). "CP/M and DRM". Dr. Dobb's Journal. 29 (6). CMP Media LLC: 71–73. #361. Archived from the original on 2018-09-09. Retrieved 2018-09-09. [6]
History and development
Origins in CP/M
MP/M emerged as a multi-user, multi-programming extension of the CP/M operating system, developed by Digital Research to overcome the inherent limitations of CP/M's single-user design in environments requiring shared access to hardware resources, such as business offices or laboratory settings.[1] CP/M itself was structured around three primary layers: the Basic Input/Output System (BIOS), which handled hardware-specific I/O operations; the Basic Disk Operating System (BDOS), which managed file and disk operations through standardized interfaces; and the Console Command Processor (CCP), which provided the user interface for command interpretation and execution.[6] This modular foundation allowed Digital Research to adapt CP/M for more complex scenarios without overhauling its core architecture. The initial concept for MP/M was conceptualized in late 1978 or early 1979, closely following the release of CP/M 2.0 in 1979, which introduced enhancements in disk and memory management that paved the way for multi-user capabilities.[7] Led by developer Tom Rolander, the system was designed to support multiple concurrent users on a single machine through time-sharing mechanisms, where the CPU and peripherals could be allocated dynamically among users connected via terminals.[1] This addressed CP/M's restriction to one active user at a time by implementing resource allocation strategies, such as bank switching to provide each user with up to 48 KB of private memory while sharing a common 16 KB kernel, all within a total of 64 KB RAM.[1] Digital Research's motivation stemmed from market demands for efficient shared computing, exemplified by interest from companies like Siemens seeking a multitasking OS for professional applications such as word processing across multiple terminals.[1] Rolander single-handedly developed the first version of MP/M in 1979, including its utilities and documentation, fitting the entire OS into just 16 KB to ensure compatibility with contemporary hardware constraints.[1] Announced that year, MP/M marked Digital Research's strategic pivot toward multi-user systems, building directly on CP/M's portable and extensible design to enable collaborative workflows in resource-limited settings.[1]Key releases and evolution
MP/M was developed by Tom Rolander at Digital Research in 1979, with architectural guidance from company founder Gary Kildall.[1] The initial version, MP/M 1.0, was released that year for 8-bit systems based on the Intel 8080 processor, providing multitasking capabilities within a constrained 16 KB memory footprint.[8] A subsequent update, MP/M 1.1, arrived in 1980. In response to user needs for better resource sharing in multi-user environments, Digital Research introduced MP/M II in 1981, enhancing multitasking with features like record and file locking to enable concurrent access without data conflicts.[9] This version debuted as MP/M II 2.0, followed by 2.1 later that year, which refined system utilities and extended support for up to 16 users and 512 MB of storage per drive.[10] Parallel to these 8-bit advancements, Digital Research released MP/M-86 in November 1981 as a 16-bit adaptation for the Intel 8086 processor, marking the system's evolution toward more powerful hardware while maintaining compatibility with earlier MP/M applications.[11] However, naming inconsistencies arose, leading to a rebranding in late 1982 where MP/M-86 merged with elements of CP/M-86 to form Concurrent CP/M-86 version 3.0, emphasizing unified branding for multitasking and multi-user features.[12] Planning for MP/M-286 began in 1982 to leverage the Intel 80286's protected mode capabilities, but the project faced delays and ultimately rebranded as Concurrent CP/M-286, which delivered limited 80286 support and fell short of initial promises for robust virtual memory and enhanced concurrency.[13] This period reflected Digital Research's broader strategic shift from the MP/M line to the Concurrent family, driven by marketing needs to consolidate overlapping features and streamline product positioning amid growing competition in the OS market.[13]Architecture and design
Core components and multitasking
MP/M features a monolithic kernel design, centered on the XDOS module, which serves as the real-time nucleus responsible for process dispatching, memory management, and system timing.[14] This kernel integrates core components such as the Console Driver, which manages input/output for up to 16 consoles through Terminal Message Processes (TMPs) using reentrant code to handle functions like console input and output.[14] The Resident System Module (RSX) provides optional Resident System Processes (RSPs) for custom system tasks, integrated during system generation and residing in common or banked memory to extend kernel functionality.[14] Additionally, the Banked Memory Driver supports up to eight memory segments via bank switching, with segment zero reserved for system modules, enabling process isolation without true memory protection in early implementations.[14] Multitasking in MP/M is implemented through priority-driven scheduling, where the dispatcher selects the highest-priority ready process, employing round-robin time-sharing among processes of equal priority.[2] The system supports up to 16 concurrent users. Processes can suspend when awaiting resources such as queues or devices and resume upon availability, tracked via status flags in process descriptors that save and restore execution states.[14] Priority levels range from 0 (highest) to 255 (lowest, assigned to the IDLE process), adjustable by users to influence resource allocation.[14] Dispatching occurs at system calls, interrupts, and clock ticks, typically every 1/64th second, ensuring responsive operation across multiple users.[2] Multi-user support emulates a virtual CP/M environment for each of up to 16 users, identified by numbers 0-15, with shared access to files controlled by locking mechanisms to prevent conflicts, including modes for locked, unlocked, or read-only access via a system lock list.[14] The Console Command Processor (CCP) serves as the command-line interface, adapted for multi-user input through TMPs, interpreting commands, loading programs or RSPs from queues, and initializing base pages with command lines at memory address 0080H.[14] Early versions like MP/M I relied on cooperative multitasking, where processes yield control voluntarily at system calls or interrupts without preemption, potentially leading to delays if a process hogs resources.[2] Later iterations, such as MP/M II, introduced preemptive multitasking with priority-based dispatching and non-blocking console I/O—returning immediately if no input is available—to enhance responsiveness and prevent indefinite suspensions.[14] Isolation depends on bank switching rather than hardware-enforced memory protection, limiting robustness against errant processes in all versions.[14]Memory management and hardware support
MP/M's memory management is designed to support multi-user and multi-programming environments on limited hardware, primarily through bank switching on 8-bit systems and segmentation on 16-bit variants. The original MP/M-80 requires a minimum of 32 KB of RAM, with system overhead under 15 KB for configurations supporting two consoles and eight memory segments. Later versions, such as MP/M II, demand at least 43 KB of RAM, accommodating up to 400 KB of banked memory, while MP/M-286 extends support to 1 MB total address space. This overhead, approximately 26 KB in MP/M II, includes the kernel and essential system structures, leaving the remainder for user processes.[2][3] For 8-bit systems, MP/M employs bank switching to simulate larger address spaces beyond the 64 KB limit of processors like the Intel 8080, 8085, or Zilog Z80. This technique divides memory into up to 16 segments of configurable size (typically 48 KB each), each switchable into the CPU's address space to enable concurrent user contexts without requiring expanded hardware. Bank 0 remains active at initialization and may hold allocation vectors, while switching is disabled during direct memory access (DMA) operations to prevent corruption. Hardware abstraction occurs via BIOS adaptations in the eXtended Input/Output System (XIOS), allowing portability across 8080/8085/Z80 platforms by mapping device-specific calls to standardized interfaces.[2][14] The file system builds on CP/M's File Control Block (FCB) model but introduces a shared Basic Disk Operating System (BDOS) with record locking for concurrent access in multi-user scenarios. Record locking functions (e.g., lock/unlock via BDOS calls 42 and 43) use a configurable system lock table to manage locked records in files, supporting up to 262,144 records of 128 bytes per file, supporting modes like locked, unlocked, or read-only to prevent conflicts while allowing shared reads on unlocked files. This extends CP/M's sequential access paradigm to handle up to 16 drives and 32 MB file sizes.[2][14] Each user process operates in a dedicated Transient Program Area (TPA) within its memory segment, starting at offset 0100H for non-relocatable code like CP/M-compatible .COM files, with the TPA size determined by the segment's configuration (up to 48 KB). A common system area, accessible to all processes, holds shared code such as the resident BDOS (~2.8 KB) and system data pages (256 bytes), including process descriptors and queues in non-banked setups. This separation ensures efficient resource sharing while isolating user execution.[2][14] In 16-bit versions like MP/M-86, memory management shifts to segmentation compatible with the Intel 8086 and 80286 processors, using a Memory Segment Table to define relocatable or absolute segments, each with a base address, size (up to 64 KB), attributes, and bank number. Operating in real mode limits addressing to 1 MB via 20-bit physical addresses, with no hardware memory protection, exposing the system to crashes from errant code. Address gaps arise from non-contiguous banked segments and the 8086's segmented model, where offsets within 64 KB segments cannot span boundaries without reconfiguration, complicating contiguous access in multi-segment applications. BIOS adaptations handle hardware specifics, such as interrupt vectors for the 8086's expanded instruction set.[14]Versions and platforms
MP/M-80
MP/M-80 was the initial 8-bit implementation of Digital Research's multi-user operating system, designed specifically for microcomputers equipped with Intel 8080, 8085, or Zilog Z80 processors. Released in 1979 as version 1.0, it marked the first commercial multi-programming extension of CP/M, enabling concurrent operation across multiple terminals on resource-constrained hardware typical of the era. Subsequent updates included version 1.1 in 1980, which refined basic multi-user support, followed by the more advanced MP/M II series with version 2.0 in 1981 and 2.1 in 1982, introducing enhanced memory management and system stability.[15][16][2] A core feature of MP/M-80 was its support for up to seven concurrent users, allowing multiple operators to share a single central processing unit and peripherals through time-sharing. Each user could access up to 56 KB of memory, allocated from a banked RAM configuration that segregated user programs to prevent interference while the system kernel occupied a fixed portion, typically around 26 KB. Banked I/O facilitated terminal connectivity, enabling the attachment of multiple serial consoles via hardware interfaces, which was essential for multi-user environments. This design prioritized efficient resource allocation on 8-bit systems, where total memory rarely exceeded 64 KB without expansion.[17][3] System implementation relied on the SYSGEN utility for customization during installation, a process that generated a tailored system image by configuring parameters such as the number of consoles, disk drives, and memory banks. Administrators used SYSGEN to define console assignments, often mapping multiple serial ports to support asynchronous terminals, which required precise hardware setup to ensure reliable input/output polling. For instance, console configuration involved specifying baud rates and interrupt vectors to handle user interactions without halting the scheduler. This step was critical for adapting MP/M-80 to diverse hardware, including floppy or hard disk storage for shared file access.[15][2][18] MP/M-80 found early adoption in S-100 bus systems, where it powered multi-user setups for business and educational applications, such as shared accounting or data entry terminals. These implementations typically demanded custom hardware, including multi-port serial cards or memory expansion boards, to accommodate additional consoles and prevent bottlenecks in I/O operations. The system's modularity aligned well with the S-100 standard's plug-in architecture, allowing hobbyists and small firms to build cost-effective multi-terminal configurations.[19][20][21] Early versions, particularly 1.1, suffered from limitations in file handling, including inadequate record-level locking that could lead to concurrent access conflicts in multi-user scenarios. These issues, such as unreliable file sharing during simultaneous reads and writes, were addressed in MP/M II through the introduction of extended file locking mechanisms, which allowed processes to maintain granular control over file regions even after opening. Version 2.1 further refined this by supporting unlocked file modes and improved directory consistency, enhancing reliability for shared environments.[22][14][23]MP/M-86
MP/M-86 represented Digital Research's adaptation of the multi-user MP/M operating system to 16-bit architectures, specifically targeting the Intel 8086 processor family. Released in version 2.0 in November 1981, followed by version 2.1 in 1982, it extended the capabilities of its 8-bit predecessor by leveraging the expanded addressing of 16-bit processors. The system supported up to 16 concurrent users and a minimum of 64 KB of RAM, with configurations scalable to utilize the full 1 MB address space available on 8086-based hardware.[24][12][5] Key enhancements in MP/M-86 focused on exploiting 16-bit architecture for improved performance and scalability. It employed a segment-based memory management model inherent to the 8086, allowing for a larger effective address space compared to the flat 64 KB limit of 8-bit systems, thereby enabling more efficient allocation for multiple processes. Input/output operations were optimized through enhanced drivers supporting 16-bit data buses, facilitating faster device interactions and better compatibility with contemporary peripherals. Unlike hybrid systems such as MP/M 8-16, MP/M-86 maintained a pure 16-bit focus, ensuring all components operated natively without 8-bit emulation overhead.[25][26] The operating system primarily supported Intel 8086 and 8088 processors, with adaptations demonstrated on platforms like the IBM PC XT through community installations and modifications. By late 1982, MP/M-86 evolved directly into Concurrent CP/M-86 version 3.0, incorporating windowing capabilities for virtual consoles and enhanced compatibility with emerging DOS environments, marking a transitional step toward more advanced multitasking paradigms.[16][26][12]MP/M 8-16
MP/M 8-16 was a hybrid multi-user operating system developed by CompuPro as a proprietary implementation of Digital Research's MP/M-86, specifically tailored for mixed 8-bit and 16-bit processor environments, and first released in September 1982.[27][28] It targeted the CompuPro System 816, a dual-processor S-100 bus computer featuring an Intel 8080/8085/Z80 8-bit CPU alongside an Intel 8086/8088 16-bit CPU, requiring minimum hardware including 256 KB of RAM, System Support 1 board, and disk interfaces for floppy or hard drives up to 40 MB.[27][29] The system extended the core structure of MP/M-86 version 2.x, incorporating enhancements like the SWITCH utility for processor transitions and a shared shell, while maintaining compatibility with Digital Research's interface levels to avoid disrupting standard MP/M-86 operations.[27][28] A key feature of MP/M 8-16 was its ability to execute 8-bit CP/M-80 applications alongside 16-bit [[CP/M-86]] programs simultaneously in a multi-tasking, multi-user environment supporting up to 15 terminals.[27][29] This concurrency relied on inter-processor communication through the MP/M-86 kernel and a real-time monitor for resource arbitration, enabling seamless task switching between processors without halting the system.[27][28] Shared memory was facilitated via 64 KB blocks dedicated to processor handoffs, with each 8-bit task allocated over 60 KB of workspace and the overall system supporting up to 1 MB of addressable user memory per process, divided into banks for efficient allocation in 4 KB increments.[27][29] Cross-processor file sharing was implemented through the unified MP/M-86 file system, which included features like password protection, hierarchical directories, time/date stamping, and support for up to 16 logical drives totaling 8 GB of storage capacity.[27][28] Despite its innovative design for hybrid setups, MP/M 8-16 saw limited adoption confined to CompuPro's niche S-100 ecosystem, as it demanded specialized dual-CPU hardware and could not run 8-bit software on the 16-bit processor alone.[27] Documentation remains scarce today, primarily preserved in archived technical manuals and product catalogs from the early 1980s, with core references including the MP/M-86 User's Guide for foundational operations.[27][29]MP/M-286
MP/M-286 was announced by Digital Research in 1982 as an advanced iteration of the MP/M multi-user operating system, specifically tailored for the newly introduced Intel 80286 microprocessor. The system was designed to harness the 80286's protected mode capabilities, enabling genuine memory protection through multilevel schemes and supporting up to 16 MB of physical addressing, while offering virtual memory expansion to 1 GB. This represented a significant leap from earlier real-mode limitations in prior MP/M versions, aiming to facilitate more robust multi-user environments on 16-bit hardware.[30] Central to MP/M-286's architecture were enhanced multitasking features that leveraged the 80286's segment and descriptor mechanisms for improved process isolation and resource allocation. These elements allowed for efficient context switching and protection rings to prevent interference between user sessions or applications. Compatibility with existing MP/M installations was preserved via a real-mode fallback option, permitting legacy 8086/8088 software to run alongside protected-mode tasks. The operating system targeted emerging 80286 platforms, including prototypes and early systems akin to the forthcoming IBM PC/AT, with Intel providing dedicated development hardware to Digital Research for prototyping and testing.[30] Despite these ambitions and the existence of prototypes, MP/M-286 was never fully developed or released as a standalone product under its original designation. Development efforts were redirected amid evolving market conditions for 80286 systems, with Digital Research prioritizing the broader Concurrent OS family; by 1983, the project had been rebranded and integrated into Concurrent CP/M-286, which built upon the planned protected-mode multitasking and memory features. This evolution culminated in related releases like Concurrent DOS-286 in 1985, featuring hardware-accelerated context switching in as little as 20 μs, descriptor-based protection, and support for up to 512 KB minimum RAM (with 160 KB core requirements).[31]Commands and user interface
Built-in commands
MP/M's built-in commands form the primary interface for users interacting with the operating system, extending CP/M's single-user utilities to accommodate multiple concurrent users and processes across shared resources. These commands handle file operations, process management, and system status queries while enforcing user-specific access controls and resource locking to prevent conflicts in a multi-user environment. Unlike CP/M, MP/M commands incorporate console identifiers and user area specifications to manage interactions from different terminals.[32][33] The ABORT command terminates a running program or process, adapting CP/M's single-process halt to MP/M's multitasking by allowing specification of a target console. Syntax:ABORT [programname] [n], where n is the console number (defaulting to the current one if omitted). For example, ABORT TYPE 1 stops the TYPE program on console 1 from another console, enabling remote process control in multi-user setups. This is essential for administrators to manage hung sessions without rebooting the system.[33]
DIR lists files in the directory of a specified drive or user area, with multi-user filters to restrict visibility to the current user's files unless overridden. Syntax: DIR [filespec] [SYS] [Gn], where [SYS] includes system files and [Gn] displays files for user n (0-15). An example is DIR B:*.TXT [G3], which shows text files for user 3 on drive B, supporting isolated file views in shared disk environments.[33][32]
File copying and manipulation are handled by PIP, which transfers data between drives or devices while respecting multi-user locking to avoid concurrent modifications. Syntax: PIP dest=source [options], such as [G] for global access across users or [AV] for append and verify. For instance, PIP B:=A:*.PRL [G] copies program files from drive A to B, opening source files read-only and applying system locks to prevent interference from other users. In MP/M II, enhanced locking modes (locked, unlocked, read-only) further protect shared files during transfers.[33]
TYPE displays the contents of ASCII files to the assigned console, with options for paging in multi-user scenarios where output must not overwhelm shared terminals. Syntax: TYPE filespec [PAGE], e.g., TYPE DOCUMENT.TXT [PAGE] pauses after 24 lines. Multi-user adaptations include password handling for protected files (e.g., TYPE file;XYZ) and automatic routing to the invoking console, ensuring output isolation.[33]
The STAT command queries and sets file or disk attributes, providing system status including active user loads and resource usage in multi-user contexts. Syntax: STAT filespec [attribute], such as STAT B:*.* to list sizes and read/write status for all files on drive B. It reports per-user disk space and console activity, e.g., showing logged-in users and their processes, which aids in monitoring system load without deeper kernel access. In MP/M II, STAT supports explicit attribute changes for sharing, like setting read-only to enable concurrent reads while blocking writes.[33][32]
Multi-user session management relies on commands like CONSOLE, which identifies the current terminal for process attachment. Syntax: CONSOLE, displaying the console number. This facilitates terminal identification in environments with multiple CRTs or teletypes. The USER command logs in or switches to a specific user area, isolating file access. Syntax: USER [n], e.g., USER 3 changes to user 3's directory context (users 0-15), enforcing privacy in shared storage. BYE logs off the current user, terminating their session and freeing resources while keeping the system running for others.[33][32]
Batch processing, absent pipelines in MP/M, uses SUBMIT to execute sequential commands from a .SUB file, supporting automated multi-user tasks. Syntax: SUBMIT filename.SUB, e.g., SUBMIT START.SUB runs a script of commands like DIR followed by PIP, with logging to track execution across users. MP/M II introduced refined locking via BDOS attributes in these commands, allowing explicit shared access without a dedicated SHARE utility, building on original MP/M's basic read/write protections.[33]
