Programming Technical Reference - IBM Copyright 1988, Dave Williams I N T R O D U C T I O N This manual is intended to replace the various (expensive) references needed to program for the DOS environment, that stack of magazines threatening to take over your work area, and those odd tables and charts you can never find when you need them. The various Microsoft and IBM publications and references don't always have the same information. This has caused some consternation about the "undocumented" features to be found in DOS. In general use, if a call doesn't appear in the IBM DOS Technical Reference it is considered "undocumented" although it may be in common use. Microsoft's offical policy toward DOS has been to put the burden of documenting and supporting their product to their vendors. Microsoft will not answer any questions concerning DOS directly since they don't officially support it. This leaves what information IBM and other OEMs (DEC, Zenith, et al) have chosen to publish, and the information obtained from programmers who've poked around inside it. Now that Microsoft is selling MSDOS 3.2 and 3.3 as Microsoft products they seem to be dragging their feet over whether they will have to support the generic version since it doesn't have an OEM name on it anymore. In view of their push to OS/2 (OS/2! Just Say No!) further support of DOS seems unlikely. The information here is valid for DOS 2.x and 3.x. Where there are differences between the two versions there are notes in the text. No effort was expended on DOS 1.x or networking features. As I write this there is still considerable furor over incompatibilities with DOS 4.0. Since a Technical Reference for 4.0 isn't availible yet, I don't have a whole lot of info on it. When I started writing this book, it was originally for my own personal use. Then I began expanding it with the idea of getting it published, since at that time there was *nothing* in print like it. If I had managed to send it off to the publishers early enough, I would have had it made. As it was I lost six months having a nice steel rod put in my leg, and half a dozen similar books were published by then, and nobody was interested in mine. Six months is a long time in the PC world. That's why I'm uploading this file as "user-supported." It gives me a chance to recoup a few bucks for the year or so I've been working on this thing, and it gives some advantages that a printed book can't - first, you can load it on your hard disk and use Vern Buerg's LIST or SideKick to scan through text. You can grab a peice of something and paste it into a document, etc. If you help support the PC Programmer's Reference you will always have the latest version availible; you can't "upgrade" printed books. A project this size takes a LOT of time and effort. I've tried to verify all the information I've received, but there's just too much for absolute certainty. If you find any typos, incorrect information, or want to see something else, let me know. If you have any more detailed information on something, PLEASE let me know! Dave Williams D I S C L A I M E R The information presented here was gathered from megabytes of files found on BBS systems, conversations on a dozen different BBS systems, correspondence, and every reference book I could get my hands on. On occaision, a number of prestigious references didn't agree with each other. Where this has happened, I have used the latest references. There is too much information here for me to verify every fact personally. I have used my own judgement as to the reliability of the sources. This entire project was originally begun as a reference for myself, where I put all the little bits of information I culled from various sources into a whole and (hopefully) organized format so I could find them again when nescessary. If you find anything that is incorrect, I would greatly appreciate a card or letter telling me. As is common these days, I have to make a "Notice of Disclaimer". I take no responsibility for anything, and if anything you do with this book ruins you for life or makes your dog bite you, or anything else, that's just tough. I hope you find much use for this reference. It was a trip to write, too. Dave Williams (C) Copyright 1988 References used in preparing this book: IBM Technical Reference Personal Computer p/n 6322507 IBM Publications IBM Technical Reference Personal Computer - PCjr p/n 1502293 IBM Publications IBM Technical Reference Options and Adapters - Enhanced Graphics Adapter p/n 6280131 IBM Publications Aug 1984 IBM DOS Operations Manual Version 2.00 MS-DOS Programmer's Reference by Microsoft p/n 135555-001 Intel Corp. 1984 Lotus-Intel-Microsoft Expanded Memory Specification 4.0 Intel Corp. 1987 Microsoft Extended Memory Specification v2.00 Microsoft Corporation, 1988 X3.4-1977: American National Standard Code for Information Interchange by American National Standards Institute (ANSI) New York, NY 1977 Microcomputer Products - 1987 Data Book NEC Electronics, Inc. p/n 500105 Aug 1987 FastCard IV User Manual Peripheral Marketing Inc p/n 0527 Jan 1987 Hercules Graphics Card User's Manual Programmer's Guide to the IBM PC Peter Norton Microsoft Press 1985 Inside the IBM PC Peter Norton Exploring the IBM PCjr Peter Norton Microsoft Press 1984 Advanced MSDOS Ray Duncan Microsoft Press 1986 The IBM Personal Computer from the Inside Out Murray Sargent III and Richard L. Shoemaker Addison-Wesley 1984 DOS:The Complete Reference Kris Jamsa Osborne/McGraw-Hill 1987 Mapping the IBM PC Russ Davies/Compute! Magazine Compute! Books 1986 Tricks of the MS-DOS Masters Waite Group Supercharging MS-DOS Van Volverton Microsoft Press 1986 DOS Power Tools Paul Somerson Bantam Books 1988 Running MS-DOS Van Wolverton Microsoft Press Microcomputer Interfacing Bruce A. Artwick Prentice Hall 1980 The 8080a Bugbook Tony-Larsen-Titus Howard W. Sams 1977 S-286 User Manual, version 2 Link Computer, 1988 MPC Operations Guide, Manual #1023 Columbia Data Products, Inc. CDP 1983 Assembly Language Subroutines for MSDOS Computers Leo J. Scanlon TAB Books 1986 The Serious Assembler Charles A. Crayne and Dian Gerard Baen Books 1985 Assembly Language Programming for the IBM Personal Computer David J. Bradley Prentice-Hall 1984 The 8086 Book Russell Rector and George Alexy Osborne/McGraw-Hill 1980 Compute!'s Guide to Assembly Language Programming on the IBM PC Dr. Dobb's Journal PC Magazine PC Resource PC Tech Journal Computer Language Programmer's Journal Byte Magazine various computer bulletin board systems, including Byte Information Exchange (BIX) Compuserve IBM SIG GEnie IBM RT GT Net international network FIDO Net international network PCanada BBS system (Toronto, Canada) Pecan Pi RBBS, (404) 454-8756 (Atlanta, Georgia) Night Modulator, (408) 728-5598 (San Jose, California) various text files downloaded from BBS systems - INTERRUP.ARC, BIOSDOS.ZOO, DOSINFO.ARC, DOSERROR.DOC, DOSTIPS.TXT, etc. and all the people who have been good enough to furnish information