Home News Mirrors Preface Background VGA SVGA Tricks Links Disclaimer Products Feedback Back Hardware Level VGA and SVGA Video Programming Information Page

Home

7 6 5 4 3 2 1 0 F R E E V G A

This page is home to the FreeVGA Project -- dedicated to providing a totally FREE source of information about video hardware. Additional goals/information are located here.

"Keep on rocking in the free world." - Neil Young

Latest News

08/01/1998 -- More information is now up, including a large portion of the "standard" VGA reference. Some other minor changes have been made to other information. Expect more updates in the not too far future.

06/20/1998 -- The work contiues. Added three new mirrors. Some of the information that was located in the VGA reference, but really applies to video programming in general has been moved to the new Background Information (formerly Introduction) section of this page, and has been released. Also, a glossary has been added defining terms related to video programming, but is not very comprehensive at the moment, although this should improve over time. Many minor corrections have been made to the released material after being pointed out by the insightful people reading the information. Thank you!

06/08/1998 -- The mirror list has been updated with the new entries. Special thanks goes out to all those who have donated their personal resources to advance the project's goals. Also, the first section of *real* information is online, the low-level programming introduction. This section has been relatively stable for quite some time, and seems to be releasable. It is my goal to release the information after it stabilizes, and has been verified for accuracy.

06/04/1998 -- If you are looking for the current work-in-progress, and have been given the passwords for the archive for review purposes, it can be downloaded here. For those with current problems/questions that this page addresses, please feel free to use the Feedback Form to contact the author. If a link is marked with (WIP), it is not posted online and at this time is available only for review, upon request, and under specific limitations.

Mirror Sites

At this time, the project is experimenting with the feasibility of maintaining mirror sites to make this information more widely available. The following mirror sites are provided for your convenience. If you are interested in hosting a mirror site of this information, please contact the author for more information. If you are experiencing problems with any of these mirrors please use the Feedback Form to contact the author, as it is likely my fault that the problem has arisen.

Introduction to Low-level Programming -- Answers general questions about the topic. (Released 6/08/1998)

Overview of Video Hardware Functionality -- Describes the job of the video hardware and what components it uses to perform that task. (Released 6/15/1998)

Video Timing Information -- Gives information about video timing that is useful for video programmers. (Released 6/15/98)

Video Programming Glossary -- Defines terms that are related to video programming. (Added 6/15/1998)

VGA Chipset Reference -- Documentation of the "Standard" VGA implementation. (Released 8/01/1998)

SVGA Chipset Reference -- Documentation of specific VGA/SVGA hardware implementations. (WIP)

Tricks and Techniques

This section contains useful information on how to utilize the VGA/SVGA hardware to optimize specific tasks or implement visual effects. Many of these techniques have been utilized by game and demo programmers alike to push the envelope of the hardware's capacity.

Tricks and Techniques -- Details on using the hardware to your advantage. (WIP)

Online Information

The COMP.SYS.IBM.PC.HARDWARE.VIDEO Frequently Asked Questions (FAQ) document, although not programming oriented does contain much useful information about video hardware. The site also includes links to nearly every vendor of video cards and monitors, as well as links to pages covering monitor specifications. If you are looking for video hardware related information not covered by the FreeVGA Project's goals, you will likely find it or a link to it here.



Finn Thøgersen's VGADOC & WHATVGA Homepage -- An excellent collection of information for programming VGA and SVGA.



Boone's Programming the VGA Registers -- Contains a very sketchy "Documentation Over the I/O Registers for Standard VGA Cards" by "Shaggy of The Yellow One." It is free and distributable over the "Feel free to spread this to whoever wants it....." licensing agreement.



Andrew Scott's VGA Programmers Master Reference Manual (click here to download from ftp.cdrom.com) -- A dated ('91) document that is interesting if only because it attempts to document the VGA hardware (actually the Trident TVGA8900 hardware) in a form useful for "writing an applications specific BIOS." Begins with a very general description the topic (a wordy definition of computation in general) and ends with detailed register descriptions. Unfortunately, it lacks much material between these areas. Worse, far from being a free resource, it requires shareware registration fees that must be sent to the U.K. by means of a check drawn from a U.K. bank only!

