[comp.os.msdos.programmer] Books for VGA programming

ferris@tcville.HAC.COM (05/23/91)

I'm looking to get into some graphics programming on VGA boards, but
I know very little about the subject.  So, are there are books 
especially recommended for VGA graphics programming?  I know of several
books, but I figure there might be one or two that stand above the
rest of the crowd.

If people would like, I will summarize to the net the findings I get
from this.

Thanks,
Mark Ferris                         smart:    ferris@tcville.edsg.hac.com
Image and Signal Processing Lab     dumb:     ferris%tcville@hac2arpa.hac.com
Hughes Aircraft Co., EDSG           uucp:     hacgate!tcville!ferris

raymond@math.berkeley.edu (Raymond Chen) (05/23/91)

[The following prerecorded message is archived on
math.princeton.edu:pub/rjc/csip/books.Z]

[$Id: books 2.9 90/08/19 00:02:41 raymond Exp Locker: raymond $]

Here follows a collection of book recommendations, drawn from years of
comp.sys.ibm.pc discussions.  All recommendations are due to the
original authors.  (Unfortunately, most of the original attributions
have been lost.)

Books are listed alphabetically by author, in BibTeX format.  Many
of the bibliographical entries are incomplete.  If you can help to
complete any of the entries, or have suggestions of your own, send
email to raymond@math.berkeley.edu.

@book{ma:zen
    author = "Michael Abrash",
    title = "The {Z}en of Assembler",
    publisher = {Scott, Foresman and Company},
    address = {Glenview, Illinois},
    year = 1990,
    ISBN = {0-673-38602-3}
}

    Volume 2 is scheduled for sometime in 1990.

    "A good discussion of reprogramming timer 0 in Chapter 2." 
        -- David J. Birnbaum (djb@wjh12.harvard.edu)

    "A super accurate timer is presented (actually a short- and a long-term
     timer) along with an explanation of their operation."
	-- John Mitchell (johnm@sim.Berkeley.EDU)

   "Abrash actually develops two timers in his book.  The higher accuracy
    timer requires you to turn off all interupts.  Its primary purpose is
    to time small sections of assembly code.  For timing full programs Abrash
    has a long term timer of more questionable accuracy.  However, it is still
    a book that anyone with more than a passing interest in assembly should
    read.  ... If you are considering learning assembly you might look at this
    series."
        --- Tom Webb (webb@uhccux.uhcc.Hawaii.Edu)

@book{waite:msc,
    author = "Nabajyoti Barkakati",
    title = "The {W}aite {G}roup's Essential Guide to {M}icrosoft {C}",
    publisher = {Howard W. Sams \& Company, A Division of Macmillan, Inc.},
    address = {4300 West 62nd Street, Indianapolis, Indiana 46268},
    year = 1989,
    price = "$8"
}
   "An *excellent* reference." -- Michael J. Saletnik (msaletni@jade.tufts.edu)

@book{jc:serial,
    author = "Joseph Campbell",
    title = "C Programmer's Guide to Serial Communications",
    publisher = {Howard W. Sams \& Company},
    phone = "1-800-428-SAMS"
}
   "A must get if you are going to do any serial programming.  It contains
    information for the beginner/advanced user that explains the serial
    interface." -- James Symolon (SYMOLON@CTSTATEU.BITNET)

   "An excellent reference...  This book covers interrupt driven
    communications on the IBM PC and the Kaypro (why I dunno, but it
    does...). This should at least get you going on the right path." 
    -- Steve Resnick (stever@Octopus.COM)

@book{cg:386,
    author = "Crawford and Gelsinger",
    title = "Programming the 80386",
    publisher = {Sybex}
}

   "... invaluable ...  Includes C-like code for every instruction on
    the chip."  -- Jay B. Harlow (uunet!ogicse!plains.harlow)

   "This book is probably the most useful `instruction set list' book that I
    have ever seen.  The inclusion of non-trivial examples (how about the base
    for a 386 OS?), the level of information is excellent particularly the
    description of tasks and OS level software considerations." 
        -- Mike Percy (F: grimlok@hubcap.clemson.edu)

