Date: Wed, 30 Jan 2008 15:44:40 +0100
From: Holger Veit <holger.veit at iais.fraunhofer.de>
MSDOS was much better in abstracting hardware, because
it had a loadable
driver concept.
Loadable drivers didn't come along until MS/PC DOS 2.0. Before that,
adding another device, say an extra disk drive, was a brutal
patchwork affair. CP/M 86 was far more advanced (for that matter,
CP/M Plus was too) than MS DOS 1.x. As a matter of fact, the DOS 1.1
reference material included information not only on commands, but
system table layout, .EXE file structure and system requests. ONE
disk buffer for blocking/deblocking. Read and write transferred one
record to and from the DTA. Flat file structure; file I/O done with
FCBs. As a matter of fact, if you didn't know any better, you'd have
sworn that someone took CP/M 2.2 and ported it to the 8086.
MS-DOS 2.0 was a huge advance over 1.1; by Microsoft's own admission,
the goal was to get closer to Xenix in operability.
Point is there in both cases: the hardware designers
did not foresee how
their hardware could or should be used by software, so they basically
implanted the bare chips, not even respecting IRQ and DMA requirements;
the OS developers did not foresee usable and extensible interfaces to
access and abstract various hardware and just hacked something that it
would somehow work; and finally the application designers found the whole
base OS functions where plain unusable and reinvented, each one
differently, the wheel, leaving burnt ground for others that somehow
required similar functions - "thou shall not use the printer port for your
dongle, I have it already."
20-20 hindsight is great, but let's take it from the viewpoint of the
times. There were very many CP/M systems around at the time with
*no* interrupt or DMA support. Remember that the 5150 made extensive
use of peripheral chips that were from the 8-bit world (8237, 8253,
8259, 8255, not to mention the NS8250), so the fact that DMA and an
interrupt controller (with 8 interrupt levels yet) and a timer was
somewhat remarkable considering the competition.
Although the BIOS functions came a long way as the PC evolved, MS-DOS
still ran on a 5150, so the added BIOS functionality couldn't be
exploited.
The parallel port was designed as a printer port; the fact that it
was used for other things can hardly be blamed on MS-DOS. The
printer port does what it was designed to do extremely well. The
fact that a dongle designer was so short-sighted as to not provide
printer pass-through functionality can hardly be laid on the
designers of the PC.
Personally, I'm surprised the light pen interface wasn't used for
more things.
Cheers,
Chuck