This turned a PC into a multiuser machine capable of supporting multiple concurrent users using dumb terminals attached by serial ports.
[7][8] Initially, this was a single-user operating system supporting true multi-tasking of up to four (in its default configuration) CP/M-86 compatible programs.
Like its predecessors it could be configured for multi-processor support (see e.g. Concurrent CP/M-86/80) and also added "virtual screens" letting an operator switch between the interactions of multiple programs.
When a command was entered, the operating system ran the corresponding application on either the 8-bit or the 16-bit processor, depending on whether the executable file had a .COM or .CMD extension.
[6] In August 1983, Bruce Skidmore, Raymond D. Pedrizetti, Dave Brown and Gordon Edmonds teamed up to create PC-MODE,[12] an optional module for Concurrent CP/M-86 3.1[13][14] (with BDOS 3.1) to provide basic compatibility with PC DOS 1.1 (and MS-DOS 1.1).
For example, although a console program such as PKZIP worked perfectly and offered more facilities than the CP/M-native ARC archiver, applications which performed screen manipulations, such as the WordStar word processor for DOS, would not, and native Concurrent CP/M (or CP/M-86) versions were required.
Efforts being part of a cooperation with Motorola since 1984[19][14] led to the development of Concurrent DOS 68K in Austin, Texas, as a successor to CP/M-68K written in C. One of its main architects was Francis "Frank" R. Holsworth (using siglum FRH).
[26][27] Concurrent DOS 286 was a complete rewrite in the C language based on a new system architecture with dynamically loadable device drivers instead of a static BIOS or XIOS.
[28][25] While this worked on the B-1 step of prototype chip samples, Digital Research, with evaluation copies of their operating system already shipping in April, discovered problems with the emulation on the production level C-1 step of the processor in May, which would not allow Concurrent DOS 286 to run 8086 software in protected mode.
Intel said that the approach Digital Research wished to take in emulating 8086 software in protected mode differed from the original specifications; nevertheless they incorporated into the E-2 step minor changes in the microcode that allowed Digital Research to run emulation mode much faster (see LOADALL).
[29][23] These same limitations affected FlexOS 286 version 1.x, a reengineered derivation of Concurrent DOS 286,[30][31] which was developed by Digital Research's new Flexible Automation Business Unit in Monterey, California, since 1986.
Developed in Hungerford, UK, versions 5 and 6 (Concurrent DOS XM, with XM standing for Expanded Memory) could bank switch up to 8 MB of EEMS to provide a real-mode environment to run multiple CP/M-86 and DOS programs concurrently and support up to three users (one local and up to two hooked up via serial terminals).
It was a true multiuser system; several users could use a single database with record locking to prevent mutual interference.
Although many of these were soon rectified – for example, graphical terminals were developed, allowing users to use CGA, EGA and VGA software – it was less flexible in this regard than a network of individual PCs, and as the prices of these fell, it became less and less competitive, although it still offered benefits in terms of management and lower total cost of ownership.
When Novell acquired Digital Research in 1991[1][2][3] and abandoned Multiuser DOS in 1992, the three Master VARs DataPac Australasia, Concurrent Controls[4] and Intelligent Micro Software[5] were allowed to license the source code of the system to take over and continue independent development of their derivations in 1994.
Intelligent Micro Software Ltd. (IMS) of Thatcham, UK, acquired a license to further develop Multiuser DOS from Novell in 1994 and renamed their product REAL/32 in 1995.
[62] On 19 April 2002, Intelligent Micro Software Ltd. filed for insolvency and was taken over by one of its major customers, Barry Quittenton's Itera Ltd.[66][67][68] This company was dissolved on 2006-03-28.
[71] Advertised feature list, as of 2003:[72] By 10 December 2003, IMS made "REALNG V1.60-V1.19-V1.12" available,[73] which, based on the Internet Archive, seems to be the latest release.
The API provided support for blocking and non-blocking message queues, mutual-exclusion queues, the ability to create sub-process threads which executed independently from the parent, and a method of pausing execution which did not waste processor cycles, unlike idle loops used by single-user operating systems.
Programs written, or adapted, for any multitasking platform need to avoid the technique used by single-tasking systems of going into endless loops until interrupted when, for example, waiting for a user to press a key; this wasted processor time that could be used by other processes.