@book{td:dos,
    author = "Terry R. Dettman",
    title = "{DOS} Programmer's Reference"
    publisher = "Que",
    address = {Carmel, IN},
    year = 1988,
    price = "$23",
    ISBN = "0-88022-327-8"
}
   "Lists almost any interrupt a guy could want."

   [In response to a question about writing a device driver]
   "I recommend reading chapter 12." -- Neal A. Belair (nab@sppy00.UUCP)

@book{rd:dos,
    author = "Ray Duncan",
    title = "Advanced {MS-DOS} Programming",
    publisher = {Microsoft Press}
    price = "$25",
}
   "I strongly recommend the Advanced DOS guide from Microsoft Press.  It's
    very informative."

   "... very good if you are either writing in C or Assembly language.
    In section one, he covers many areas such as keyboard/mouse input,
    video display, printer and serial ports, file management, disk
    directories, memory management, interrupt handlers, device drivers,
    filters and compatibility. He discribes the concepts and gives source
    code (C and assembler) to be used as an example.  In sections 2, 3 and
    4 describes all the DOS function calls. He gives all inputs and outputs,
    and gives examples. There are also notes. These give you an idea of what
    and how DOS does things as well as things to watch out for. His second
    edition is current through DOS version 4.0."
                -- Mark Kallas (mkallas@digi.lonestar.org)

@book{rd:encyclo,
    editor = "Ray Duncan",
    title = "The {MSDOS} Encyclopedia",
    publisher = {Microsoft Press},
    price = "$70",
    ISBN = "1-55615-174-8"
}

   "Even more informative is the MSDOS Encylopedia. ... The book goes more
    in depth than any other books I've seen. The 50 page chapters on TSRs
    has the best documentation on the topic to ever come out. The list
    price of $70 for the paperback edition may seem steep, but it is
    worth it. Compare that to the price of a TechRef from IBM and it's
    a real deal!"

@book{be:tp,
    author = "Ben Ezzel",
    title = "Programming the {IBM} User Interface Using {T}urbo {P}ascal",
    publisher = {Addison-Wesley}
}

@book{be:gptc,
    author = "Ben Ezzel",
    title = "Graphics Programming in Turbo C 2.0"
}

   "talks about how to print a graphics image on dot matrix and laser printers.
    It includes a grey scale feature."
        -- Steve Breuer (sab@engr.uark.edu)

@book{rf:ega,
    author = "Richard F. Ferraro",
    title = "Programmer's Guide to the {EGA} and {VGA} Cards",
    publisher = {Addison-Wesley}
}
   "... more detailed and harder to read (info is scattered everywhere),
    compared to Wilton's book.  However, it has a lot of information in 
    very good detail."

   "I have found MANY typographical errors in Ferraro's book.  Lots of
    sentences contradict others..."

@book{jf:memory,
    author = "James Forney",
    title = "{MS-DOS} Beyond 640{K}:  Working with extended and expanded memory",
    publisher = {Windcrest Books (TAB books division)},
    year = 1989,
    ISBN = {0-8306-3239-5},
    price = "$20"
}

   "Comprehensive review of expanded/extended memory clearly laid out for
    novice also very useful for advanced users.  Covers LIM specs
    including 4.0 and operating modes of 286 and 386 chips and how the
    modes dictate memory access as well as problems of interfacing the
    memory with DOS.  Also talks about true multitasking and high memory
    management.  Not strong on details for writing code ie talks about the
    2 methods of returning to real mode in the 286 via undocumented
    loadall or triple fault route but no code to accomplish the task via
    either route.  However with the info provided you get a good idea of
    what you need to do and where to look for the details."
                -- Jerry M. Wright (BUMY@VAX5.CIT.CORNELL.EDU)

@book{cg:kermit,
    author = "Christine M. Gianone",
    title = "Using {MS-DOS} {K}ermit",
    publisher = {Digital Press},
    year = 1990,
    ISBN = {DP ISBN 1-555558-048-3, PH ISBN 0-13-932476-3},
    phone = "1-800-343-8321",
    order_number = "EY-C204E-DP",
    remarks = "5.25 inch MS-DOS Kermit 3.0 disk comes with the book"
}

