A Few Decades Late Book Reviews
Developing Applications Using DOS, by Ken W. Christopher, Jr., Barry A. Feigenbaum, and Shon O. Saliga
John Wiley & Sons, February 1990; 573 pages, ISBN 0-471-52231-7; $24.95
Developing Applications Using DOS is a surprisingly obscure book for what’s perhaps the best official-unofficial DOS programming reference. Unofficial because it was published by a 3rd-party publishing house (John Wiley & Sons), official because its authors worked as the lead DOS engineers at IBM (among other achievements, Barry A. Feigenbaum designed the ubiquitous SMB protocol in 1984).
Perhaps the relative obscurity of Developing Applications Using DOS has something to do with the fact that it concentrates on the ill-fated DOS 4.0; however, the vast majority of the book applies to both earlier and later versions of DOS. The book is—unsurprisingly, given its title—aimed at DOS developers, but some of the expository material may be useful to advanced DOS users as it explains certain performance characteristics and illuminates a few of the darker corners of DOS.
The introductory chapter provides a brief history and overview of DOS, followed by a chapter called “How DOS Works”. The authors describe the structure of DOS in a slightly unusual but effective way: a list of CONFIG.SYS statements and DOS extensions is used as a springboard to explain various internal structures. For example, the FILES statement explanation illustrates the SFT (System File Table), and the LASTDRIVE statement description explains the purpose and format of the CDS (Current Directory Structure). Mention of the MEM command initiates a description of the DOS memory allocation bookkeeping, and so on.
The third chapter describes the structure and organization of DOS programs; this information is more or less missing from many DOS references, but Developing Applications Using DOS provides an excellent overview of DOS program execution, EXE and COM files, overlays, environment, or PSP (Program Segment Prefix).
The following three chapters delve into DOS program input and output. Here the material diverges from DOS, strictly speaking, by explaining PC video modes, the BIOS keyboard interface, and mouse support.
The seventh chapter deals with memory management, starting with a very detailed description of DOS conventional memory allocation and continuing with a brief overview of XMS (eXtended Memory Specification) and EMS (Expanded Memory Specification). The following chapter touches on topics of error handling, overlays, and TSRs (Terminate-and-Stay-Resident programs).
The next two chapters describe DOS storage, first on the disk and partition level and then on the directory and file level, including the old FCB (File Control Block) interface. An overview of the DOS file management API is also provided. This is followed by chapters on error handling, internationalization, printing, and interrupt processing (both hardware and software interrupts).
The fifteenth chapter, “Programming Considerations”, is one of the more valuable parts of the book; it explains how to write well behaved, compatible programs (including OS/2 compatibility), and how to design programs. The last chapter is a brief exposition of DOS device drivers.
The hefty Appendix A is a DOS function reference summary—at nearly 100 pages, obviously with quite a lot of detail included. At the beginning of the this appendix is a most unusual table not found in any official DOS reference: The table describes various INT 21h functions as published, unpublished, restricted unpublished, and obsolete. This is meant to give a programmer an idea of which APIs are safe to use and which are likely to change and/or aren’t available in DOS compatibility environments. The appendix describes quite a few “undocumented” DOS functions.
Appendices B and C contain a brief EMS and XMS reference, respectively. Appendix D consists of source listings for several sample programs, all written in assembler; there is no mention of the source code being available on a disk.
Developing Applications Using DOS is a very informative book which includes a wealth of detail not found in official DOS references, either from Microsoft or from IBM—especially important because the data was not obtained by reverse engineering, and it is often accompanied by explanations of various design choices made by the developers of DOS. There is also plenty of valuable expository material typically not found in reference books, dealing with structure and design of DOS programs (rather than just with details of the DOS API). The reference material is also extensive and detailed, although most of it is in no way unique.
It may be worth mentioning that the same trio of authors also wrote two other, strictly user-oriented books, primarily supplementing the official IBM DOS 4.0 reference materials: The New DOS 4.0 and DOS 4.0 Reference. Both of those books were published by John Wiley & Sons in 1989.