Specifications.
[pintos-anon] / specs / freevga / vga / vgafunc.htm
1 <HTML>
2 <HEAD>
3    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
4    <META NAME="Author" CONTENT="Joshua Neal">
5    <META NAME="Description" CONTENT="Pure VGA/SVGA hardware programming (registers, identification, and otherlow-level stuff.)">
6    <META NAME="KeyWords" CONTENT="VGA SVGA hardware video programming">
7    <TITLE>VGA/SVGA Video Programming--VGA Functional Index</TITLE>
8 </HEAD>
9 <BODY>
10
11 <CENTER><A HREF="../home.htm">Home</A> <A HREF="#register">Register</A>
12 <A HREF="#memory">Memory</A> <A HREF="#sequencer">Sequencing</A> <A HREF="#cursor">Cursor</A>
13 <A HREF="#attribute">Attribute</A> <A HREF="#DAC">DAC</A> <A HREF="#display">Display</A>
14 <A HREF="#misc">Misc</A> <A HREF="vga.htm#index">Back</A>&nbsp;
15 <HR WIDTH="100%"><B>Hardware Level VGA and SVGA Video Programming Information
16 Page</B></CENTER>
17
18 <CENTER>VGA Functional Index&nbsp;
19 <HR WIDTH="100%"></CENTER>
20
21
22 <P><A NAME="register"></A><B>Register Access Functions</B>
23 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields control the
24 acessability/inaccessability of the VGA registers. These registers are
25 used for compatibiltiy with older programs that may attempt to program
26 the VGA in a fashion suited only to an EGA, CGA, or monochrome card.
27 <UL>
28 <LI>
29 CRTC Registers Protect Enable -- <A HREF="crtcreg.htm#11">Vertical Retrace
30 End Register</A></LI>
31
32 <LI>
33 Enable Vertical Retrace Access -- <A HREF="crtcreg.htm#03">End Horizontal
34 Blanking Register</A></LI>
35
36 <LI>
37 Input/Output Address Select -- <A HREF="extreg.htm#3CCR3C2W">Miscellaneous
38 Output Register</A></LI>
39 </UL>
40 <A NAME="memory"></A><B>Display Memory Access Functions</B>
41 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields control the
42 way the video RAM is mapped into the host CPU's address space and how memory
43 reads/writes affect the display memory.
44 <UL>
45 <LI>
46 Bit Mask -- <A HREF="graphreg.htm#08">Bit Mask Register</A></LI>
47
48 <LI>
49 Chain 4 Enable -- <A HREF="seqreg.htm#04">Sequencer Memory Mode Register</A></LI>
50
51 <LI>
52 Chain Odd/Even Enable -- <A HREF="graphreg.htm#06">Miscellaneous Graphics
53 Register</A></LI>
54
55 <LI>
56 Color Compare -- <A HREF="graphreg.htm#02">Color Compare Register</A></LI>
57
58 <LI>
59 Color Don't Care -- <A HREF="graphreg.htm#07">Color Don't Care Register</A></LI>
60
61 <LI>
62 Enable Set/Reset -- <A HREF="graphreg.htm#01">Enable Set/Reset Register</A></LI>
63
64 <LI>
65 Extended Memory -- <A HREF="seqreg.htm#04">Sequencer Memory Mode Register</A></LI>
66
67 <LI>
68 Host Odd/Even Memory Read Addressing Enable -- <A HREF="graphreg.htm#05">Graphics
69 Mode Register</A></LI>
70
71 <LI>
72 Host Odd/Even Memory Write Addressing Enable -- <A HREF="seqreg.htm#04">Sequencer
73 Memory Mode Register</A></LI>
74
75 <LI>
76 Logical Operation -- <A HREF="graphreg.htm#03">Data Rotate Register</A></LI>
77
78 <LI>
79 Memory Map Select -- <A HREF="graphreg.htm#06">Miscellaneous Graphics Register</A></LI>
80
81 <LI>
82 Memory Plane Write Enable -- <A HREF="seqreg.htm#02">Map Mask Register</A></LI>
83
84 <LI>
85 Odd/Even Page Select -- <A HREF="extreg.htm#3CCR3C2W">Miscellaneous Output
86 Register</A></LI>
87
88 <LI>
89 RAM Enable -- <A HREF="extreg.htm#3CCR3C2W">Miscellaneous Output Register</A></LI>
90
91 <LI>
92 Read Map Select -- <A HREF="graphreg.htm#04">Read Map Select Register</A></LI>
93
94 <LI>
95 Read Mode - <A HREF="graphreg.htm#05">Graphics Mode Register</A></LI>
96
97 <LI>
98 Rotate Count -- <A HREF="graphreg.htm#03">Data Rotate Register</A></LI>
99
100 <LI>
101 Set/Reset -- <A HREF="graphreg.htm#00">Set/Reset Register</A></LI>
102
103 <LI>
104 Write Mode -- <A HREF="graphreg.htm#05">Graphics Mode Register</A></LI>
105 </UL>
106 <A NAME="sequencer"></A><B>Display Sequencing Functions</B>
107 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields affect the
108 way the video memory is serialized for display.
109 <UL>
110 <LI>
111 256-Color Shift Mode -- <A HREF="graphreg.htm#05">Graphics Mode Register</A></LI>
112
113 <LI>
114 9/8 Dot Mode -- <A HREF="seqreg.htm#01">Clocking Mode Register</A></LI>
115
116 <LI>
117 Address Wrap Select -- <A HREF="crtcreg.htm#17">CRTC Mode Control Register</A></LI>
118
119 <LI>
120 Alphanumeric Mode Disable -- <A HREF="graphreg.htm#06">Miscellaneous Graphics
121 Register</A></LI>
122
123 <LI>
124 Asynchronous Reset -- <A HREF="seqreg.htm#00">Reset Register</A></LI>
125
126 <LI>
127 Byte Panning -- <A HREF="crtcreg.htm#08">Preset Row Scan Register</A></LI>
128
129 <LI>
130 Character Set A Select -- <A HREF="seqreg.htm#03">Character Map Select
131 Register</A></LI>
132
133 <LI>
134 Character Set B Select -- <A HREF="seqreg.htm#03">Character Map Select
135 Register</A></LI>
136
137 <LI>
138 Divide Memory Address Clock by 4 -- <A HREF="crtcreg.htm#14">Underline
139 Location Register</A></LI>
140
141 <LI>
142 Double-Word Addressing -- <A HREF="crtcreg.htm#14">Underline Location Register</A></LI>
143
144 <LI>
145 Pixel Shift Count -- <A HREF="attrreg.htm#13">Horizontal Pixel Panning
146 Register</A></LI>
147
148 <LI>
149 Line Compare -- bit 9: <A HREF="crtcreg.htm#09">Maximum Scan Line Register</A>,
150 bit 8: <A HREF="crtcreg.htm#07">Overflow Register</A>, bits 7-0: <A HREF="crtcreg.htm#18">Line
151 Compare Register</A></LI>
152
153 <LI>
154 Line Graphics Enable -- <A HREF="attrreg.htm#10">Attribute Mode Control
155 Register</A></LI>
156
157 <LI>
158 Map Display Address 13 -- <A HREF="crtcreg.htm#17">CRTC Mode Control Register</A></LI>
159
160 <LI>
161 Map Display Address 14 -- <A HREF="crtcreg.htm#17">CRTC Mode Control Register</A></LI>
162
163 <LI>
164 Maximum Scan Line -- <A HREF="crtcreg.htm#09">Maximum Scan Line Register</A></LI>
165
166 <LI>
167 Offset -- <A HREF="crtcreg.htm#13">Offset Register</A></LI>
168
169 <LI>
170 Pixel Panning Mode -- <A HREF="attrreg.htm#10">Attribute Mode Control Register</A></LI>
171
172 <LI>
173 Preset Row Scan -- <A HREF="crtcreg.htm#08">Preset Row Scan Register</A></LI>
174
175 <LI>
176 Scan Doubling -- <A HREF="crtcreg.htm#09">Maximum Scan Line Register</A></LI>
177
178 <LI>
179 Screen Disable -- <A HREF="seqreg.htm#01">Clocking Mode Register</A></LI>
180
181 <LI>
182 Shift Four Enable -- <A HREF="seqreg.htm#01">Clocking Mode Register</A></LI>
183
184 <LI>
185 Shift/Load Rate -- <A HREF="seqreg.htm#01">Clocking Mode Register</A></LI>
186
187 <LI>
188 Shift Register Interleave Mode -- <A HREF="graphreg.htm#05">Graphics Mode
189 Register</A></LI>
190
191 <LI>
192 Start Address -- bits 15-8: <A HREF="crtcreg.htm#0C">Start Address High
193 Register</A>, bits 7-0: <A HREF="crtcreg.htm#0D">Start Address Low Register</A></LI>
194
195 <LI>
196 Sycnchronous Reset -- <A HREF="seqreg.htm#00">Reset Register</A></LI>
197
198 <LI>
199 Word/Byte Mode Select -- <A HREF="crtcreg.htm#17">CRTC Mode Control Register</A></LI>
200 </UL>
201 <A NAME="cursor"></A><B>Cursor Functions</B>
202 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields affect the
203 operation of the cursor displayed while the VGA hardware is in text mode.
204 <UL>
205 <LI>
206 Cursor Disable -- <A HREF="crtcreg.htm#0A">Cursor Start Reguster</A></LI>
207
208 <LI>
209 Cursor Location -- bits 15-8: <A HREF="crtcreg.htm#0E">Cursor Location
210 High Register</A>, bits 7-0: <A HREF="crtcreg.htm#0F">Cursor Location Low
211 Register</A></LI>
212
213 <LI>
214 Cursor Scan Line End -- <A HREF="crtcreg.htm#0B">Cursor End Register</A></LI>
215
216 <LI>
217 Cursor Scan Line Start -- <A HREF="crtcreg.htm#0A">Cursor Start Reguster</A></LI>
218
219 <LI>
220 Cursor Skew -- <A HREF="crtcreg.htm#0B">Cursor End Register</A></LI>
221 </UL>
222 <A NAME="attribute"></A><B>Attribute Functions</B>
223 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields control the
224 way the video data is submitted to the RAMDAC, providing color/blinking
225 capability in text mode and facilitating the mapping of colors in graphics
226 mode.
227 <UL>
228 <LI>
229 8-bit Color Enable -- <A HREF="attrreg.htm#10">Attribute Mode Control Register</A></LI>
230
231 <LI>
232 Attribute Address -- <A HREF="attrreg.htm#3C0">Attribute Address Register</A></LI>
233
234 <LI>
235 Attribute Controller Graphics Enable -- <A HREF="attrreg.htm#10">Attribute
236 Mode Control Register</A></LI>
237
238 <LI>
239 Blink Enable -- <A HREF="attrreg.htm#10">Attribute Mode Control Register</A></LI>
240
241 <LI>
242 Color Plane Enable -- <A HREF="attrreg.htm#12">Color Plane Enable Register</A></LI>
243
244 <LI>
245 Color Select 5-4 -- <A HREF="attrreg.htm#14">Color Select Register</A></LI>
246
247 <LI>
248 Color Select 7-6 -- <A HREF="attrreg.htm#14">Color Select Register</A></LI>
249
250 <LI>
251 Internal Palette Index -- <A HREF="attrreg.htm#000F">Palette Registers</A></LI>
252
253 <LI>
254 Monochrome Emulation -- <A HREF="attrreg.htm#10">Attribute Mode Control
255 Register</A></LI>
256
257 <LI>
258 Overscan Palette Index -- <A HREF="attrreg.htm#11">Overscan Color Register</A></LI>
259
260 <LI>
261 Underline Location -- <A HREF="crtcreg.htm#14">Underline Location Register</A></LI>
262
263 <LI>
264 Palette Address Source -- <A HREF="attrreg.htm#3C0">Attribute Address Register</A></LI>
265
266 <LI>
267 Palette Bits 5-4 Select -- <A HREF="attrreg.htm#10">Attribute Mode Control
268 Register</A></LI>
269 </UL>
270 <A NAME="DAC"></A><B>DAC Functions</B>
271 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields allow control
272 of the VGA's 256-color palette that is part of the RAMDAC.
273 <UL>
274 <LI>
275 DAC Write Address -- <A HREF="colorreg.htm#3C8">DAC Address Write Mode
276 Register</A></LI>
277
278 <LI>
279 DAC Read Address -- <A HREF="colorreg.htm#3C7W">DAC Address Read Mode Register</A></LI>
280
281 <LI>
282 DAC Data -- <A HREF="colorreg.htm#3C9">DAC Data Register</A></LI>
283
284 <LI>
285 DAC State -- <A HREF="colorreg.htm#3C7R">DAC State Register</A></LI>
286 </UL>
287 <A NAME="display"></A><B>Display Generation Functions</B>
288 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields control the
289 formatting and timing of the VGA's video signal output.
290 <UL>
291 <LI>
292 Clock Select -- <A HREF="extreg.htm#3CCR3C2W">Miscellaneous Output Register</A></LI>
293
294 <LI>
295 Display Disabled -- <A HREF="extreg.htm#3xAR">Input Status #1 Register</A></LI>
296
297 <LI>
298 Display Enable Skew -- <A HREF="crtcreg.htm#03">End Horizontal Blanking
299 Register</A></LI>
300
301 <LI>
302 Divide Scan Line Clock by 2 -- <A HREF="crtcreg.htm#17">CRTC Mode Control
303 Register</A></LI>
304
305 <LI>
306 Dot Clock Rate -- <A HREF="seqreg.htm#01">Clocking Mode Register</A></LI>
307
308 <LI>
309 End Horizontal Display -- <A HREF="crtcreg.htm#01">End Horizontal Display
310 Register</A></LI>
311
312 <LI>
313 End Horizontal Blanking -- bit 5: <A HREF="crtcreg.htm#05">End Horizontal
314 Retrace Register</A>, bits 4-0: <A HREF="crtcreg.htm#03">End Horizontal
315 Blanking Register</A>,</LI>
316
317 <LI>
318 End Horizontal Retrace -- <A HREF="crtcreg.htm#05">End Horizontal Retrace
319 Register</A></LI>
320
321 <LI>
322 End Vertical Blanking -- <A HREF="crtcreg.htm#16">End Vertical Blanking
323 Register</A></LI>
324
325 <LI>
326 Horizontal Retrace Skew -- <A HREF="crtcreg.htm#05">End Horizontal Retrace
327 Register</A></LI>
328
329 <LI>
330 Horizontal Sync Polarity -- <A HREF="extreg.htm#3CCR3C2W">Miscellaneous
331 Output Register</A></LI>
332
333 <LI>
334 Horizontal Total -- <A HREF="crtcreg.htm#00">Horizontal Total Register</A></LI>
335
336 <LI>
337 Memory Refresh Bandwidth -- <A HREF="crtcreg.htm#11">Vertical Retrace End
338 Register</A></LI>
339
340 <LI>
341 Start Horizontal Blanking -- <A HREF="crtcreg.htm#02">Start Horizontal
342 Blanking Register</A></LI>
343
344 <LI>
345 Start Horizontal Retrace -- <A HREF="crtcreg.htm#04">Start Horizontal Retrace
346 Register</A></LI>
347
348 <LI>
349 Start Vertical Blanking -- bit 9: <A HREF="crtcreg.htm#09">Maximum Scan
350 Line Register</A>, bit 8: <A HREF="crtcreg.htm#07">Overflow Register</A>,
351 bits 7-0: <A HREF="crtcreg.htm#15">Start Vertical Blanking Register</A></LI>
352
353 <LI>
354 Sync Enable -- <A HREF="crtcreg.htm#17">CRTC Mode Control Register</A></LI>
355
356 <LI>
357 Vertical Display End -- bits 9-8: <A HREF="crtcreg.htm#07">Overflow Register</A>,
358 bits 7-0: <A HREF="crtcreg.htm#12">Vertical Display End Register</A></LI>
359
360 <LI>
361 Vertical Retrace End -- <A HREF="crtcreg.htm#11">Vertical Retrace End Register</A></LI>
362
363 <LI>
364 Vertical Retrace -- <A HREF="extreg.htm#3xAR">Input Status #1 Register</A></LI>
365
366 <LI>
367 Vertical Retrace Start -- bits 9-8: <A HREF="crtcreg.htm#07">Overflow Register</A>,
368 bits 7-0: <A HREF="crtcreg.htm#10">Vertical Retrace Start Register</A></LI>
369
370 <LI>
371 Vertical Sync Polarity -- <A HREF="extreg.htm#3CCR3C2W">Miscellaneous Output
372 Register</A></LI>
373
374 <LI>
375 Vertical Total -- bits 9-8: <A HREF="crtcreg.htm#07">Overflow Register</A>,
376 bits 7-0: <A HREF="crtcreg.htm#06">Vertical Total Register</A></LI>
377 </UL>
378 <A NAME="misc"></A><B>Miscellaneous Functions</B>
379 <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; These fields are used to
380 detect the state of possible VGA hardware such as configuration switches/jumpers
381 and feature connector inputs.
382 <UL>
383 <LI>
384 Feature Control Bit 0 -- <A HREF="extreg.htm#3CAR3xAW">Feature Control
385 Register</A></LI>
386
387 <LI>
388 Feature Control Bit 1 -- <A HREF="extreg.htm#3CAR3xAW">Feature Control
389 Register</A></LI>
390
391 <LI>
392 Switch Sense -- <A HREF="extreg.htm#3C2R">Input Status #0 Register</A></LI>
393 </UL>
394 Notice: All trademarks used or referred to on this page are the property
395 of their respective owners.
396 <BR>All pages are Copyright &copy; 1997, 1998, J. D. Neal, except where
397 noted. Permission for utilization and distribution is subject to the terms
398 of the <A HREF="license.htm">FreeVGA Project Copyright License</A>.
399 <BR>&nbsp;
400 <BR>&nbsp;
401 </BODY>
402 </HTML>