[comp.sys.ibm.pc] Book on writing device drivers for PC-DOS/MS-DOS systems.

aland@infmx.UUCP (Dr. Scump) (02/04/90)

In article <3512@rti.UUCP> bcw@rti.UUCP (Bruce Wright) writes:
>In article <2761@cae780.UUCP>, ravi@cae780.UUCP (Ravi Bhaskaran) writes:
>> Hello,
>> 	A friend of mine has been desperately looking for a book
>> on writing device drivers for MS-DOS or PC-DOS. Any pointers would
>> be much appreciated.
>> Thanks.
>> 
>The MS-DOS "Encyclopedia" from Microsoft Press has some information
>...
>You might also look at the Waite Group's MS-DOS Developer's Guide,
>which has a section on MS-DOS device drivers.  Somewhere I think
>I've seen a book *just* on device drivers from the same source, but
>I don't have it and don't recall where I've seen it.

I think the title is _Writing_MS-DOS_Device_Drivers_.  The author
is Robert Lai -- I know that much for sure, I know the man.  I
can probably get specifics (ISBN, etc.) if you still can't find it.
It was a selection-of-the-month from a couple of the major book clubs.

--
Alan S. Denney  @  Informix Software, Inc.       "We're homeward bound
aland@informix.com  {pyramid|uunet}!infmx!aland   ('tis a damn fine sound!)
-----------------------------------------------   with a good ship, taut & free
 Disclaimer:  These opinions are mine alone.      We don't give a damn, 
 If I am caught or killed, the secretary          when we drink our rum
 will disavow any knowledge of my actions.        with the girls of old Maui."

george@rebel.UUCP (George M. Sipe) (02/06/90)

In article <3300@infmx.UUCP> aland@infmx.UUCP (alan denney) writes:
>In article <3512@rti.UUCP> bcw@rti.UUCP (Bruce Wright) writes:
>> Hello,
>> 	A friend of mine has been desperately looking for a book
>> on writing device drivers for MS-DOS or PC-DOS. Any pointers would
>> be much appreciated.
>> Thanks.
>
>I think the title is _Writing_MS-DOS_Device_Drivers_.  The author
>is Robert Lai -- I know that much for sure, I know the man.  I
>can probably get specifics (ISBN, etc.) if you still can't find it.
>It was a selection-of-the-month from a couple of the major book clubs.

Recommended highly.  Addison-Wesley:  "Writing MS-DOS Device Drivers" by
Robert S. Lai, ISBN 0-201-13185-4.

This question has been asked several times before.  FYI, the contents of
this excellent 466 page (indexed) book follow (any typos are mine):

Chapter 1 - Introduction
	About This Book
	This Book's Intended Readers
	What You Will Need To Use This Book
	Conventions Used in This Book
	How To Use This Book
	Overview of the Chapters
	Summary
	Questions
Chapter 2 - Basic Concepts
	Controlling Devices through Software
	Refresher Course on DOS
	DOS Services
	DOS Device Management
	The DOS Device Driver
	Block and Character Devices
	Device Driver Commands
	Tracing a Request from Program to Device
	The Mechanics of Building Device Drivers
	Summary
	Questions
Chapter 3 - A Simple Device Driver
	What Does a Device Driver Look Like
	An Overview of the Simple Device Driver Sections
	Instructing the Assembler
	Main Procedure Code
	The Device Header Required by DOS
	Work Space for the Device Driver
	The STRATEGY Procedure
	the INTERRUPT Procedure
	Your Local Procedures
	DOS Command Procedures
	The ERROR EXIT Procedure
	the COMMON EXIT Procedure
	The End of Program Section
	The Entire Simple Device Driver
	Building the Device Driver
	If It Does Not Work
	Summary
	Questions
Chapter 4 - A Console Device Driver
	The Console Device Driver
	Designing Our Console Device Driver
	An Overview of Writing a Console Device Driver
	A Complete Look at the Console Device Driver
	A Note about DOS Versions
	Building the Replacement Console Device Driver
	Summary
	Questions
Chapter 5 - A Printer Device Driver
	Printer Types
	I/O Control and IOCTL Calls
	The IOCTL Program
	Building and Using the IOCTL Program
	BIOS Services for Serial and Parallel Adapters
	Inside the Printer Device Driver
	Building the Printer Device Driver
	Using the Printer Device Driver
	Summary
	Questions
Chapter 6 - A Clock Device Driver
	The Clock/Calendar Chip
	The Clock Device Driver Functions
	Overview of PC Clocks and Timing Signals
	Programming the MM58167A Clock Chip
	Where Is the Clock?
	Resident Programs
	Using the Timer Interrupt for Time Displays
	Understanding the Clock Device Driver Program
	Building the Clock Device Driver
	The Clock Device Driver in Action
	Summary
	Questions
Chapter 7 - Introducing Disk Internals
	The Physical Side of Disks
	Organizing Data on Disk Drives
	Technical Details of DOS Disk Support
	The Boot/Reserved Area, FAT, and Clusters
	The File Directory
	Disk Sizing
	Critical Disk Parameters
	DOS Disk Device Drivers
	Disk Device Driver Commands
	Summary
	Questions
Chapter 8 - A RAM Disk Device Driver
	Using the RAM Disk Device Drier
	RAM Disks and How They Work
	The RAM Disk Device Driver
	What Commands the RAM Disk Device Driver Will Use
	The RAM Disk Device Driver Program Listing
	The Whole RAM Disk Device Driver
	Building the RAM Disk Device Driver
	Modifying the RAM Disk Device Driver
	Summary
	Questions
Chapter 9 - Building a Complete Full-function Device Driver
	Required Tools
	The Perfect Editor
	An Overview of the Device Driver
	Summary
	Questions
Chapter 10 - Tips and Techniques
	A Checklist for Writing Device Driers
	The Art of Debugging Device Drivers
	Prototyping Device Drivers
	Where Is My  Device Driver?
	Adding Debugging Routines
	A New Stack
	The Special Bit
	Machine Incompatibilities
	DOS Differences
	DOS Version Differences
	Summary
	Questions
Appendix A - An Overview of the 8086/8088 Architecture
Appendix B - BIOS Interrupts
Appendix C - DOS Initialization
Appendix D - Special Features of the Hard Disk
Appendix E - Answers to Questions
Index

The author directly also offers a diskette containing all examples in the
book for only $10 (see the Preface, page xiii).


George M. Sipe,		       Phone: (404) 447-4731
537 Lakeshore Drive, Berkeley Lake, GA  30136-3035
UUCP: ...!{decvax,linus,rutgers}!gatech!rebel!george
-- 
George M. Sipe,		       Phone: (404) 447-4731
537 Lakeshore Drive, Berkeley Lake, GA  30136-3035
UUCP: ...!{decvax,linus,rutgers}!gatech!rebel!george