• Please review our updated Terms and Rules here

Minimum Hardware for an MS-DOS PC

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.
 
Well, I did built some 8088 and 80C188 boards, and here are some thoughts and ideas:

- MS-DOS itself doesn't need much. It does need a PC compatible BIOS (see below). The PC hardware compatibility of MS-DOS itself are pretty minimal: 8088-compatible instruction set, RAM starting from address 0, ROM in upper part of the address space. It would be nice to have an interval timer for timekeeping, and that's probably it.

- BIOS:
- Use XT-IDE board for block storage with XT-IDE Universal BIOS for INT 13h support (much simpler than messing with floppy code).
- If graphics output is desired, use a graphics card with video BIOS (EGA or VGA). That takes care of INT 10h support. Otherwise it is possible to simulate basic INT 10h and INT 16h functionality on a console/UART.
- DOS calls INT 11h (return reasonable value), INT 12h (return your RAM size), INT 14h (a stub is enough), INT 17h (a stub is enough), INT 15h (also a stub), INT 16 (basic PC functionality functions 00h - 02h are enough)
- The addresses of BIOS entry points are important... at least for video bios and INT 13h.

- An 80C188 system is probably the simplest option hardware-wise. Basically add SRAM and Flash ROM. Use integrated UART for console, and integrated timers for INT 8. You can take a look at N8VEM ECB SBC-188 for ideas. Obviously the ECB interface will need to be replaced with ISA.
One thing with 80C188... DOS (at least MS-DOS 6.22) seems to try writing to some registers in 0x00-0xFF range, and confuses built-in 80188 peripherals. So make sure not to put 80188 peripheral control block there.

- An 8088 system: Two options to simplify a PC:

1. Get rid of the DMA, this removes the messy PC bus arbitration logic, DMA page register, and a DMA address latch. Three most popular uses of DMA in PC compatibles are FDC, HDD controller, and Sound Blaster. FDC can be programmed using I/O mode in BIOS, and 99% of software won't even care about it. HDD... well, use XT-IDE, CF, etc. without DMA. Sound... really PC is too slow for digitized sound, use Adlib :)
2. Use 8088 in minimum mode. That would simplify DMA interface, but it won't be possible to connect 8087 FPU in this case.
 
Holtek or New-Micros (or someone of the same ilk) had an MSDOS compatible embedded card, with ~6-8 chips on it, in the early 90's. You might want to try and track down a schematic of one of those...

I'll see if I have some paper on the bd, but I can't say without major grovelling.

gwk
 
Thanks, probably worth noting that there is a full repro kit for 5150 board already: http://www.mtmscientific.com/pc-retro.html

However my requirement is much simpler and I need to design this with an eye on EMC.

One nice thing about the PC-Retro Kit is that all the chips are socketed, so you could pull stuff and see what happens for your application. You could also start cutting traces if you had to... Just saying. Neat project!
 
Back
Top