Resources for DOS (was: DOS Compatable OS)

Hans Franke Hans.Franke at
Fri Dec 16 08:37:51 CST 2005

Am 14 Dec 2005 16:11 meinte Gary Sparkes:
> On 12/14/05 3:53 PM, "Sean 'Captain Napalm' Conner" <spc at> wrote:
> > It was thus said that the Great Gary Sparkes once stated:

> >> I'm rather bored, so I thought I might try and hack together a small project
> >> OS compatable with at least DOS 1.x or similar, is there any decent resource
> >> for information on dos compatability and how to achieve it, or is it left as
> >> a reverse engineering exercise for 'the reader' ? :)

> >   How compatable?  If you go by the published API for MS-DOS 1.x, then it
> > should be pretty easy, but if by "compatable" you mean "run arbitrary MS-DOS
> > programs, especially those from Microsoft" you may have your work cut out
> > for you.  You may want to check out

> I was thinking of going up compatability in versions, such as going from 1.x
> to 2.x etc, mainly because, well, I'm very, very bored :)

Well, that's like building two OSes, since 2 has been realy something
ifferent, aimed at bridgeing the gap from XPM to Xenix.

> And of course, it'd be IBM PC compatable stuff, not the odd machine MS-DOS
> running thingies

That's not the question. MS/PC Dos is a rather machine independent
OS. as long as you a real mode x86 CPU, DOS itself is compatible
across virtualy all machines. Dos uses for all its functionality
BIOS calls and got no specialities to bind it to IBM-PC Hardware.

Machine specific stuff was all in the BIOS - including lots of
additional functionality for non-IBM machinery. So, straight DOS
programms could be easy portet, if DOS was present.

For incompatibilities there where two major resons:

a) The Application did use Hardware and or BIOS specific functions,
   like writing directly to screen buffers, doing DMA or fiddling
   with the keyboard.

b) The Application used inofficial/not public documentated MS-DOS
   calls, like $52 to get the DDA, the root of all things evil
   (and subsequent the memory chain, or the SFT (*1)).

Most 'incompatible' application fall into cathegory a), except for
lots of MS Programms, which belong to cat b). To my understanding
this was what Sean ment with compatible beyond the published API.

A real good book to stat of would be:

Arne Sch"apers - DOS 5 f"ur Programmierer.

I got no idea if there ever was an englisch edition, but it's
eventualy the best analysis and documentation of DOS ever made.
He covers not only DOS 2-5 but also DR-DOS and all similarities
and differences. Think of it as a documented, debugged and extended
version of

Andrew Schulman ( - Undocumented DOS

Both books are from Addison-Wesley, so If you can't find Arnes,
Undocumented DOS is a good start anyway. The other real helpful
book would be

The MS-DOS Enzyclopedia from MS-Press

Good book, but of course only a compilation of the 'official'
material. only about 20% cover the DOS API, the rest is
somewhat like the mother of all DOS manuals. ~1500 pages in
one book. If you need a DOS-manual, try to get this book. It
even got a small entertaining history secttion. Originaly it
was HUGE a hard cover book for a unpayable price (I remember
500+ Mark).

Another very important book might be 

Gunter Born - Dateiformate - Die Referenz

Again, German, and I don't know about a similar English book.
It lists everything from Lotus to Word, from Autocad to GEM.

Quite helpful - did I mention that I love to have information
as paper in front of me?

Oh, and last but not least, keep Ralf Browns IntList at hand
when starting the project, Sos is more than just INT 21.


*1 - I'm not completely shure it $52 was already present in DOS 1.0,
     but it seams to make sense, especialy since funcions like $50/51
     (GET/SET PSP) or $53 (TRANSLATE BPB) are in the same range and
     should have been already present in 1.0 to my understanding.
     Fits also with the idea of starting 'internal' functions at
     such a number (80 decimal)
VCF Europa 7.0 am 29/30.April und 01.Mai 2006 in Muenchen

More information about the cctech mailing list