  Trident SuperVGA

  Trident 8800BR  512k   Only 128K banks.
	  8800CS  512k
	  8900    1M
	  8900C   1M
	  9000    Low component version 
	  LCD9100
	  LX9200
   
	  The Trident 8800 chips have a problem with 256 color modes,
	  as they always double the pixels output in 256 color mode.
	  Thus a 640x400 256 color mode (5Ch) actually uses a 1280x400
	  frame, requiring at least a multi sync monitor.
	  This problem is fixed on the 8900.

 Apparently Trident BIOS version 3.xx or later on a 8900 will support HiColor DACs
 Anybody got the details (modes, which DACs ...)?.


 100h (R/W?): Microchannel ID low
 bit 0-7  Card ID bit 0-7

 101h (R/W?): Microchannel ID high
 bit 0-7  Card ID bit 8-15

 3C3h (R/W): Microchannel Video Subsystem Enable Register:
 bit 0  Enable Microchannel VGA if set

 3C4h index  Bh (R): Chip Version
 bit 0-3  Chip ID
	    1 = TR 8800BR
	    2 = TR 8800CS
	    3 = TR 8900
	    4 = TR 8900C   (Some sources say 3)
     4-7  Reserved for 8800.
	  For 8900/9000: 0=8900B, 1=8900C, 2=9000, 8=LX9200, 9=LCD9100. 

 Note:  Writing to index Bh selects old mode registers.
	Reading from index Bh toggles between old and new
	mode registers.
 Note:  Writing to this register in order to force old mode registers
	should be done with two 8bit writes, not one 16bit write.

 3C4h index  Ch (R/W): Power Up Mode Register 1

 3C4h index  Dh (R/W): Old Mode Control 2
 bit 0-2  Emulation mode
	  0=VGA, 3=EGA, 5=CGA,MDA,Hercules
       4  Enable Paging mode if set

 3C4h index  Dh (R/W): New Mode Control 2
	     Contains timing info
 Note: The old/new Mode Control 1/2 registers are selected by
       reading and writing the Chip version register (index Bh).

 3C4h index  Eh (R/W): Old Mode Control 1
 bit   0  (8900 Only) CRTC Address bit 17 (Show from upper 512kb if set)
     1-2  128kb Bank number (0-3)
       3  16 bit interface if set

 3C4h index  Eh (R/W): New Mode Control 1
 bit 0-3  64k Bank nr. For write ops. xor bank number with 2,
	  for read ops use bank number directly.
     4-7  Reserved
 Note: The old/new Mode Control 1/2 registers are selected by
       reading and writing the Chip version register (index Bh).

 3C4h index  Fh (R/W): Power-up Mode 2
 bit 0-3  Switch settings
       4  Bus type
       5  If set I/O address are at 3xxh, else at 2xxh.
       6  Enable ON-Card ROM if set
       7  16 bit ROM access if set

 3d4h index 1Eh (R/W): Module Testing Register
 bit 2  Vertical interlace if set
     5  CRTC starting address bit 16
     7  (8900 Only) Host address bit 16.
	Enables 128k CRTC address if set

 3d4h index 1Fh (R/W): Software Programming Register  (8900 Only)
 bit 0-1  Memory size  0=256k, 1=512k, 2=768k, 3=1M.

 3d4h index 1Fh (R/W): Scratch Register               (8800 Only)
 bit 0  Paged memory mode in effect
     1  Memory size  0=256k, 1=512k
     2  Analog monitor attached
     3  44.9 MHz oscillator present
 Note: This register is set by software.

 3d4h index 22h (R): CPU Latch Read Back
 bit 0-7  Data Latch value for current read plane.

 3d4h index 24h (R): Attribute State Read Back
 bit 0-6  Reserved
       7  Attribute Controller State
	  If set the next write to 3C0h will go to the data
	  register, if clear to the index register.

 3d4h index 26h (R): Attribute Index Read Back
 bit 0-7  Attribute Index Register value



 46E8h (R):  Video Subsystem Enable Register
 bit 3  Enable VGA if set




  Bank selection:

    Trident VGAs can operate in 2 different modes:

    Old Mode, with a 128k window to display memory at A000h - BFFFh
    and New Mode, with a 64k window to display memory at A000h - AFFFh.
    Old/New mode is selected by reading/writing the Chip Version Register
    (3C4h index 0Bh).
    Each mode has its own registers at 3C4h index 0Dh and 0Eh.


  ID Trident VGA:

    wrinx($3c4,11,0);    {Force old_mode_registers}
    chp:=inp($3c5);      {Read chip ID and switch to new_mode_registers}
    old:=rdinx($3c4,14);
    outp($3c5,0);
    value:=inp($3c5) and 15;
    outp($3c5,old);

    if value=2 then
      case chp of
	1:Trident TR8800BR;
	2:Trident TR8800CS;
	3:Trident TR8900;
      $13:Trident TR8900C;
      $23:Trident TR9000;
      $83:Trident LX9200;
      $93:Trident LCD9100
      end;
	

  Video Modes:
    50h  T    80   30  16  (8x16)
    51h  T    80   43  16  (8x11)
    52h  T    80   60  16  (8x8)
    53h  T   132   25  16  (8x14)
    54h  T   132   30  16  (8x16)
    55h  T   132   43  16  (8x11)
    56h  T   132   60  16  (8x8)
    57h  T   132   25  16  (9x14)
    58h  T   132   30  16  (9x16)
    59h  T   132   43  16  (9x11)
    5Ah  T   132   60  16  (9x8)
    5Bh  G   800  600  16  planar
    5Ch  G   640  400 256  packed
    5Dh  G   640  480 256  packed
    5Eh  G   800  600 256  packed           (Undocumented on 8800)
    5Fh  G  1024  768  16  planar
    60h  G  1024  768   4                   8900 Only
    61h  G   768 1024  16  planar
    62h  G  1024  768 256  packed           8900 Only


    ZyMOS POACH51 modes:

    60h  G   960  720  16  planar
    61h  G  1280  640  16  planar
    62h  G   512  512 256  packed
    63h  G   720  540  16  planar
    64h  G   720  540 256  packed
    6Ah  G   800  600  16  planar


  Everex Viewpoint use Everex modes.


  Bios extensions:

----------1000-------------------------------
INT 10 - VIDEO - SET VIDEO MODE

  ....

Return: AH = Status of call:  (Trident Super VGA Chips)

		    Trident 8800            Trident 8900
	     00h   Successful                do
	     80h   Fail. Wrong switch        do
	     81h   Insufficient Video        do
		   Memory.
	     82h   The 36MHz crystal        Mode not supported
		   cannot support the
		   mode
	     83h   The 40MHz crystal        Mode not supported
		   cannot support the
		   mode.
	     84h   The 44.9MHz crystal      Mode not supported
		   cannot support the
		   mode.
	     85h   Dead or no crystal
	     86h                            Wrong CRTC base for dual screen
	     87h                            Text mode not supported
