Tseng Super VGA

   ET3000-AX   512k 8/16 bit Main chip
         -BX   512k  8 bit
         -Bp   256k  8 bit  Basic chip
   ET4000      1M 8/16 bit

   ET4000/X32 will be released in '92 supporting 24bit colors, 4MB DRAM or VRAM
   and built-in accelerator.


   Registers:

102h: Microchannel Setup Control
bit 0  Disable Card if set

3BFh (R/W): Hercules Compatability register

3C0h index 16h: ATC Miscellaneous
   (Write data to 3C0h, Read from 3C1h  (May not be needed))
bit 4,5  High resolution timings.

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

3C4h index  6  (R/W): Zoom Control   (ET3000 Only)
bit 0-2  Yzoom factor 0=1:1
    4-6  Xzoom factor 0=1:1
      7  Hardware zoom enabled if set

3C4h index  7  (R/W): TS Auxiliary Mode
bit 0  (ET3000 Only) Switch Normal Window if set (Text/Graph)
    1  (ET3000 Only) Switch Zoom Window if set (Text/Graph)
    2  (ET3000 Only) Switch Split Window if set (Text/Graph)
    4  (ET3000 Only) If set 8 simultaneous fonts are enabled,
                     using bit 3,4,6 of each attribute byte
                     to select the font.
  3,5  Rom Bios Enable/Disable:
         0 0  C000-C3FF Enabled
         0 1  Rom disabled
         1 0  C000-C5FF,C680-C7FF Enabled
         1 1  C000-C7FF Enabled
    6  MCLK/2 if set
    7  VGA compatible if set EGA else.

3CBh (R/W): PEL Address/Data Wd

3CDh (R/W): Segment Select
bit 0-2  (ET3000) 64k Write bank nr
    3-5  (ET3000) 64k Read bank nr
    6-7  (ET3000) Segment Configuration.
                    0  128K segments
                    1   64K segments
                    2  1M linear memory
    0-3  (ET4000) 64k Write bank nr (0..15)
    4-7  (ET4000) 64k Read bank nr (0..15)

3CEh index  Dh (R/W): Microsequencer Mode

3CEh index  Eh (R/W): Microsequencer Reset

3d4h index 1Bh (R/W): X Zoom Start Address       (ET3000 Only)
bit 0-7  Offset of Zoom window start in character clocks
         (8 pixels) from left edge

3d4h index 1Ch (R/W): X Zoom End                 (ET3000 Only)
bit 0-7  Offset of Zoom window end in char clocks from left edge

3d4h index 1Dh (R/W): Y Zoom Start Address       (ET3000 Only)
bit 0-7  Start line of zoom window bit 0-7

3d4h index 1Eh (R/W): Y Zoom End Address         (ET3000 Only)
bit 0-7  (ET3000 Only) End line of zoom window bit 0-7

3d4h index 1Fh (R/W): Y Zoom Start and End High  (ET3000 Only)
bit 0-2  End line of zoom window bit 8-10
    3-5  Start line of zoom window bit 8-10

3d4h index 20h (R/W): Zoom Start Address Low     (ET3000 Only)
bit 0-7  Zoom Start Address bit 0-7
         Address of Zoom data

3d4h index 21h (R/W): Zoom Start Address Middle  (ET3000 Only)
bit 0-7  Zoom Start Address bit 8-15

3d4h index 23h (R/W): Extended start ET3000      (ET3000 Only)
bit 0  Cursor start address bit 16
    1  Display start address bit 16
    2  Zoom start address bit 16

3d4h index 24h (R/W): Compatibility Control
bit 0  Enable Clock Translate
    1  Additional Master Clock Select
    2  Enable tri-state for all output pins
    3  Enable input A8 of 1MB DRAMs
    4  Reserved
    5  Enable external ROM CRTC translation
    6  Enable Double Scan and Underline Attribute
    7  CGA/MDA/Hercules

3d4h index 25h (R/W): Overflow High ET3000       (ET3000 Only)
bit 0  Vertical Blank Start bit 10
    1  Vertical Total Start bit 10
    2  Vertical Display End bit 10
    3  Vertical Sync Start bit 10
    4  Line Compare bit 10
  5-6  Reserved
    7  Vertical Interlace if set

3d4h index 32h (R/W): RAS/CAS Video Config
      Ram timing, System clock and Ram type. Sample values:
          00h  VRAM  80nsec
          09h  VRAM 100nsec
          00h  VRAM  28MHz
          08h  VRAM  36MHz
          70h  DRAM  40MHz

3d4h index 33h (R/W): Extended start ET4000  (ET4000 Only)
bit 0-1  Display start address bits 16-17
    2-3  Cursor start address bits 16-17
         Can be used to ID ET4000

3d4h index 34h (R/W): Compatibility Control Register
bit 3  if set Video Subsystem Enable Register at 46E8h
                 else at 3C3h.

3d4h index 35h (R/W): Overflow High ET4000   (ET4000 Only)
bit 0  Vertical Blank Start Bit 10
    1  Vertical Total Bit 10
    2  Vertical Display End Bit 10
    3  Vertical Sync Start Bit 10
    4  Line Compare Bit 10
    5  Gen-Lock Enabled if set (External sync)
    6  Read/Modify/Write Enabled if set. Currently not implemented.
    7  Vertical interlace if set

3d4h index 36h (R/W): Video System Configuration 1
bit 3  16 bit wide fonts if set, else 8 bit wide
    4  (ET4000 Only) Linear addressing if set
       Video Memory is mapped as a 1 Meg block above 1MB.
    6  16 bit data path (video memory) if set
    7  16 bit data (I/O operations) if set

