6.03 Complete input, output port accessible register list
==== ====================================================
The registers are listed with a document reference number which is numeric only
or preceeded by an X. The numeric only register reference numbers describe the
standard VGA registers. Those beginning with an X, describe extended registers
which may be specific to a particular implementation, in this case, the Trident
8900 video graphics controller chip.
The port address is some instances contains a ? indicating that an alternative
port address can be made available under program control. This choice will be
between the hex digit 'b' for monochrome emulation or 'd' for colour emulation.
The port address shown as 3?5h would be either 3b5h or 3d5h depending upon the
value of the status bit <0> in the Miscellaneous Output Register.
In some instances, the access definition for a particular register will change
for read and write. Sometimes, for example, a different port is used depending
on whether a value is being written to, or being read from, the register. This
difference will be highlighted by the appearance of two descriptive lines, with
the suffixes a,b indicating a closely related definition.
Note that not all port addresses are used. This is also true of the register
index numbers used to access the internal arrays of registers. In most cases
the hardware defines some internal datapath for these unused register indexes.
They are used only for testing purposes, if at all. They are not significant
with respect to programmable functionality, so should not be accessed. Where
a break in contiguous index numbers occurs, this is emphasised by means of a
dummy line, which breaks the pattern of smoothly increasing index numbers.
Document Reference
===---------------
Index Port Address
=== ====--------------
Access Port Address
=== ==== ====---------------
Index Number
=== ==== ==== ===---------
Read/Write Access
=== ==== ==== === ===--------------
Register Description
=== ==== ==== === === ====================
1 3c4h ---- --- R/W Sequencer Address Register
2 3c4h 3c5h 00h R/W Reset Register
3 3c4h 3c5h 01h R/W Clocking Mode Register
4 3c4h 3c5h 02h R/W Map Mask Register
5 3c4h 3c5h 03h R/W Character Map Select Register
6 3c4h 3c5h 04h R/W Sequencer Memory Mode Register
---- ---- --- ---
X 1 3c4h 3c5h 0bh R-- Hardware Version Register {new definition}
X 2 3c4h 3c5h 0bh --W Version Selector Register {old definition}
---- ---- --- ---
X 3 3c4h 3c5h 0ch R/W Configuration Port Register 1
X 4 3c4h 3c5h 0dh R/W Mode Control Register 2
X 5 3c4h 3c5h 0eh R/W Mode Control Register 1
X 6 3c4h 3c5h 0fh R/W Power-up Mode Register 2
7a 3b4h ---- --- R/W CRT Controller Address Register
b 3d4h ---- --- R/W CRT Controller Address Register
8 3?4h 3?5h 00h R/W Horizontal Total Register
9 3?4h 3?5h 01h R/W Horizontal Display Enable End Register
10 3?4h 3?5h 02h R/W Start Horizontal Blanking Register
11 3?4h 3?5h 03h R/W End Horizontal Blanking Register
12 3?4h 3?5h 04h R/W Start Horizontal Retrace Pulse Register
13 3?4h 3?5h 05h R/W End Horizontal Retrace Register
14 3?4h 3?5h 06h R/W Vertical Total Register
15 3?4h 3?5h 07h R/W CRT Controller Overfow Register
16 3?4h 3?5h 08h R/W Preset Row Scan Register
17 3?4h 3?5h 09h R/W Maximum Scan Line Register
18 3?4h 3?5h 0ah R/W Cursor Start Register
19 3?4h 3?5h 0bh R/W Cursor End Register
20 3?4h 3?5h 0ch R/W Start Address High Register
21 3?4h 3?5h 0dh R/W Start Address Low Register
22 3?4h 3?5h 0eh R/W Cursor Location High Register
23 3?4h 3?5h 0fh R/W Cursor Location Low Register
24 3?4h 3?5h 10h R/W Vertical Retrace Start Register
25 3?4h 3?5h 11h R/W Vertical Retrace End Register
26 3?4h 3?5h 12h R/W Vertical Display Enable End Register
27 3?4h 3?5h 13h R/W Offset Register
28 3?4h 3?5h 14h R/W Underline Location Register
29 3?4h 3?5h 15h R/W Start Vertical Blanking Register
30 3?4h 3?5h 16h R/W End Vertical Blanking Register
31 3?4h 3?5h 17h R/W CRTC Mode Control Register
32 3?4h 3?5h 18h R/W Line Compare Register
---- ---- --- ---
X 7 3?4h 3?5h 1eh R/W CRTC Module Testing Register
X 8 3?4h 3?5h 1fh R/W Software Programming Register
---- ---- --- ---
X 9 3?4h 3?5h 22h R-- CPU Latch Read Back Register
---- ---- --- ---
X10 3?4h 3?5h 24h R-- Attribute State Read Back Register
---- ---- --- ---
X11 3?4h 3?5h 26h R-- Attribute Index Read Back Register
33 3ceh ---- --- R/W Graphics Address Register
34 3ceh 3cfh 00h R/W Set/Reset Register
35 3ceh 3cfh 01h R/W Enable Set/Reset Register
36 3ceh 3cfh 02h R/W Colour Compare Register
37 3ceh 3cfh 03h R/W Data Rotate Register
38 3ceh 3cfh 04h R/W Read Map Select Register
39 3ceh 3cfh 05h R/W Graphics Mode Register
40 3ceh 3cfh 06h R/W Miscellaneous Register
41 3ceh 3cfh 07h R/W Colour Don't Care Register
42 3ceh 3cfh 08h R/W Bit Mask Register
---- ---- --- ---
X12 3ceh 3cfh 0eh R/W Source Address Register
X13 3ceh 3cfh 0fh R/W Source Address Enable Register
43 3c0h ---- --- R/W Attribute Address Register
44a 3c0h 3c0h 00h --W Palette Register 00
b 3c0h 3c1h 00h R-- Palette Register 00
45a 3c0h 3c0h 01h --W Palette Register 01
b 3c0h 3c1h 01h R-- Palette Register 01
46a 3c0h 3c0h 02h --W Palette Register 02
b 3c0h 3c1h 02h R-- Palette Register 02
47a 3c0h 3c0h 03h --W Palette Register 03
b 3c0h 3c1h 03h R-- Palette Register 03
48a 3c0h 3c0h 04h --W Palette Register 04
b 3c0h 3c1h 04h R-- Palette Register 04
49a 3c0h 3c0h 05h --W Palette Register 05
b 3c0h 3c1h 05h R-- Palette Register 05
50a 3c0h 3c0h 06h --W Palette Register 06
b 3c0h 3c1h 06h R-- Palette Register 06
51a 3c0h 3c0h 07h --W Palette Register 07
b 3c0h 3c1h 07h R-- Palette Register 07
52a 3c0h 3c0h 08h --W Palette Register 08
b 3c0h 3c1h 08h R-- Palette Register 08
53a 3c0h 3c0h 09h --W Palette Register 09
b 3c0h 3c1h 09h R-- Palette Register 09
54a 3c0h 3c0h 0ah --W Palette Register 10
b 3c0h 3c1h 0ah R-- Palette Register 10
55a 3c0h 3c0h 0bh --W Palette Register 11
b 3c0h 3c1h 0bh R-- Palette Register 11
56a 3c0h 3c0h 0ch --W Palette Register 12
b 3c0h 3c1h 0ch R-- Palette Register 12
57a 3c0h 3c0h 0dh --W Palette Register 13
b 3c0h 3c1h 0dh R-- Palette Register 13
58a 3c0h 3c0h 0eh --W Palette Register 14
b 3c0h 3c1h 0eh R-- Palette Register 14
59a 3c0h 3c0h 0fh --W Palette Register 15
b 3c0h 3c1h 0fh R-- Palette Register 15
60a 3c0h 3c0h 10h --W Attribute Mode Control Register
b 3c0h 3c1h 10h R-- Attribute Mode Control Register
61a 3c0h 3c0h 11h --W Overscan Colour Register
b 3c0h 3c1h 11h R-- Overscan Colour Register
62a 3c0h 3c0h 12h --W Colour Plane Enable Register
b 3c0h 3c1h 12h R-- Colour Plane Enable Register
63a 3c0h 3c0h 13h --W Horizontal PEL Panning Register
b 3c0h 3c1h 13h R-- Horizontal PEL Panning Register
64a 3c0h 3c0h 14h --W Colour Select Register
b 3c0h 3c1h 14h R-- Colour Select Register
65a 3c2h ---- --- W-- Miscellaneous Output Register
b 3cch ---- --- --R Miscellaneous Output Register
66 3c2h ---- --- R-- Input Status Register Zero
67 3?ah ---- --- R-- Input Status Register One
68 3c3h ---- --- R/W Video Subsystem Enable Register
69 46e8h ---- --- R/W Display Adapter Enable Register
70 3c6h ---- --- R/W DAC Pixel Mask Register
71 3c7h ---- --- R-- DAC Status Register
72 3c7h ---- --- W-- DAC Read Data Address Register
73 3c8h ---- --- R/W DAC Write Data Address Register
74 3c9h ---- --- R/W DAC Data Register