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