Chuck(G)
25k Member
It seems that is more or less how MS-DOS was originally envisaged: they had OEM versions for each vendor, so as long as it was an 8088-system, there was room for custom hardware.
This is also how CP/M worked, and that is what DOS was originally modeled after.
But yes, in practice, a lot of software would access the IBM PC hardware directly, and it even bit IBM themselves in the posterior when they released the PCjr. In practice, MS-DOS became the de-factor IBM PC hardware standard, and a lot of 'real world' DOS applications won't run on anything that isn't 100% compatible.
Mind you, if you just want to write your own applications, there's nothing that keeps you from treating DOS as it was intended, and sticking only to the DOS and BIOS APIs as a sort of hardware abstraction layer.
Tell me about it--I was part of a "PC sort of" implementation project way back when. The box itself was an 80186+80286 unit, with the 80286 being optional and intended to run Xenix--with MS-DOS as a cost-reduced option (i.e., the 286 socket was unpopulated, as was some of the memory boards). I/O, in either case was done by the 186 (sort of like Xenix on the TRS-80 Model 16).
All console I/O was RS232 going to what was essentially VT-100 compatible terminals. At the time, IO.SYS was pretty much all vendor-specific I/O (for MS-DOS, you don't really need a ROM BIOS) and MSDOS.SYS was furnished by MS, along with some tools. This was in the day of MS-DOS 1.x and 2.0.
While we could get vendor-alterable versions of WordStar and Multiplan, by and large, most useful software employed PC-hardware-specific dependencies. So not terribly useful.