(click here to download from ftp.cdrom.com) -- A dated ('91) document that is interesting if only because it attempts to document the VGA hardware (actually the Trident TVGA8900 hardware) in a form useful for "writing an applications specific BIOS." Begins with a very general description the topic (a wordy definition of computation in general) and ends with detailed register descriptions. Unfortunately, it lacks much material between these areas. Worse, far from being a free resource, it requires shareware registration fees that must be sent to the U.K. by means of a check drawn from a U.K. bank only!

IBM's RS/6000 CHRP I/O Device Reference Appendix A: VGA Programming Model -- A good VGA reference from the makers of the IBM VGA. Better than most on-line references as it contains programming information in addition to a register description of the hardware; however it is still vague in many areas. Especially interesting as it begins with an acknowledgment of the many "clones" of the VGA hardware.

Appendix A: VGA Programming Model -- A good VGA reference from the makers of the IBM VGA. Better than most on-line references as it contains programming information in addition to a register description of the hardware; however it is still vague in many areas. Especially interesting as it begins with an acknowledgment of the many "clones" of the VGA hardware.

Some brief VGA register info is available from the Chip Directory, also mirrored at other sites (see Chip Directory home page).



Eric S. Raymond's The XFree86 Video Timings HOWTO -- explains video mode and timing information used in configuring XFree86 to support a given monitor, intended to be used by the end user. Much of the information is not sepcific to XFree86, and can be used by a programmer as an example of how a low-level video routine can allow the end-users to setup video modes that pertain to their monitors, as well as being useful to an end-user of such a program attempting to configure such a routine to work with their monitors.



Tomi Engdahl's electronics info page has some information about video and vga timings, as well as a section on VGA to TV converters and homemade circuitry. The VGA to TV converter page contans much information that pertains to driving custom TV and monitors with a VGA or SVGA card that doesn't have the capability built-in.

Offline Information

Richard F. Ferraro's Programmer's Guide to the EGA, VGA, and Super VGA Cards, Third Edition -- A good text, one of the few good books on a subject as broad and as complicated as low-level I/O.

-- A good text, one of the few good books on a subject as broad and as complicated as low-level I/O.

Frank van Gilluwe's The Undocumented PC, Second Edition -- A Programmer's Guide to I/O, CPUs and Fixed Memory Areas -- An excellent book, which is the likely the most complete PC technical reference ever written, and includes 100+ pages of video programming information, although very little VGA register information.

-- An excellent book, which is the likely the most complete PC technical reference ever written, and includes 100+ pages of video programming information, although very little VGA register information.

Bertelsons, Rasch & Hoffman's PC Underground: Unconventional Programming Topics -- I bought this book on markdown, due to it having some VGA information in it. I was surprised to find that not only did it have a register description, but it also described some possible effects that can be done with that register.

Miscellaneous Information (Information not specific to video hardware, but useful to video programmers.)

Norman Walsh's The comp.fonts FAQ -- An excellent resource on fonts, typefaces, and such. Particularly helpful is the section on intellectual property protection for fonts, as the copyright legality of fonts and typefaces is somewhat confusing. Note -- Norman Walsh has ceased maintaining the FAQ, however, this link will remain until a new version of the FAQ is produced.

Product Recommendations -- Listing of products that can be beneficial to the target audience of this site.

Danger : Monitors are designed to operate within certain frequency ranges, or for fixed frequency monitors at certain frequencies. Driving a monitor at a frequency that it is not designed for is not recommended and may cause damage to the monitor's circuitry which can result in a fire and safety risk . It is wise to know and understand the specifications of the monitor(s) that you will be driving in order to prevent damage. Consult the manufacturers documentation for the monitor for the information, or if not available, contact the manufacturer directly. If the monitor makes unusual noises, or the internal temperature exceeds the rated temperature of its components, the monitor is likely to experience failure. This failure may not be immediate, but is under most circumstances inevitable. Monitor failures can be violent in nature, and can explode and produce shrapnel, as well as overheat and catch fire . In no circumstance should one leave a monitor unattended in an uncertain state. Furthermore, exceeding the rated maximum frequencies of a monitor may cause the phosphors to age prematurely, as well as increase the amount of harmful radiation projected towards the viewer beyond the specified maximums .

Monitors are designed to operate within certain frequency ranges, or for fixed frequency monitors at certain frequencies. It is wise to know and understand the specifications of the monitor(s) that you will be driving in order to prevent damage. Consult the manufacturers documentation for the monitor for the information, or if not available, contact the manufacturer directly. If the monitor makes unusual noises, or the internal temperature exceeds the rated temperature of its components, the monitor is likely to experience failure. This failure may not be immediate, but is under most circumstances inevitable. In no circumstance should one leave a monitor unattended in an uncertain state. Furthermore, exceeding the rated maximum frequencies of a monitor may cause the phosphors to age prematurely, as well as Warning : Clock chips and RAMDACs as well as other components of the video card are designed with a maximum frequency. Programming these chips to operate at a frequency greater than they were designed for causes the chips to run hotter than they were designed to operate, and may cause the component to fail . It is wise to know and understand the maximum operating frequency of the components of any video subsystem you will be programming. Do not assume that the component is safe to operate at a particular frequency because it can be programmed to operate at that frequency. The rated frequencies are rated and verified according to batch yield. As clock frequencies increase, the failure rate of the chips during manufacturing testing increases. It is impossible to predict the actual point at which a given semiconductor will fail, thus manufacturers monitor the failure rate statistically to determine the frequency that gives an acceptable batch yield. These failures are typically unobservable and require a method of testing every gate on the chip, as many failures may only be observable under very specific circumstances, typically resulting in intermittent failures, although complete "meltdown" due to a newly formed short is also possible. If they occur, the entire semiconductor must be rejected due to these failures being irrepairable. As you exceed the rated frequency you are taking a semiconductor that has passed a thourough test at its rated frequency and entering the realm of statistical probability. Attempting to find the maximum frequency is impossible, as by the time a failure is noticable the semiconductor has already been permanently damaged. Cooling the external package by using a heat sink and/or fan may increase the frequency at which a semiconductor can operate; however, there is still no way to determine the frequency at which a specific semiconductor will fail as it can only be done statistically and practically undetectable without being able to determine the proper operation of every gate on the semiconductor. Semiconductors such as fast CPU's are rated with the required heat sink and/or cooling fan in place. Aftermarket cooling devices are sold as "performance coolers" due to the inability to determine the statistical likelyhood of failure and the inability of the end user to simply reject failed semiconductors. Under no circumstances should a programmer develop software that overclocks an end-user's hardware without the end user being warned of the statistical likelyhood of failure. Making any claims about the safety of the software's operation can leave the programmer with legal liability that cannot be excluded by disclaimer.

Clock chips and RAMDACs as well as other components of the video card are designed with a maximum frequency. It is wise to know and understand the maximum operating frequency of the components of any video subsystem you will be programming. Do not assume that the component is safe to operate at a particular frequency because it can be programmed to operate at that frequency. The rated frequencies are rated and verified according to batch yield. As clock frequencies increase, the failure rate of the chips during manufacturing testing increases. It is impossible to predict the actual point at which a given semiconductor will fail, thus manufacturers monitor the failure rate statistically to determine the frequency that gives an acceptable batch yield. If they occur, the entire semiconductor must be rejected due to these failures being irrepairable. As you exceed the rated frequency you are taking a semiconductor that has passed a thourough test at its rated frequency and entering the realm of statistical probability. Attempting to find the maximum frequency is impossible, as by the time a failure is noticable the semiconductor has already been permanently damaged. Cooling the external package by using a heat sink and/or fan may increase the frequency at which a semiconductor can operate; however, there is still no way to determine the frequency at which a specific semiconductor will fail as it can only be done statistically and practically undetectable without being able to determine the proper operation of every gate on the semiconductor. Semiconductors such as fast CPU's are rated with the required heat sink and/or cooling fan in place. Aftermarket cooling devices are sold as "performance coolers" due to the inability to determine the statistical likelyhood of failure and the inability of the end user to simply reject failed semiconductors. Making any claims about the safety of the software's operation can leave the programmer with legal liability that cannot be excluded by disclaimer. Disclaimer : The author presents this information as-is without any warranty, including suitability for intended purpose. The author is not responsible for damages resulting by the use of the information, incidental or otherwise. By utilizing this information, you as the programmer take full liability for any damages caused by your use of this information. If you are not satisfied with these terms, then your only recourse is to not use this information. While every reasonable effort is made to ensure that this information is correct, the possibility exists for error and is not guaranteed for accuracy, and disclaims liability for any changes, errors or omissions and is not responsible for any damages that may arise from the use or misuse of this information. License to use this information is only granted where this disclaimer applies in whole.

Notice: All trademarks used or referred to on this page are the property of their respective owners.

All pages are Copyright © 1997, 1998, J. D. Neal, except where noted. Permission for utilization and distribution is subject to the terms of the FreeVGA Project Copyright License.