@book{th:source,
    author = "Thom Hogan",
    title = "The Programmer's {PC} Sourcebook",
    publisher = {Microsoft Press},
    year = 1988
}
   "For those who need lots of information and have little time for reading."

   "A whole book with nothing but reference tables that answer quick
    questions like, `What is the memory layout of the EGA in mode 15?' "

   "Walk, no.. RUN to your local computer shop and buy/order a copy today.
    WARNING: This is not a book for novices.. it contains very little in the
    way of English or Swahilie [sic] writings for the hand-holding set.
    Instead, it is crammed full of technical facts on just about everything
    to do with IBM/MICROSOFT pinouts/interfaces/standards etc.."
        -- Mark S. Lord (uunet!bnrgate!carrsc!mlord)

@book{rj:pps,
    title = "Programmer's Problem Solver for the {IBM PC}, {XT} and {AT}",
    author = "Robert Jourdain",
    publisher = {Brady Books},
    ISBN = "0-89303-787-7"
}

   "I recommend the book [for information on programming the timer]."
        -- Tris Orendorff (tris@alzabo.uucp)

@book{bdk:ega,
    author = "Bradley Dyck Kliewer",
    title = "{EGA/VGA} A Programmer's Reference Guide",
    publisher = {McGraw-Hill}
}

   "... a reference, good for the details but I find it hard to learn
    from. Best save it for after you have the basics well in hand."
	-- Edward Kalenda (ekalenda@cup.portal.com)


@book{rl:device,
    author = "Robert S. Lai",
    title = "Writing {MS-DOS} Device Drivers",
    publisher = {Addison-Wesley},
    ISBN = "0-201-13185-4",
}
   "Lots of examples in assembly language."
   "Recommended highly."

   "Examples include Console, Printer, Clock, RAM Disk, and 
    a `Complete Full-function Device Driver'.  Chapter on debugging.
    Diskette available."

@book{lb:format,
    title = "Lotus File Formats for 1-2-3 {S}ymphony and {J}azz:
             File Structure Descriptions for Developers",
    publisher = {Lotus Books},
    address = {Lotus Development Corporation, 55 Cambridge Parkway,
               Cambridge, MA 02142 USA}
}
   "Has 1-2-3 and more."

@book{ms:mouse,
    title = "Microsoft Mouse Programmer's Reference",
    publisher = {Microsoft Press},
    year = 1989
}

   "The easy way to approach a mouse is with a large book in hand.  This tome
    describes the calls one can make upon the standard MS mouse driver Int 33h
    interface. An advantage of seeing things from the book handler's side is
    not being bitten by the sundry ways physical mice talk to computers."
        -- Joe Doupnik (jrd@cc.usu.edu)

   "When I bought that book, I was extremely disappointed with it.  It is not
    anywhere near the standard of the DOS tech ref manuals (and those aren't so
    great, either).  For example:  All calls are described in Basic, with
    parameters being called things like M1, M2, etc.; you have to wade through
    lots of conditional branches in the source code for the mouse interface
    routine to find which registers the Mx arguments end up in.
    The copy I have must be 3 or 4 years old now (I bought it 2 years ago,
    but it looked old then); does MS sell something useful now?"
        -- Duncan Murdoch (dmurdoch@watstat.waterloo.edu)

   "My copy of the Microsoft Mouse book is brand new, and has all
    programming information in several languages, including assembler. It also
    has a diskette attached. I found this edition to be quite clear and useful,
    but limited to Microsoft mice (i.e., really two buttons) and clones."
        -- Joe Doupnik (jrd@cc.usu.edu)

@book{so:tp,
    author = "Stephen K. O'Brien",
    title = "Turbo {P}ascal---Advanced Programmer's Guide",
    publishes = {Borland-Osbourne},
    ISBN = "ISBN 0-07-881420-0"
}
    Includes several units, including a TSR unit.

   "I have used it [the TSR unit] many times, and have only one complaint
    about it: perhaps because it _is_ so thorough, it is also fairly large."
        -- Mitch Gorman (silk@dhw68k.cts.com)

@book{mp:quickref,
    title = "{MSDOS} Extensions Programmers Quick Reference",
    publisher = {Microsoft Press}
}
   "Contains all the interrupt calls for the expanded and extended memory,
    CD-ROM and the Microsoft Mouse (which is very much compatible with
    Logitech).  I've found that it seems to have all the information I
    need."

@book{pn:guide,
    author = "Peter Norton",
    title = "The {P}eter {N}orton Programmer's Guide to the {IBM} {PC}",
    publisher = {Microsoft Press},
    year = 1985,
    ISBN = "0-914845-46-2"
}
    Note:  I have received reports that this book is in its second
    edition, but I have not yet received bibliographical information.