3d4h index 37h (R/W): Video System Configuration 2
bit 0-1  Memory size  0,1=256k, 2=512k, 3=1M   ???
      3  Clear if 64kx4 RAMs                   ???
         if set RAM size = (bit 0-1)*256k
           else RAM size = (bit 0-1)* 64k
      4  16 bit ROM access if set
      5  Memory bandwidth (0 better than 1) ???
      7  VRAM installed if set DRAM else.
  bit 6? Block read ahead (BRA)  if clear

3d4h index 3Fh (R/W):
bit   7  This bit seems to be bit 8 of the CRTC offset register (3d4h index 13h).

3d8h (R/W): Display Mode Control

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


      3C4h index 05 used.


 Bank Switching:

    64k banks are selected by the Segment Select Register at 3CDh.
    Both a Read and a Write segment can be selected.

 Hardware Zoom (ET3000 Only).

    The ET3000 can zoom a part of display memory in a window.
    The display memory position and window position are selected
    by 3d4h index 1Bh to 21h.


 Identify Tseng Chipset:

    outp($3BF,3);
    outp($3D8,$A0);   {Enable ET4000 extensions}
    if tstrg($3CD,$3f) then
      if testinx2(base,$33,$f) then Tseng 4000
                               else Tseng 3000;


 Video Modes:
    8   T   132   25   2                   (STB only)
    Ah  T   132   44   2

   18h  T   132   44   4  (8x8)   B000
   19h  T   132   25   4  (9x14)  B000
   1Ah  T   132   28   4  (9x13)  B000
   22h  T   132   44  16  (8x8)
   23h  T   132   25  16  (8x14)
   24h  T   132   28  16  (8x13)
   25h  G   640  480  16  planar
   26h  T    80   60  16  (8x8)
   27h  G   720  512  16  planar           (Tseng recommended, few boards)
   29h  G   800  600  16  planar
   2Ah  T   100   40  16  planar
   2Dh  G   640  350 256  packed
   2Eh  G   640  480 256  packed
   2Fh  G   640  400 256  packed           (ET4000 Only)
   2Fh  G   720  512 256  packed           (Tseng recommended, few boards)
   30h  G   800  600 256  packed
   36h  G   960  720  16  planar           (STB only)
   37h  G  1024  768  16  planar
   38h  G  1024  768 256  packed           (ET4000 Only)
   3Dh  G  1280 1024  16  planar           (newer ET4000s)
   3Eh  G  1280  960  16  planar           (Definicon)
   3Eh  G   640  480 32k  Sierra 15-bit    (Compaq Qvision)



  BIOS extensions  (Tseng 4000 Sierra HiColor DAC):

----------1010E0-----------------------------
INT 10 - VIDEO - SpeedStar 24 - SET TrueColor GRAPHICS MODE
       AX = 10E0h
       BL = 2Eh
Return: AX = 0010h if successfull
            other on error
Enters 24bit 640x480 mode if SS24 DAC present.
Video memory is NOT cleared.
Each line uses 2048 bytes with only 640x3=1920 bytes actually used.
So that a line can never cross a 64K border.
----------1010F0-----------------------------
INT 10 - VIDEO - Tseng ET-4000 BIOS - SET HiColor GRAPHICS MODE
       AX = 10F0h
       BL = video mode (see also AH=00h)
            32768-color modes:
                  13h = 320x200
                  2Dh = 640x350
                  2Eh = 640x480
                  2Fh = 640x400
                  30h = 800x600
                  3Eh = 640x480 16M colors  (Genoa 7900)
            16M color modes:
                  3Eh = 640x480   (Genoa 7900)
       BX =     2DFFh = 640x350   (MEGAVGA/2)
                2EFFh = 640x480   (MEGAVGA/2)
                2FFFh = 640x400   (MEGAVGA/2)
Return: AX = 0010h if successful
            other on error
SeeAlso: AX=10F1h
----------1010F1-----------------------------
INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
       AX = 10F1h
Return: AX = 0010h if successful, errorcode if not
       BL = type of digital/analog converter
            00h normal VGA DAC
            01h Sierra SC1148x HiColor DAC

        (Diamond SpeedStar 24:)
            02h New SS24 DAC  (16M colors)

        (MEGAVGA/2 BIOS:)
            02h Sierra Mark2 (15-bit) or Mark3 (16-bit) DAC
            03h ATT20c491 or 492 15/16/24 bit HiColor DAC
            04h AcuMos ADAC1 (15/16/24 bit)
          else other HiColor DAC
SeeAlso: AX=10F0h
----------1010F2-----------------------------
INT 10 - VIDEO - Tseng ET-4000 BIOS - GET/SET HiColor MODE
       AX = 10F2h
       BL = 00h  Get current HiColor mode
            01h  Set 15bit HiColor mode
            02h  Set 16bit HiColor mode
Return: AX = 0010h if successfull, errorcode if not
       BL = Current HiColor mode:
            00h  Not in HiColor mode or not a HiColor DAC
            01h  15-bit RGB mode
            02h  16-bit RGB mode
            03h  24-bit RGB mode

Note: Set HiColor mode (BL=1 or 2) only works if already in some HiColor mode.


Notes:
 The sequence:

     port[$3BF]:=3;
     port[$3D8]:=$A0;

is apparently needed to enable the extensions in the Tseng 4000.
Most BIOSes do this by default, but some such as the Sigma VGA Legend
requires this sequence.
Let me know if you encounter any other examples.