provided code
This commit is contained in:
282
specs/freevga/vga/extreg.htm
Normal file
282
specs/freevga/vga/extreg.htm
Normal file
@@ -0,0 +1,282 @@
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
|
||||
<META NAME="Author" CONTENT="Joshua Neal">
|
||||
<META NAME="Description" CONTENT="Pure VGA/SVGA hardware programming (registers, identification, and other low-level stuff.)">
|
||||
<META NAME="KeyWords" CONTENT="VGA SVGA hardware video programming">
|
||||
<TITLE>VGA/SVGA Video Programming--External Regsters</TITLE>
|
||||
</HEAD>
|
||||
<BODY>
|
||||
|
||||
<UL>
|
||||
<CENTER><A HREF="../home.htm">Home</A> <A HREF="vga.htm#register">Back</A>
|
||||
<HR WIDTH="100%"><B>Hardware Level VGA and SVGA Video Programming Information
|
||||
Page</B></CENTER>
|
||||
|
||||
<CENTER>External Regsters</CENTER>
|
||||
|
||||
<CENTER>
|
||||
<HR WIDTH="100%"></CENTER>
|
||||
</UL>
|
||||
The External Registers (sometimes
|
||||
called the General Registers) each have their own unique I/O location in
|
||||
the VGA, although sometimes the Read Port differs from the Write port,
|
||||
and some are Read-only.. See the <A HREF="vgareg.htm">Accessing the VGA
|
||||
Registers</A> section for more detals.
|
||||
<UL>
|
||||
<LI>
|
||||
Port 3CCh/3C2h -- <I>Miscellaneous Output Register</I></LI>
|
||||
|
||||
<LI>
|
||||
Port 3CAh/3xAh -- <I>Feature Control Register</I></LI>
|
||||
|
||||
<LI>
|
||||
Port 3C2h -- <I>Input Status #0 Register</I></LI>
|
||||
|
||||
<LI>
|
||||
Port 3xAh -- <I>Input Status #1 Register</I></LI>
|
||||
</UL>
|
||||
|
||||
<TABLE BORDER WIDTH="600" CELLPADING="2" >
|
||||
<CAPTION ALIGN=TOP><A NAME="3CCR3C2W"></A><B>Miscellaneous Output Register
|
||||
(Read at 3CCh, Write at 3C2h)</B></CAPTION>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75">7</TD>
|
||||
|
||||
<TD WIDTH="75">6</TD>
|
||||
|
||||
<TD WIDTH="75">5</TD>
|
||||
|
||||
<TD WIDTH="75">4</TD>
|
||||
|
||||
<TD WIDTH="75">3</TD>
|
||||
|
||||
<TD WIDTH="75">2</TD>
|
||||
|
||||
<TD WIDTH="75">1</TD>
|
||||
|
||||
<TD WIDTH="75">0</TD>
|
||||
</TR>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75">VSYNCP</TD>
|
||||
|
||||
<TD WIDTH="75">HSYNCP</TD>
|
||||
|
||||
<TD WIDTH="75">O/E Page</TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD COLSPAN="2" WIDTH="150">Clock Select</TD>
|
||||
|
||||
<TD WIDTH="75">RAM En.</TD>
|
||||
|
||||
<TD WIDTH="75">I/OAS</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<UL><B>VSYNCP -- Vertical Sync Polarity<BR>
|
||||
</B>"<I>Determines the polarity of the vertical sync pulse and can be used
|
||||
(with HSP) to control the vertical size of the display by utilizing the
|
||||
autosynchronization feature of VGA displays.</I>
|
||||
<BR><I> = 0 selects a positive vertical retrace sync pulse.</I>"
|
||||
<BR><B>HSYNCP -- Horizontal Sync Polarity<BR>
|
||||
</B>"<I>Determines the polarity of the horizontal sync pulse.</I>
|
||||
<BR><I> = 0 selects a positive horizontal retrace sync pulse.</I>"
|
||||
<BR><B>O/E Page -- Odd/Even Page Select<BR>
|
||||
</B>"<I>Selects the upper/lower 64K page of memory when the system is in
|
||||
an eve/odd mode (modes 0,1,2,3,7).</I>
|
||||
<BR><I> = 0 selects the low page</I>
|
||||
<BR><I> = 1 selects the high page</I>"
|
||||
<LI>
|
||||
<B>Clock Select</B></LI>
|
||||
|
||||
<BR>This field controls the selection of the dot clocks used in driving
|
||||
the display timing. The standard hardware has 2 clocks available
|
||||
to it, nominally 25 Mhz and 28 Mhz. It is possible that there may
|
||||
be other "external" clocks that can be selected by programming this register
|
||||
with the undefined values. The possible valuse of this register are:
|
||||
<UL>
|
||||
<LI>
|
||||
00 -- select 25 Mhz clock (used for 320/640 pixel wide modes)</LI>
|
||||
|
||||
<LI>
|
||||
01 -- select 28 Mhz clock (used for 360/720 pixel wide modes)</LI>
|
||||
|
||||
<LI>
|
||||
10 -- undefined (possible external clock)</LI>
|
||||
|
||||
<LI>
|
||||
11 -- undefined (possible external clock)</LI>
|
||||
</UL>
|
||||
<B>RAM En. -- RAM Enable<BR>
|
||||
</B>"<I>Controls system access to the display buffer.</I>
|
||||
<BR><I> = 0 disables address decode for the display buffer from the
|
||||
system</I>
|
||||
<BR><I> = 1 enables address decode for the display buffer from the
|
||||
system</I>"
|
||||
<BR><B>I/OAS -- Input/Output Address Select<BR>
|
||||
</B>"<I>This bit selects the CRT controller addresses. When set to 0, this
|
||||
bit sets the CRT controller addresses to 0x03Bx and the address for the
|
||||
Input Status Register 1 to 0x03BA for compatibility withthe monochrome
|
||||
adapter. When set to 1, this bit sets CRT controller addresses to
|
||||
0x03Dx and the Input Status Register 1 address to 0x03DA for compatibility
|
||||
with the color/graphics adapter. The Write addresses to the Feature Control
|
||||
register are affected in the same manner.</I>"</UL>
|
||||
|
||||
<TABLE BORDER WIDTH="600" CELLPADING="2" >
|
||||
<CAPTION ALIGN=TOP><A NAME="3CAR3xAW"></A><B>Feature Control Register (Read
|
||||
at 3CAh, Write at 3BAh (mono) or 3DAh (color))</B></CAPTION>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75">7</TD>
|
||||
|
||||
<TD WIDTH="75">6</TD>
|
||||
|
||||
<TD WIDTH="75">5</TD>
|
||||
|
||||
<TD WIDTH="75">4</TD>
|
||||
|
||||
<TD WIDTH="75">3</TD>
|
||||
|
||||
<TD WIDTH="75">2</TD>
|
||||
|
||||
<TD WIDTH="75">1</TD>
|
||||
|
||||
<TD WIDTH="75">0</TD>
|
||||
</TR>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75">FC1</TD>
|
||||
|
||||
<TD WIDTH="75">FC0</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<UL>
|
||||
<LI>
|
||||
<B>FC1 -- Feature Control bit 1<BR>
|
||||
</B>"<I>All bits are reserved.</I>"</LI>
|
||||
|
||||
<LI>
|
||||
<B>FC2 -- Feature Control bit 0<BR>
|
||||
</B>"<I>All bits are reserved.</I>"</LI>
|
||||
</UL>
|
||||
|
||||
<TABLE BORDER WIDTH="600" CELLPADING="2" >
|
||||
<CAPTION ALIGN=TOP><A NAME="3C2R"></A><B>Input Status #0 Register (Read-only
|
||||
at 3C2h)</B></CAPTION>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75">7</TD>
|
||||
|
||||
<TD WIDTH="75">6</TD>
|
||||
|
||||
<TD WIDTH="75">5</TD>
|
||||
|
||||
<TD WIDTH="75">4</TD>
|
||||
|
||||
<TD WIDTH="75">3</TD>
|
||||
|
||||
<TD WIDTH="75">2</TD>
|
||||
|
||||
<TD WIDTH="75">1</TD>
|
||||
|
||||
<TD WIDTH="75">0</TD>
|
||||
</TR>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75">SS</TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<UL><B>SS - Switch Sense<BR>
|
||||
</B>"<I>Returns the status of the four sense switches as selected by the
|
||||
CS field of the Miscellaneous Output Register.</I>"</UL>
|
||||
|
||||
<TABLE BORDER WIDTH="600" CELLPADING="2" >
|
||||
<CAPTION ALIGN=TOP><A NAME="3xAR"></A><B>Input Status #1 Register (Read
|
||||
at 3BAh (mono) or 3DAh (color))</B></CAPTION>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75">7</TD>
|
||||
|
||||
<TD WIDTH="75">6</TD>
|
||||
|
||||
<TD WIDTH="75">5</TD>
|
||||
|
||||
<TD WIDTH="75">4</TD>
|
||||
|
||||
<TD WIDTH="75">3</TD>
|
||||
|
||||
<TD WIDTH="75">2</TD>
|
||||
|
||||
<TD WIDTH="75">1</TD>
|
||||
|
||||
<TD WIDTH="75">0</TD>
|
||||
</TR>
|
||||
|
||||
<TR ALIGN=CENTER VALIGN=CENTER>
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75">VRetrace</TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75"></TD>
|
||||
|
||||
<TD WIDTH="75">DD</TD>
|
||||
</TR>
|
||||
</TABLE>
|
||||
|
||||
<UL><B>VRetrace -- Vertical Retrace<BR>
|
||||
</B>"<I>When set to 1, this bit indicates that the display is in a vertical
|
||||
retrace interval.This bit can be programmed, through the Vertical Retrace
|
||||
End register, to generate an interrupt at the start of the vertical retrace.</I>"
|
||||
<BR><B>DD -- Display Disabled<BR>
|
||||
</B>"<I>When set to 1, this bit indicates a horizontal or vertical retrace
|
||||
interval. This bit is the real-time status of the inverted 'display enable'
|
||||
signal. Programs have used this status bit to restrict screen updates to
|
||||
the inactive display intervals in order to reduce screen flicker. The video
|
||||
subsystem is designed to eliminate this software requirement; screen updates
|
||||
may be made at any time without screen degradation.</I>"</UL>
|
||||
Notice: All trademarks used or referred to on this page are the property
|
||||
of their respective owners.
|
||||
<BR>All pages are Copyright © 1997, 1998, J. D. Neal, except where
|
||||
noted. Permission for utilization and distribution is subject to the terms
|
||||
of the <A HREF="license.htm">FreeVGA Project Copyright License</A>.
|
||||
</BODY>
|
||||
</HTML>
|
||||
Reference in New Issue
Block a user