TRIDENT.DOC.TXT

  Trident SuperVGA

  Trident 8800BR  512k   Only 128K banks.
          8800CS  512k
          8900    1M

          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.



       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-7  Reserved

       Note:  Writing to index Bh selects old mode registers.
              Reading from index Bh toggles between old and new
              mode registers.

       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  I/O address 3xx or 2xx
             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 oscilator 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:

    port[$3c4]:=14;
    old_value:=port[$3c5];
    port[$3c5]:=0;
    value:=port[$3c5] and 15;
    port[$3c5]:=old_value;

    if value=2 then TRIDENT VGA  !!!


  ID which Trident:

    portw[$3c4]:=11;     {Force old definitions}
    if port[$3c5]>=3 then TRIDENT_8900 !!!
                     else TRIDENT_8800 !!!


  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   Succesfull                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