Software Spotlight: 86-DOS
I noticed that an 86-DOS revision 1.14 turned up on Bitsavers recently, as well as a set of early Microsoft Pascal Compilers for Seattle Computer Products machines. I've updated the downloads to match what they have.
https://winworldpc.com/product/86-dos/100

Initially called "QDOS", 86-DOS was a "quick and dirty" disk operating system created by Tim Patterson of Seattle Computer Products for inclusion with their 8086 based S-100 systems. At the time CP/M had not yet been ported to 8086 and Microsoft ROM Basic was too limited.

86-DOS included a somewhat friendlier command interface than CP/M, incorporated a File Allocation Table similar to that used by Microsoft ROM Basic, and implemented a set of APIs designed to aid porting CP/M-80 programs.
Although it had some functional similarities to CP/M, it was written from the ground up and did not directly copy CP/M. After its success, Gary Kildall of Digital Research alleged it infringed on CP/M.
86-DOS 1.10 was purchased by Microsoft and used as the basis for IBM PC-DOS and MS-DOS.
There were different releases for different hardware-incompatible FDCs. These included Cromemco, Tarbell Electronics and North Star Computers using 8" and 5.25" disks.
The last time I checked, only the Cromemco 4FD version was supported in emulation.
Similar to CP/M, the core of 86-DOS is broken up in to two components: The Basic Input Output System, and an Operating System kernel. The BIOS could be customized to accommodate each specific computer model without the need to modify the System kernel. When it was ported to the IBM PC, much of the BIOS was placed in ROM, partially to support ROM basic.
There are some interesting notes in 86-DOS 1.14.
The system file "86dos.sys" is dated 12/11/81, and the version string contains "1.14".
A News file dated 11/24/81 states:
The documentation for this release of 86-DOS is not complete yet, we
have enclosed the documentation for version 1.0 and a few sheets
explaining new features which are necessary to know to use the system.
We hope to make a new addendum which will replace the 1.0 addendum and
all the loose sheet in a couple of weeks. Microsoft has purchased
86-DOS from us and now owns all the rights to it including the
responsibility to document it. When the final manuals from Microsoft
are available you will get copies.
There is also an interesting, addendum mainly intended to describe the differences between earlier 86-DOS 1.0 and 1.10.
Addendum for 86-DOS 1.1
This disk contains 86-DOS version 1.1 which is necessary to run the Microsoft
high-level language compiler or MACRO-86 assembler which you have purchased.
It also contains the newer versions of the system utilities which go with
86-DOS 1.1. Sometime in December SCP will begin distribution of an even later
version of 86-DOS which will be fully documented and include all the features
of Microsoft's MS-DOS, IBM's Personal Computer DOS, and Lifeboat's SB-86. The
later version will be available for a service charge (probably $25.00).
Differences between 86-DOS version 1.0 and 86-DOS version 1.1 (included on this
disk), which the user must know about in order to use the new software:
* 86-DOS no longer fits on the space reserved at the beginning of the
disk. 86-DOS resides in an invisible file which is always the first
file on the disk. The boot sequence is now as follows:
1> the boot ROM loads the first sector from the disk and jumps to the
code loaded from that sector.
2> the code from the first sector loads in the I/O system which
follows the first sector in the reserved area and is typically
eight 128-byte sectors in length. A jump is made to the
initialization program in the I/O system.
3> the initialization program in the I/O system uses the disk read
function of the I/O system to load 86-DOS from the invisible file.
4> the initialization code then uses 86-DOS to load in the command
interpreter, COMMAND.COM, from the disk and then jumps to it.
* The SYS utility which copys 86-DOS from one disk to another also
copies the invisible file, 86DOS.SYS, which contains 86-DOS. Because
this file must be the first file on the disk (so the I/O system can
find it when 86-DOS is booted up), SYS can only transfer the
operating system to a disk which is freshly CLEARed or already has a
file (invisible or not) called 86DOS.SYS which is large enough to
hold 86-DOS.
* The CHKDSK utility prints the total number of files on the disk
including invisible files. This allows the user to check for the
presence of invisible files such as 86DOS.SYS since the total number
of files reported by CHKDSK will be greater that that reported by the
DIR command. Note: be sure to use this new version of CHKDSK with
86-DOS version 1.1 because old versions of CHKDSK run under 86-DOS
version 1.1 can't "see" the invisible files and will free the disk
space allocated to these files thus destroying them.
* The COMMAND interpreter (COMMAND.COM) can now load executable machine
language files with the extension .EXE (for EXEcute). These are
similar to .COM files but have a 512-byte preface which contains
information on how to patch inter-segment jumps and calls within the
file allowing multiple-segment files to be loaded.
* DEBUG also can load .EXE files so that they can be debugged.
* The assembler has had some rather significant features added to it.
The expression analyser can now perform multiplication and division
as well as addition and subtraction. Use "*" to multiply and "/" to
divide. Multiplications and divisions are performed before additions
and subtractions. Parentheses may be used to change this normal
order of precedence.
Errors messages are sent directly to the console as well as put in
the .PRN print file so that it is not necessary to make a print file
to find out what errors are in the source code. Two more options
have been added to the third letter of the drive assignment
extention which tells the assembler what to do with the print file.
A-O send print file to disk drive A-O
P send print file directly to printer (tabs are NOT expanded)
X send print file to console
Y force a second pass through the source file so that error
messages sent to the console include the text of the source file
line on which the error occured
Z no print file. Error messages sent to the console will indicate
what error occured and on which line, but will not include the
text of the line in which the error occured
The Z option is normally only used if you are assembling a file which
probably has no errors in it (perhaps you've assembled it before and
know it has no errors), so that incomplete error messages are of no
consequence. Using the Z option results in faster assembly since the
assembler doesn't have to make a second pass through source file.
Line numbers have been added to the print file to make it easier to
find particular lines using the editor.
The assembler now handles 8087 opcodes. Complete documentation on
this feature will be provided with the new release in December.
* The disk initialization program (INIT.COM) has been changed so that
the drive letters and disk formats correspond to those used by the
operating system. For example, with the Tarbell double-density
controller there are no longer two different initialization programs
INIT and DINIT for single and double-density disks. The new INIT
will format a double-density double-sided disk in drives E or F if
if you have double-sided drives. See the warning about changing
DOSIO and INIT in the file NEWS.DOC.
Pulling together several sources, this is a list of known 86-DOS versions. It is likely that not all of these were distributed, and only a few of the early ones have survived.
QDOS 0.10 07/--/1980 Roughly half completed version of the OS. It
implemented the original form of Paterson's
derivation of Microsoft's FAT filesystem. In
contrast to the earlier 8-bit FAT filesystem
found in Standalone Disk BASIC-86, this
variant already supported 12-bit table
elements, reduced the number of FATs from 3 to
2, redefined the semantics of some of the
reserved cluster values, and modified the disk
layout, so that the root directory was now
located between the FAT and the data area.
Paterson also increased the previous
9-character length limit to 11 characters in
order to support CP/M-style 8.3 filenames and
File Control Blocks. This variant, however,
still used 16-bytes directory entries and
therefore is not compatible with what became
later known as FAT12 in MS-DOS/PC DOS.
Possibly shipped already.
QDOS 0.11 08/--/1980 Bug fix shipment.
QDOS/86-DOS 0.2 08/--/1980 EDLIN added. Renamed to 86-DOS by August
1980.
86-DOS 0.3 11/15/1980 First version licensed by SCP to Microsoft.
86-DOS 0.33 12/--/1980 First version distributed by SCP to OEMs and
Microsoft as 86-DOS.
86-DOS 0.34 12/29/1980 "General release, updating all past customers"
- Cleaned up release for SCP OEMs including
Microsoft.
86-DOS 0.42 02/25/1981 "32-byte directory entries added" - At the
indirect request of IBM (through Microsoft)
size of directory entries changed from 16 to
32 bytes (similar to MDOS/MIDAS) in order to
add support for a last-modified date stamp (2
bytes) and theoretical file sizes larger than
16 MB (4 bytes), thereby implementing the
earliest form of the 12-bit FAT file system
logically fully compatible with what became
known as FAT12 in MS-DOS/PC DOS later on.
86-DOS retained the capability to read volumes
written under older versions of 86-DOS up to
MS-DOS 1.14 at the least, whereas generic
MS-DOS 1.20 / PC DOS 1.1 and higher no longer
supported it.
86-DOS 0.56 03/23/1981 "Variable record and sector sizes" - Support
for disk blocking/deblocking as requested
since 1981-01-15.
86-DOS 0.60 03/27/1981 "Ctrl-C exit changes, including register save
on user stack" - The file DOSIO.ASM found in
86-DOS 1.00 mentions that it is the "I/O
System for 86-DOS version 0.60 and later".
86-DOS 0.74 04/15/1981 Added device files. "Recognize I/O devices
with file names"
86-DOS 0.75 04/17/1981 Bug fix. "Improve and correct buffer handling"
86-DOS 0.76 04/23/1981 Bug fix. "Correct directory size when not 2^N
entries"
86-DOS 0.80 04/27/1981 Added system calls. "Add console input without
echo, Functions 7 & 8"
86-DOS 1.00 04/28/1981 Modified system calls. "Renumber for general
release"
Roughly corresponds with the IBM PC-DOS
"0.90" 6/5/1981 pre-release.
86-DOS 1.01 05/12/1981 Bug fix. "Fix bug in `STORE'"
86-DOS 1.10 07/21/1981 Purchased by Microsoft and renamed to MS-DOS
on 1981-07-27, therefore the last version with
genuinely matching 86-DOS and MS-DOS version
numbers. First version known to implement the
'hidden' attribute. "Fatal error trapping, NUL
device, hidden files, date & time, RENAME fix,
general cleanup"
Roughly corresponds with IBM PC-DOS 1.00.
86-DOS 1.11 09/03/1981 Don't set CURRENT BLOCK to 0 on open; fix SET
FILE SIZE
86-DOS 1.12 10/09/1981 Zero high half of CURRENT BLOCK after all
(CP/M programs don't)
86-DOS 1.13 10/29/1981 Fix classic "no write-through" error in buffer
handling
86-DOS 1.14 10/11/1981 According to Tim Paterson PC DOS 1.0 basically
reflects 86-DOS 1.14, other sources find a
match of PC DOS 1.0 with MS-DOS/86-DOS 1.10 as
of 1981-07-21 more likely.
My guess is IBM DOS was intended to be updated to this level, but
instead they shipped what they already had.
It sounds like versions after 1.14 were officially "MS-DOS". Until
MS-DOS 2.0, MS-DOS maintained the same version numbering sequence as
86-DOS. This is why there is technically no known "MS-DOS 1.00".
1.20 12/31/1981 Add time to FCB; separate FAT from DPT; Kill SMALLDIR;
Add FLUSH and MAPDEV calls; allow disk mapping in DSKCHG;
Lots of smaller improvements
1.21 01/06/1982 HIGHMEM switch to run DOS in high memory
1.22 01/12/1982 Add VERIFY system call to enable/disable verify after write
1.23 02/11/1982 Add defaulting to parser; use variable escape character
Don't zero extent field in IBM version (back to 1.01!)
1.24 03/01/1982 Restore fcn. 27 to 1.0 level; add fcn. 28
Corresponds with IBM PC-DOS 1.10
1.25 03/03/1982 Put marker (00) at end of directory to speed searches
Corresponds with many OEM releases
First known official release as "MS-DOS" to OEMs
Re-branded under OEM names such as "Z-DOS",
"Compaq-DOS", and so on.
Some OEMs renumbered 1.25 as "1.10" to match IBM
PC-DOS.
references:
Info from MS-DOS 1.x source files.
86-dos version list: https://en.wikipedia.org/wiki/86-DOS
DOS Timeline: https://en.wikipedia.org/wiki/Timeline_of_DOS_operating_systems
Please note that at boot, some versions may print only the COMMAND.COM version number, or an OEM revision number that intentionally differs from the DOS revision level. Do not confuse this with the version of the DOS system.
Seattle Computer Products continued to license and offer MS-DOS at least up to 2.0 for their S-100 systems.

(Note: The forum code coloring extension is totally borked, had to disable it to get this post to work at all)
