Introduction. This is intended as a collection of documentation about all the various display adapters for the IBM PC series (and relatives). Terminology/style: The BIOS calls are mostly taken directly from Ralf's interrupt list and tends to follow its style and structure. The register descriptions are sorted by the register number. All register addresses, data values et cetera are given in hexadecimal. 3d4h means 3D4h when in color mode and 3B4h when in monochrome mode. 3CEh index 3 means register 3CEh is set to 3 and register 3CFh is the data port. See notes on register 3C0h under VGA registers. On some cards write operations can be done with a single OUTW instruction. This may fail on some cards or machines. ATI cards require the index to be updated before each access to the dataport. (R) means the register is Read Only. (W) means the register is Write Only. (R/W) means the register is both Readable and Writable. (r/W) means the register is Write Only on EGA cards and Read/Writable on VGA cards. Examples are in Turbo Pascal for readability (your mileage may vary, I don't discuss politics, choice of computer, editor, keyboard, programming language or other religious matters on the net :-) ). A short translation of terms: Pascal: C: Assembler: Description: x:byte; unsigned char x; x DB ? 8 bit unsigned byte y:word; unsigned int y; y DW ? 16 bit unsigned word. z:integer; int z; z DW ? 16 bit signed word. w:longint; long w; w DD ? 32 bit signed doubleword s:string[20]; char s[21]; x DB 20 dup(?) a 20 character string $ABCD 0xABCD 0ABCDh The value 43981 (ABCD hex) x:=port[$3CC] x=inp(0x3CC) MOV DX,03CCh Read an 8bit value from IN AL,DX I/O port $3CC. y:=portw[$3CE] y=inpw(0x3CE) MOV DX,03CEh Read an 16bit value from IN AX,DX I/O ports $3CE and $3CF. port[$3C2]:=x outp(0x3C2,x) MOV DX,03C2h Write an 8bit value to OUT DX,AL I/O port $3C2. portw[$3CE]:=y outpw(0x3CE,y) MOV DX,03CEh Write an 16bit value to OUT DX,AX I/O ports $3CE and $3CF. {Comment} /* comment */ ;comment Comments. 'string' "string" DB "string" Text string procedure x; void x(void) x PROC A procedure/function var x:integer; { ;Alloc x on stack with no parameters begin int x; _code_ a local variable _code_ _code_ ;reset stack and main body. end; } RET function y: int y(void) Well you A function returning integer; { figure it out! an integer. begin y:=123; return(123) end; } The examples use a number of simple rutines: procedure vio(ax:word); {Calls interrupt 10h with register AX=parameter ax other registers can be set in the rp structure. rp.ax is set to the return value in the AX register} function inp(reg:word):byte; {returns a byte from I/O port REG.} procedure outp(reg,val:word); {writes the byte VAL to I/O port REG} function rdinx(pt,inx:word):word; {read register PT index INX} procedure wrinx(pt,inx,val:word); {write VAL to register PT index INX} procedure modinx(pt,inx,mask,nwv:word); {In register PT index INX change the bits indicated by MASK to the ones in NWV keeping the other bits unchanged). function tstrg(pt,msk:word):boolean; {Returns true if the bits specified in MSK are read/writable in register PT} function testinx(pt,rg:word):boolean; {Returns true if all 8 bits of register PT index RG are read/writable} function testinx2(pt,rg,msk:word):boolean; {Returns true if the bits specified in MSK are read/writable in register PT index RG} procedure dactopel; {Forces the DAC back to PEL (normal) mode} procedure dactocomm; {Enter command mode of HiColor DACs} References: Richard F. Ferraro's Programmer's guide to the EGA and VGA cards 2nd ed. Addison-Wesley 1990. ISBN 0-201-57025-4. George Sutty and Steve Blair's Advanced Programmers Guide to Super VGAs. Brady Books 1990. ISBN 0-13-010455-8. John Mueller and Wallace Wang's The Ultimate DOS Programmer's Manual. Windcrest/McGraw-Hill 1990. ISBN 0-8306-3434-3. Ralf Brown's interrupt list version 33. (Simtel: info/inter33a.zip - info/inter33c.zip) John Bridge's VGAKIT52. (Simtel: vga/vgakit52.zip) Fractint v17.2 source (primarily video.asm). (Simtel: graphics/frasr172.zip) Configuration files and drivers from amongst others: CSHOW: (Simtel: graphics/cshw850a.zip) VPIC: (Simtel: gif/vpic51.zip) VUIMAGE: (Simtel: gif/vuimg330.zip) SVGA: (Simtel: gif/svga111.zip) PCVISION plus Frame Grabber User's Manual. Enhanced Graphics Adapter Reference Manual from HP. Data Sheet for the Yamaha 6388 VPDC. Commodore Advanced Graphics Adapter (AGA) manual. Chips and Technologies Inc datasheets for: 82c455A, 82c456, 82c457, 82c480, 65520/530. Truevision Targa+ Hardware Technical Reference Manual. The following have contributed information: Darren Senn Tomi H Engdahl Jori Hamalainen H.R.R van Roosmalen and E. Zoer, Delft University of Technology, The Netherlands Eric ?? Frank Klemm Michael Schindler Steven Martin Kendall Bennett Leonardo Loureiro Disclaimer: All information herein is presented as is and without warranty. Use at your own risk. IBM PC, PC/XT, PC/AT, PCjr, PS/2, Micro Channel, Personal System/2,Enhanced Graphics Adapter, Color Graphics Adapter, Video Graphics Adapter, IBM Color Display, IBM Monochrome Display and 8514/A are trademarks of International Business Machines Corporation. MS-DOS is a trademark of Microsoft, Incorporated. Hercules is a trademark of Hercules Computer Technology, Inc. Multisync is a trademark of Nippon Electric Company (NEC). Brooktree and RAMDAC are trademarks of Brooktree Corporation. SMARTMAP is a trademark of Chips and Technologies, Incorporated. TARGA is a registered trademark of Truevision, Inc. All other product names are copyright and registered trademarks/tradenames of their respective owners.