@book{pnrw:guide,
    author = "Peter Norton and Richard Wilton",
    title = "The Programmer's Guide to the {IBM} {PC} and {PS/2}",
    publisher = {Microsoft Press},
    price = "$23"
}

@book{jq:matrix,
    author = "John S. Quarterman",
    title = "The Matrix:  Computer Networks and Conferencing Systems Worldwide",
    publisher = {Digital Press},
    address = {Bedford, MA},
    year = 1990,
    price = "$50",
    order_info =
    {   Digital order number EY-C176E-DP-SS
        Digital Press ISBN 1-55558-033-5
        Prentice-Hall ISBN 0-13-565607-9
    }
}

    Whenever somebody asks a question about networking, somebody invariable
    says "Buy a copy of `The Matrix'.  It's a thorough guide to networks and
    conferencing systems around the world. If you can send mail from here to
    there, this book will show you how.

@book{sr:bmg,
   author = "Steven Rimmer",
   title = "Bit-Mapped Graphics",
   publisher = {Windcrest},
   ISBN = "0-8306-3558-0"
}

   "Covers many of the graphics formats, including code for file viewers.
    It is rather light on TIFF. It also covers how the PC wants graphics data.
    I found this book very useful, even though I only wanted to write graphics
    to an unsupported VGA mode."
                -- John Stanley (stanley@phoenix.com)

@book{sr:dexch
    author = "Steven Ross",
    title = "Data Exchange",
    publisher = {McGraw Hill},
    ISBN = "0-07-053923-5"
}

   "... lighter technically ...
    It covers some info on many word processors and a few spreadsheets."
                -- John Stanley (stanley@phoenix.com)

@book{hs:C
    author = "Herbert Schildt",
    title = "Born to Code in {C}",
    ISBN = "0-07-881468-5"
}
   "contains a chapter on a TSR written entirely in Turbo C.  ... It seems
    to be a very good explanation of TSR's, in only 60 pages with source
    for a complete TSR at that, too!"
                -- Dave Morash (morash@ug.cs.dal.ca)

@book{ms:rsme,
    author = "Martin D. Seyer",
    title = "{RS}-232 Made Easy:  Connecting Computers, Printers,
             Terminals, and Modems",
    publisher = {Prentice-Hall, Inc.}
}
@book{ms:cgrs,
    author = "Martin D. Seyer",
    title = "Complete Guide to {RS}-232 and Parallel Connections",
    publisher = {Prentice-Hall, Inc.}
}

@book{ps:pcmag,
    author = "Paul Somerson",
    title = "{PC} {M}agazine {DOS} Power Tools: Techniques, Tricks
             and Utilities",
    publisher = {Bantam Computer Books and Ziff Communications},
    year = 1988,
    price = "$45",
    pages = 1274,
    remarks = "comes with a disk including many of PC Magazine's programs"
}
   "...an excellent reference manual covering most of the DOS tricks.
    It contains an appendix which lists all the DOS commands as in the
    DOS manual, but gives a much better explanation. ... I learned a lot
    from this book." -- Jack Rupert (2634rupertj@mucsd.bitnet)

@book{as:TC
    author = "Al Stevens",
    title = "Turbo {C}:  Memory-Resident Utilities, Screen {I/O}, and
                Programming Techniques",
    publisher = {Management Information Sources Press},
    address = {P.O. Box 5277, Portland, OR 97208--5277},
    phone = {(503) 282-5215}
}
   "Try to get the 2nd edition if possible.  The code in the book is
    available on disk.  ... well-explained."
                -- Doug Sewell (doug@ysub.ysu.edu)

@book{as:ETC
    author = "Al Stevens",
    title = "Extending Turbo {C} Professional",
    ISBN = "1-55828-013-8",
    year = 1989,
    publisher = {Management Information Sources Press}
    address = {P.O. Box 5277, Portland, OR 97208--5277},
    phone = {(503) 282-5215},
    remarks = "Book can be purchased with disk containing source code."
}

   "[Includes] source code for ``The Poor Man's Overlay Manager''. ...
    Many of the things which I have used from the book have been
    quite helpful and accurate."
            -- Dion Hollenbeck (uunet!megatek!hollen)

