I've always been interested in the development of programming languages and programmers' tools. Like many children of the 70's and 80's, I cut my teeth on Commodore 64s & TI 99/4's. But most of my income from the late 80's and early 90's came from DOS programming. After spending time on VMS, Unix, Xerox Altos, Apple Lisas and Macintoshes in school, coming back to work on DOS seemed like a step backwards.
But the one thing I miss about DOS was the control you had over the machine. You didn't need to learn any fancy windowing APIs or worry about HTTP requests. If you wanted to get input from the user, you poked characters directly into video memory and installed your own keyboard interrupt handlers.
After battling "real" operating systems recently, I found myself nostalgic for the old days. So I found my backup copy of Turbo Assembler 2.0 and installed it into a local DosBox instance. If you want to do the same, you can find PDF copies of the manuals from the Internet Archive at:
In related news, Borland released early versions of Turbo C & Turbo Pascal in the early 2000's. If you're interested in a little developer user experience archaeology, you can download some of these packages after a free registration:
I still have my Turbo C 2.0 floppies, but it was easier to download the package from the net. And while I was at the Internet Archive, I noticed they had a copy of Herb Schildt's "Using Turbo C" (which was the second book about C programming I bought, after the K&R book.)
So if you're interested in the development of computer programming interfaces (and old DOS APIs) this should give you a good start.
It's hard to do anything interesting with MS-DOS without knowing a bit about the PC architecture. The good people at Trailing Edge have archived the PC BIOS API reference; this should provide a decent reference to using BIOS functions with Turbo Assembler (or in-lined assembly language in Turbo C.)
To access file system and DOS device driver features, you need to be familiar with MS-DOS API Calls (aka Int 21h services.) The reference I used was Ray Duncan's Advanced MS-DOS Programming. It's likely out of print, but a google search found several "unofficial" copies of the text. For a legitimate copy, you may be able to find on on Amazon or eBay:
And if you still have questions, you can look at the source code for early versions of MS-DOS. Microsoft published the source code for MS-DOS v1.1 and v2.0. They're not released under an "open source" license, but the license is liberal enough to allow research and personal experimentation. Even if you don't want to download the source, take a look at the link anyway, there's a decent discussion of the early history of DOS:
In 2001, Dr. Dobbs published the PDF version of Michael Abrash's Graphics Programming Black Book for free. (free! w00t!) Abrash is considered one of (if not the) best authorities on x86 optimization and PC graphics programming. Reading this book is definitely time well spent.