# DOS Plus

DOS Plus (erroneously also known as DOS+) was the first operating system developed by Digital Research's OEM Support Group in Newbury, Berkshire, UK, first released in 1985. DOS Plus 1.0 was based on CP/M-86 Plus combined with the PCMODE emulator from Concurrent PC DOS 4.11. While CP/M-86 Plus and Concurrent DOS 4.1 still had been developed in the United States, Concurrent PC DOS 4.11 was an internationalized and bug-fixed version brought forward by Digital Research UK. Later DOS Plus 2.x issues were based on Concurrent PC DOS 5.0 instead. In the broader picture, DOS Plus can be seen as an intermediate step between Concurrent CP/M-86 and DR DOS.
DOS Plus is able to run programs written for either CP/M-86 or MS-DOS 2.11, and can read and write the floppy formats used by both of these systems. Up to four CP/M-86 programs can be multitasked, but only one DOS program can be run at a time.

## User interface

DOS Plus attempts to present the same command-line interface as MS-DOS. Like MS-DOS, it has a command-line interpreter called COMMAND.COM (alternative name DOSPLUS.COM). There is an AUTOEXEC.BAT file, but no CONFIG.SYS (except for FIDDLOAD, an extension to load some field-installable device drivers (FIDD) in some versions of DOS Plus 2.1). The major difference the user will notice is that the bottom line of the screen contains status information similar to:
The left-hand side of the status bar shows running processes. The leftmost one will be visible on the screen; the others (if any) are running in the background. The right-hand side shows the keyboard layout in use (UK8 in the above example), the printer port assignment, the keyboard Caps Lock and Num Lock status, and the current time. If a DOS program is running, the status line is not shown. DOS programs cannot be run in the background.
The keyboard layout in use can be changed by pressing Ctrl, Alt and one of the function keys F1–F5.

## Commands

DOS Plus contains a number of extra commands to support its multitasking features:
* ADDMEM: Sets the amount of extra memory to allocate to EXE programs.
* ALARM: A message alarm clock.
* BACKG: Allows background processes to be listed and stopped.
* COMSIZE: Sets the amount of memory to allocate to COM programs.
* PRINT: Print spooler.
* SLICE: Sets the amount of processor time to give to the foreground program. See also the %$SLICE% environment variable.
* USER: Sets the user number to use when accessing CP/M media.
It also contains subsets of the standard DOS commands and CP/M commands – for example, it has both a built-in COPY command, and a PIP utility, both of which copy files.
The CD command can assign one of the three drives N:, O: or P: to a directory on a different drive, in a similar manner to the MS-DOS command SUBST. For example,
will cause the directory C:\DATA\ACCOUNTS to appear as drive N:. This so-called floating drive feature allows old programs which don't support subdirectories to work under DOS Plus and can be used to make file handling at the command prompt much easier. This feature is also present in Concurrent DOS, Multiuser DOS, System Manager 7, and REAL/32, however, these systems extend the concept to all unused drive letters from A: to Z:, except for drive letter L:. DR DOS 3.31 – 6.0 (up to the November 1992 updates with BDOS 6.7 only) also support this (including drive letter L:). Under the later systems, the 4DOS/NDOS command processor supports this features as well. Floating drives are implemented in the BDOS kernel, not in the command line shell, thus this feature can also be used from within DOS applications when entering directory paths for as long as the application does not parse and split the dirspec for further processing.
Using a similar feature, Concurrent DOS, Multiuser DOS, System Manager and REAL/32 will dynamically assign a floating drive L: to the load path of a loaded application, thereby allowing applications to refer to files residing in their load directory under a standardized drive letter instead of under a fixed absolute path. This load drive feature makes it much easier to move software installations on and across disks without having to adapt paths to overlays, configuration files or user data stored in the load directory or subsequent directories. (For similar reasons, the appendage to the environment block associated with loaded applications under MS-DOS/PC DOS 3.0 (and higher) contains a reference to the load path of the executable, however, this consumes more resident memory, and to take advantage of it, support for it must be coded into the executable, whereas DRI's solutions transparently works with any kind of application.)
Another feature resulting from the BDOS' internal organization of current working directories as relative links to parent directories is the theoretically unlimited directory depth supported by all those above mentioned operating systems – in contrast to MS-DOS/PC DOS (and DR DOS since 1992), where an MS-DOS compatible internal data structure named Current Directory Structure (CDS) limits directory depths to a maximum of 66 characters.
These features can be attributed to the fact that CP/M itself did not have a concept of subdirectories, and DOS was emulated under these operating systems, so directories had to be translated to internal CP/M structures in some intelligent way.

## Internal structure

DOS Plus boots from a single file called either DOSPLUS.SYS or NETPLUS.SYS (rather than the IO.SYS / MSDOS.SYS combination of MS-DOS). This file is in the CP/M-86 CMD format, and is structured internally as a number of modules:
* The BDOS basic disk operating system kernel, which handles multitasking and implements the CP/M API.
* The XIOS extended input/output system, which is the machine-dependent component that performs low-level disc and character I/O.
* In the case of NETPLUS.SYS with DR Net support.
* The DOS emulator (internally named PCMODE), which converts each MS-DOS function call into one or more CP/M calls. In the case of a request to change the current directory, for example, this would translate to a series of 'open directory' calls, one for each directory in the provided path.
* A stub which loads COMMAND.COM (or DOSPLUS.COM) when required. This stub contains the string "OS=CPCDOS", suggesting that it is based on the Concurrent PC DOS codebase.

## Computers that used DOS Plus

DOS Plus was the main operating system in ROM for the Philips :YES, for which it was originally developed. PC compatible versions were supplied with the Amstrad PC1512 and the Jasmin Turbo from the French company T.R.A.N. S.A. The non-IBM PC compatible BBC Master 512, came with DOS Plus 1.2, 1.2a or 2.1, also in conjunction with Solidisk's PC Plus memory expansion. There were DOS Plus 2.1e/g adaptations for the Apricot ACT series' non-standard 315 KB and 720 KB FAT12 floppy formats. The logical sectored FAT hard disk format (partition type 0xF2) of Sperry IT PCs, and the 80186 co-processor boards for the Acorn Archimedes A300 and A310 as well as Acorn 286 prototypes were supported as well.

## Versions

Known operating system versions include:
* DOS Plus 1.0 (ROMed in Philips :YES) (with BDOS 4.1).
* DOS Plus 1.1 (with BDOS 4.1)
* DOS Plus 1.2 (with BDOS 4.1)
* DOS Plus 2.1 (with BDOS 5.0)