@book{rs:graphics,
    author = "Roger T. Stevens",
    title = "Graphics Programming in {C}",
    publisher = {M \& T Books}
}
   "Very good for programming displays and it taught me a few things too.
    The author set up a whole graphics tool, but I found the individual
    pieces much more useful."

@book{rs:fractpas,
    author = "Roger T. Stevens",
    title = "Fractal Programming in {P}ascal"
}

@book{rs:fractC,
    author = "Roger T. Stevens",
    title = "Fractal Programming in {C}"
}

   "One source you may want to consult is a pair of books by Roger T.
    Stevens.  [rs:fractpas and rs:fractC] The books come with a disk of
    software that contains source code in the major flavors of Pascal and C
    (MS and Turbo).  In both books you'll find that one of the first orders of
    business is a detailed description of the contents of *.PCX files."
            -- Ricardo Salvador (A1.RJS@ISUMVS.BITNET)

@book{jw:format1,
    author = "Jeff Walden",
    title = "File Formats for Popular {PC} Software",
    publisher = {Wiley Books},
    ISBN = "0-471-83671-0",
    price = "$25"
}
@book{jw:format2,
    author = "Jeff Walden",
    title = "More File Formats for Popular {PC} Software",
    publisher = {Wiley Books},
    ISBN = "0-471-85077-2",
    price = "$25"
}
   "Should be on every PC programmer's bookshelf."

@book{rw:progvideo,
    author = "Richard Wilton",
    title = "Programmer's Guide to {PC} \& {PS/2} Video Systems",
    publisher = {Microsoft Press},
    year = 1987,
    ISBN = "1-55615-103-9",
    price = "$25"
}
   "A great book."

   "A first-rate practical book."

   "Covers hardware; programming the hardware; text & graphic modes;
    pixel, line, arc, fill routines; text in graphics; font capabilities;
    animation; BIOS summary; screen printing; identifying video subsystems.
    Quite comprehensive (even shows how to true pixel graphics in text
    mode) and readable, with lots of code and optional disk.  Only real
    drawback is an adequate, but not excellent index."

   "Read the one by Wilton first to get a better overall understanding."

   "A good, fairly easy reading book. ...  [It] is in a tutorial type format,
    good for reading and learning."
	-- Edward Kalenda (ekalenda@cup.portal.com)

   "An excellent coverage of video programming on PC's with ready-to-use
    optimized assembly routines which interface to `C'."
        -- Andras Kovacs (andras@alzabo.uucp)

@article{rw:bytevideo,
    author = "Richard Wilton",
    title = "{PS/2} Video Programming",
    journal = {BYTE}, year = 1987, volume = 12, number = 12,
    note = "The 1987 Inside the IBM PCs issue"
}
     "An overview of PC and PS/2 video programming."

@article{rw:bytevga,
    author = "Richard Wilton",
    title = "{VGA} Video Modes",
    journal = {BYTE}, year = 1988, volume = 13, number = 11,
    note = "The 1988 IBM Special Edition"
}
     "Information on non-standard video modes and programming the VGA hard-
     ware.  Code in the article is not complete, but complete code is
     available on BYTEnet (617)861-9764 or BIX."

@article{byte:vga,
    journal = {BYTE}, year = 1990, month = Mar
}
   "Reviews VGA monitors, articles on expanded and extended memory,
    archivers, history of the 8086..."

@book{waite:286,
    author = "The Waite Group",
    title = "Inside the 80286",
    publisher = {Brady Books, Prentice Hall Press}
}

@book{waite:msdos,
    author = "The Waite Group",
    title = "The Waite Group's {MS-DOS} Developer's Guide",
}

   "A good (I mean really good) book on MS-DOS."
	-- John Reynolds (trsvax!reyn)

---
In September 1990, the question was asked, "If you could have only one
DOS programmer's reference..."

   "It's a toss up between Ray Duncan's `Advanced MS-DOS' and the
    `MS-DOS Technical Encyclopedia'."
            -- Larry Jones (sdrc!thor!scjones)

   "Definitely, positively, without a doubt [the MSDOS Encyclopedia].
    Has everything.  A bit scanty on DOS 4.0 and above, though."
            -- Joel Spolsky (spolsky@cs.yale.edu)