home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / FAQSYS18.ZIP / FAQS.DAT / TSENG.TXT < prev    next >
Text File  |  1996-01-04  |  43KB  |  968 lines

  1.     Tseng Super VGA
  2.  
  3.     ET3000-AX    100pin  Max 512k 8/16bit databus, 32bit memory bus. Main chip
  4.           -BX     84pin      512k  8 bit databus.
  5.           -Bp                256k  8 bit  Basic chip
  6.     ET4000AX     144pin  Max 1M   8/16 bit
  7.     ET4000/W32   160pin  Max 4MB  Accelerator.
  8.     ET4000/W32i  160pin  Max 4MB  Accelerator. Can interleave DRAM
  9.     ET4000/W32p  208pin  Max 4MB  Accelerator, PCI support, point-point Line
  10.                                   draw
  11.  
  12. Note: W32x means any of W32, W32i and W32p
  13.  
  14.     Registers:
  15.  
  16.  
  17.   *** ET3000 *****
  18.  
  19. 102h: Microchannel Setup Control
  20. bit 0  Disable Card if set
  21.  
  22. 3B8h (W):  Display Mode Control Register
  23. bit   0  80x25. Set for 80x25 text mode, clear for 40x25 text mode
  24.       1  Hercules graphics mode if set, text mode else
  25.       3  Video enabled if set
  26.       5  Blink enabled if set
  27.       7  Graphics page 1 displayed if set, page 0 else
  28.  
  29. 3BFh (R/W): Hercules Compatibility Mode
  30. bit   1  Enable second page (B800h-BFFFh)
  31. Note: to enable the Tseng 4000 extensions this register must be written with 3
  32.       and then 3d8h must be written with A0h. To disable extensions write 29h
  33.       to 3d8h and then 1 to this register.
  34.       Extended registers include 3d4h index >18h, except index 33h and 35h
  35.  
  36. 3C0h index 16h:  Miscellaneous
  37. bit   0  If set disables writes to bits 0-3 of the Overscan (3C0h index 11h)
  38.          register.
  39.       1  If set disables writes to Internal/External Palette RAM.
  40.       4  If set the Horizontal Timings (3d4gh index 0-5), CRTC Offset (3d4h
  41.          index 13h) and Display Start Address (3d4h index 0Ch,0Dh) are doubled
  42.          (or more correctly: the units they are specified in are doubled).
  43.       6  If set enables 2byte character codes
  44.       7  Ignore EGA internal palette if set
  45.  
  46. 3C0h index 17h (R/W):  Miscellaneous 1
  47. bit   7  If set protects the internal palette ram and redefines the attribute
  48.          bits as follows:
  49.            Monochrome:
  50.            bit 0-2  Select font 0-7
  51.                  3  If set selects blinking
  52.                  4  If set selects underline
  53.                  5  If set prevents the character from being displayed
  54.                  6  If set displays the character at half intensity
  55.                  7  If set selects reverse video
  56.            Color:
  57.            bit 0-1  Selects font 0-3
  58.                  2  Foreground Blue
  59.                  3  Foreground Green
  60.                  4  Foreground Red
  61.                  5  Background Blue
  62.                  6  Background Green
  63.                  7  Background Red
  64.  
  65. 3C3h (R/W): Microchannel Video Subsystem Enable Register:
  66. bit 0  Enable Microchannel VGA if set
  67.  
  68. 3C4h index  6  (R/W): Zoom Control
  69. bit 0-2  Yzoom factor 0=x1, 1: x2 .... 7: x8
  70.     4-6  Xzoom factor 0=x1, 1: x2 .... 7: x8
  71.       7  Hardware zoom enabled if set
  72.  
  73. 3C4h index  7  (R/W): TS Auxiliary Mode
  74. bit 0  Switch Normal Window if set. Switches the normal window to text mode if
  75.        programmed for graphics mode, and vice versa.
  76.     1  Switch Zoom Window if set. Switches the zoom window to text mode if
  77.        programmed for graphics mode, and vice versa.
  78.     2  Switch Split Window if set. Switches the spilt window to text mode if
  79.        programmed for graphics mode, and vice versa.
  80.     4  If set 8 simultaneous fonts are enabled, using bit 3,4,6 of each
  81.        attribute byte to select the font.
  82.   3,5  ROM Bios Enable/Disable:
  83.          0 0  C000-C3FF Enabled
  84.          0 1  ROM disabled (-AX), C000-C5FFF (-AF)
  85.          1 0  C000-C5FF,C680-C7FF Enabled
  86.          1 1  C000-C7FF Enabled
  87.     6  MCLK/2 if set
  88.     7  VGA compatible if set, EGA if clear.
  89.  
  90. 3CBh (R/W): PEL Address/Data Wd                                  (3000/4000 ?)
  91.  
  92. 3CDh (R/W): Segment Select
  93. bit 0-2  64k Write bank number
  94.     3-5  64k Read bank number
  95.     6-7  Segment Configuration.
  96.            0  128K segments
  97.            1   64K segments
  98.            2  1M linear memory
  99.  
  100. 3CEh index 0Dh (R/W): Microsequencer Mode
  101.  
  102. 3CEh index 0Eh (R/W): Microsequencer Reset
  103.  
  104. 3d4h index 1Bh (R/W): X Zoom Start Address
  105. bit 0-7  Offset of Zoom window start in character clocks (8 pixels) from left
  106.          edge. The horizontal zoom area (End - Start) should be an integral
  107.          (positive) multipla of the horizontal zoom factor
  108.  
  109. 3d4h index 1Ch (R/W): X Zoom End
  110. bit 0-7  Offset of Zoom window end in char clocks from left edge
  111.  
  112. 3d4h index 1Dh (R/W): Y Zoom Start Address
  113. bit 0-7  Start line of zoom window bit 0-7
  114.  
  115. 3d4h index 1Eh (R/W): Y Zoom End Address
  116. bit 0-7  End line of zoom window bit 0-7. This is the last line to be zoomed.
  117.  
  118. 3d4h index 1Fh (R/W): Y Zoom Start and End High
  119. bit 0-2  End line of zoom window bit 8-10. Bits 0-7 are in index 1Eh
  120.     3-5  Start line of zoom window bit 8-10. Bits 0-7 are in index 1Dh
  121.  
  122. 3d4h index 20h (R/W): Zoom Start Address Low
  123. bit 0-7  Zoom Start Address bit 0-7. Address of the data to be zoomed in the
  124.          zoom window
  125.  
  126. 3d4h index 21h (R/W): Zoom Start Address Middle
  127. bit 0-7  Zoom Start Address bit 8-15
  128.  
  129. 3d4h index 23h (R/W): Extended start ET3000
  130. bit   0  Cursor start address bit 16
  131.       1  Display start address bit 16
  132.       2  Zoom start address bit 16
  133.       7  If set memory address 8 is output on the MBSL pin (allowing access to
  134.          1MB), if clear the blanking signal is output.
  135.  
  136. 3d4h index 24h (R/W): Compatibility Control
  137. bit   0  Enable Clock Translate if set
  138.       1  Clock Select bit 2. Bits 0-1 are in 3C2h/3CCh.
  139.       2  Enable tri-state for all output pins if set
  140.       3  Enable input A8 of 1MB DRAMs from the INTL output if set
  141.       4  Reserved
  142.       5  Enable external ROM CRTC translation if set
  143.       6  Enable Double Scan and Underline Attribute if set
  144.       7  Enable 6845 compatibility if set.
  145.  
  146. 3d4h index 25h (R/W): Overflow High
  147. bit   0  Vertical Blank Start bit 10
  148.       1  Vertical Total Start bit 10
  149.       2  Vertical Display End bit 10
  150.       3  Vertical Sync Start bit 10
  151.       4  Line Compare bit 10
  152.     5-6  Reserved
  153.       7  Vertical Interlace if set
  154.  
  155. 3D8h (W): Mode Control register
  156. bit   0  80x25 Alpha mode if set, 40x25 else
  157.       1  Graphics mode if set, alpha else.
  158.       2  BW mode if set, color else
  159.       3  Video Enable. Enable video signal if set
  160.       4  640x200 Graphics mode if set, 320x200 else
  161.       5  if set bit 7 of the attribute controls background, else blink
  162.  
  163. 3D9h (W): Color Select Register
  164.          The function of this register depends on the active mode.
  165.          Text modes:      320x200 modes:         640x200 mode:
  166. Bit   0  Blue border      Blue background        Blue ForeGround
  167.       1  Green border     Green background       Green ForeGround
  168.       2  Red border       Red background         Red ForeGround
  169.       3  Bright border    Bright background      Bright ForeGround
  170.       4  Backgr. color    Alt. intens. colors    Alt. intens colors
  171.       5  No func.         Selects palette
  172.                      Palette 0 is Green, red and brown,
  173.                      Palette 1 is Cyan, magenta and white.
  174.  
  175. 3dAh (W):  Feature Control Register
  176. bit   5  (R) Hercules Compatibility Register (3BFh) bit 1
  177.       7  Enable NMI generation if set
  178. Note: Read at 3CAh, Written at 3dAh
  179. Note: Bits 0,1 and 3 are standard EGA/VGA
  180.  
  181. 3DEh (W);  AT&T Mode Control Register
  182. bit    0  Set to double scanlines (200 -> 400)
  183.        2  Alternate Font Select.
  184.        3  Alternate Page Select. If bit 0 is clear, selects the 16KB page to
  185.           display from
  186.        6  Underline Color Attribute. If set text with underline attribute is
  187.           shown with the white underline, if clear it is shown in blue
  188.           foreground color
  189. Note: To update this register the system must be in color mode (3CCh bit 0
  190.       set) and 3d4h index 34h bits 6 and 7 must be set as follows:
  191.          bit   0    3d4h index 34h bits 7 must be set
  192.              2,3    3d4h index 34h bits 7 must be set
  193.                6    3d4h index 34h bits 6 must be set
  194.  
  195.  
  196.  
  197.  
  198.     ***  Tseng ET4000AX and ET4000/W32 variants
  199.  
  200. 102h: Microchannel Setup Control
  201. bit 0  Disable Card if set
  202.  
  203. 3BFh (R/W): Hercules Compatibility Mode
  204. bit   1  Enable second page (B800h-BFFFh)
  205. Note: to enable the Tseng 4000 extensions this register must be written with 3
  206.       and then 3d8h must be written with A0h. To disable extensions write 29h
  207.       to 3d8h and then 1 to this register.
  208.       Extended registers include 3d4h index >18h, except index 33h and 35h
  209.  
  210. 3C0h index 16h:  Miscellaneous
  211. bit   0  If set disables writes to bits 0-3 of the Overscan (3C0h index 11h)
  212.          register.
  213.       1  If set disables writes to Internal/External Palette RAM.
  214.     4,5  (4000) High resolution timings.
  215.                  0: Normal powerup mode
  216.                  2: Hiresolution 256color mode
  217.                  3: 15/16 bit HiColor mode (bytes on rising AND falling edge
  218.                     of the dot clock)
  219.          (W32x) High Resolution /color mode
  220.                   0: Normal 8bits/clock
  221.                   2: 16bits per clock (HiColor)
  222.       6  If set enables 2byte character codes
  223.       7  Ignore EGA internal palette if set
  224.  
  225. 3C0h index 17h (R/W):  Miscellaneous 1
  226. bit   7  If set protects the internal palette RAM and redefines the attribute
  227.          bits as follows:
  228.            Monochrome:
  229.            bit 0-2  Select font 0-7
  230.                  3  If set selects blinking
  231.                  4  If set selects underline
  232.                  5  If set prevents the character from being displayed
  233.                  6  If set displays the character at half intensity
  234.                  7  If set selects reverse video
  235.            Color:
  236.            bit 0-1  Selects font 0-3
  237.                  2  Foreground Blue
  238.                  3  Foreground Green
  239.                  4  Foreground Red
  240.                  5  Background Blue
  241.                  6  Background Green
  242.                  7  Background Red
  243.  
  244. 3C3h (R/W): Microchannel Video Subsystem Enable Register:
  245. bit 0  Enable Microchannel VGA if set
  246.  
  247. 3C4h index  6  (R/W): TS State Control
  248. bit 1-2  Font Width Select in dots/character
  249.          If 3C4h index 4 bit 0 clear:
  250.            0: 9 dots, 1: 10 dots, 2: 12 dots, 3: 6 dots
  251.          If 3C4h index 5 bit 0 set:
  252.            0: 8 dots, 1: 11 dots, 2: 7 dots, 3: 16 dots
  253.          Only valid if 3d4h index 34h bit 3 set.
  254.  
  255. 3C4h index  7  (R/W): TS Auxiliary Mode
  256. bit 0  Selects MCLK/4 as video clock if set (bit 6 must be set)
  257.     1  Selects SCLK=MCLK
  258.     2  (4000) Always 1
  259.   2,4  (W32x) CRTC Horizontal Scale Factor. The number of times each pixel is
  260.               replicated horizontally. 0: x8, 1: x4, 2: x2, 3: x8
  261.   3,5  ROM Bios Enable/Disable:
  262.          0 0  C000-C3FF Enabled
  263.          0 1  ROM disabled
  264.          1 0  C000-C5FF,C680-C7FF Enabled
  265.          1 1  C000-C7FF Enabled
  266.     6  MCLK/2 if set and bit 0 is 0
  267.     7  VGA compatible if set, EGA if clear.
  268.  
  269. 3CBh (R/W): PEL Address/Data Wd                                  (3000/4000 ?)
  270.  
  271. 3CBh (R/W): Extended bank register                                  (W32 only)
  272. bit 0-1  Write bank bit 4-5. The lower 4 bits are in 3CDh bit 0-3.
  273.     4-5  Read bank bit 4-5.  The lower 4 bits are in 3CDh bit 4-7.
  274.  
  275. 3CDh (R/W): Segment Select
  276. bit 0-3  64k Write bank number (0..15)
  277.     4-7  64k Read bank number (0..15)
  278.  
  279. 3CEh index 0Dh (R/W): Microsequencer Mode
  280.  
  281. 3CEh index 0Eh (R/W): Microsequencer Reset
  282.  
  283. 3d4h index 30h (R/W):                                                 (W32x ?)
  284. bit 0-?  Linear Frame Buffer Address in units of 4Mb
  285.  
  286. 3d4h index 31h (R/W):  General Purpose
  287. bit  0-3  Scratch pad
  288.        3  (W32p?) 1280x1024 frequency: 0: 43Hz i-lace, 1: 60Hz
  289.      6-7  Clock Select bits 3-4. Bits 0-1 are in 3C2h/3CCh bits 2-3.
  290.  
  291. 3d4h index 32h (R/W): RAS/CAS Configuration
  292. bit  0-1  CAS low Pulse Width (Tcsw). The CAS low pulse width in SCLK cycles.
  293.           For graphics modes and the CAS0,CAS1 signals in text mode the period
  294.           is 2 SCLK cycles if this value is 1, 1 SCLK cycle if not.
  295.           For the CAS2 and CAS3 signals in text mode the period is:
  296.             0: 1 SCLK cycle, 1: 2, 2: 3, 3: 4
  297.        2  CAS Pre-charge Time (Tcsp). The CAS high pulse width is 1 SCLK cycle
  298.           if clear, 2 if set
  299.      3-4  RAS Pre-charge Time (Trsp). The RAS high pulse width in SCLK cycles
  300.             0: 2 SCLK cycles, 1: 3, 2: 4, 3: 5
  301.        5  Recharge time (Trcd). If set Trcd is 3 SCLK cycles, if clear only 2
  302.        6  RAL RAS & CAS Column Setup Time (Tral).
  303.        7  (W32i/p) Set if using interleaved memory.
  304.  
  305. 3d4h index 33h (R/W): Extended start Address
  306. bit  0-1  (4000) Display Start Address bits 16-17
  307.      2-3  (4000) Cursor start address bits 16-17
  308.           Can be used to ID ET4000
  309.      0-3  (W32x) Display Start Address bits 16-19. Bits 0-15 are in 3d4h index
  310.                  0Ch,0Dh
  311.      4-7  (W32x) Cursor Start Address bits 16-19. Bits 0-15 are in 3d4h index
  312.                  0Eh,0Fh
  313. Note: This register can be accessed whether or not the extensions are enabled
  314.  
  315. 3d4h index 34h (R/W): 6845 Compatibility Control Register
  316. bit    0  Enable CS0 (alternate clock timing)
  317.        1  Clock Select bit 2.  Bits 0-1 in 3C2h bits 2-3, bits 3-4 are in 3d4h
  318.           index 31h bits 6-7
  319.        2  Tristate ET4000 bus and color outputs if set
  320.        3  Video Subsystem Enable Register at 46E8h if set, at 3C3h if clear.
  321.        4  Enable Translation ROM for reading CRTC and MISCOUT if set
  322.        5  Enable Translation ROM for writing CRTC and MISCOUT if set
  323.        6  Enable double scan in AT&T compatibility mode if set
  324.        7  Enable 6845 compatibility if set
  325.  
  326. 3d4h index 35h (R/W): Overflow High
  327. bit    0  Vertical Blank Start Bit 10 (3d4h index 15h).
  328.        1  Vertical Total Bit 10 (3d4h index 6).
  329.        2  Vertical Display End Bit 10 (3d4h index 12h).
  330.        3  Vertical Sync Start Bit 10 (3d4h index 10h).
  331.        4  Line Compare Bit 10 (3d4h index 18h).
  332.        5  Gen-Lock Enabled if set (External sync)
  333.        6  (4000) Read/Modify/Write Enabled if set. Currently not implemented.
  334.           (W32x) If set selects the CRTCB or Sprite registers as the source
  335.                  for Vertical Retrace Interrupts, if clear selects the
  336.                  standard CRTC registers
  337.        7  Vertical interlace if set. The Vertical timing registers are
  338.           programmed as if the mode was non-interlaced!!
  339.  
  340. 3d4h index 36h (R/W): Video System Configuration 1
  341. bit  0-2  Refresh count. Number (-1) of refreshes per display line
  342.        3  (4000) 16 bit wide fonts if set, else 8 bit wide
  343.           (W32x) If set enables the Memory Management buffers
  344.        4  Linear addressing if set
  345.           (4000) Video Memory is mapped as a 1 Meg block above 1MB.
  346.           (W32x) Video Memory is mapped as a 4MB block
  347.        5  ? Enable Tseng Addressing Mode
  348.           (W32x) If set enables Memory Mapped registers. Three MMU areas
  349.             exist. All accesses to these areas will be translated by the MMU
  350.             to find the resulting address in display memory (or if the access
  351.             is to the Accelerator data buffers). The translation happens by
  352.             adding the offset into the MMU area to the MMU base address.
  353.             In the standard VGA graphics modes (A0000h-AFFFFh VGA buffer) the
  354.             area B8000h-B9FFFh is MMU area 0, BA000h-BBFFFh is MMU area 1 and
  355.             BC000h-BDFFFh is MMU area 2.
  356.        6  16 bit data path (video memory) if set
  357.        7  16 bit data (I/O operations) if set
  358. Note: Access to video memory, the MMU buffers and the Memory Mapped registers
  359.       are controlled by bits 3-5, 3CEh index 6 bits 2-3 (MAP) and whether the
  360.       IMA port is enabled:
  361.           Bits                                      MMU
  362.          3 5 4 MAP    VGA mem          MMU 0-2     Size     Mem. Regs
  363.          0 0 0  0  A0000h- BFFFFh
  364.          0 0 0  1  A0000h- AFFFFh
  365.          0 0 0  2  B0000h- B7FFFh
  366.          0 0 0  3  B8000h- BFFFFh
  367.          1 0 0  0  A0000h- BFFFFh
  368.          1 0 0  1  A0000h- AFFFFh   B8000h- BDFFFh   8K
  369.          1 0 0  2  B0000h- B7FFFh   A8000h- ADFFFh   8K
  370.          1 0 0  3  B8000h- BFFFFh   A8000h- ADFFFh   8K
  371.          1 1 0  0  A0000h- BFFFFh
  372.          1 1 0  1  A0000h- AFFFFh   B8000h- BDFFFh   8K   BFF00h- BFFFFh
  373.          1 1 0  2  B0000h- B7FFFh   A8000h- ADFFFh   8K   AFF00h- AFFFFh
  374.          1 1 0  3  B8000h- BFFFFh   A8000h- ADFFFh   8K   AFF00h- AFFFFh
  375.  
  376.              IMA port enabled:
  377.          0 0 1  0  00000h-0FFFFFh
  378.          1 1 1  0  00000h-07FFFFh  080000h-0DFFFFh 128K  0FFF00h-0FFFFFh
  379.  
  380.              IMA port not enabled
  381.          0 0 1  0  00000h-3FFFFFh
  382.          1 1 1  0  00000h-1FFFFFh  200000h-37FFFFh 512K  3FFF00h-3FFFFFh
  383. Note: If Memory Mapped Registers are enabled (bit 5 set) The addresses
  384.       following the last MMU aperture appears to be mapped to "External Mapped
  385.       Registers". The size of this area is half the MMU size, I.e for the
  386.       standard VGA graphics mode (A0000h-AFFFFh VGA buffer) the External
  387.       Mapped Registers would be in the area: BE000h-BEFFFh
  388.  
  389. 3d4h index 37h (R/W): Video System Configuration 2
  390. bit  0-1  (4000) Bus width (VGA chip to video memory):
  391.                    1: 8 bit, 2: 16 bit, 3: 32 bit.
  392.        0  (W32x) Bus Width (VGA chip to video memory) 0: 16bit, 1: 32bit
  393.        2  (4000) Bus Read Latch control (0: Delay one clock before latching)
  394.           (W32x) If set the CAS signals are output on the CAS0-3 pins and the
  395.                  Write Enable signals are output on the MWA and MWB pins.
  396.                  If clear this is reversed.
  397.        3  (4000) Size of RAM chips. 0: 64Kx, 1: 256Kx
  398.           (W32x) Size of RAM chips. 0: 1Mx, 1: 256Kx (or 512Kx)
  399.           RAM size is (Chip size 64k/256k/1M) * (Bus Width 1/2/4 bytes)
  400.           For W32i/p multiply with 2 if interleaved (index 32h bit 7 set).
  401.           Note: Probably doesn't work for 512Kx DRAMs
  402.        4  16 bit ROM access if set, if clear 32bit in Local Bus systems, 8bit
  403.           for ISA and MicroChannel systems.
  404.        5  Priority Threshold Control. If clear increases the Memory bandwidth
  405.           but also increases the response time.
  406.        6  Enable test mode if set, should be clear
  407.        7  (4000) VRAM installed if set, DRAM if clear.
  408.  
  409. 3d4h index 3Fh (R/W):
  410. bit    0  Bit 8 of the Horizontal Total (3d4h index 0)
  411.        2  Bit 8 of the Horizontal Blank Start (3d4h index 3)
  412.        4  Bit 8 of the Horizontal Retrace Start (3d4h index 4)
  413.        7  Bit 8 of the CRTC offset register (3d4h index 13h).
  414.  
  415. 3DEh (W);  AT&T Mode Control Register
  416. bit    0  Set to double scanlines (200 -> 400)
  417.        2  Alternate Font Select
  418.        3  Alternate Page Select. If bit 0 is clear, selects the 16KB page to
  419.           display from
  420.        6  Underline Color Attribute. If set text with underline attribute is
  421.           shown with the white underline, if clear it is shown in blue
  422.           foreground color
  423. Note: To update this register the system must be in color mode (3CCh bit 0
  424.       set) and 3d4h index 34h bits 6 and 7 must be set as follows:
  425.          bit   0    3d4h index 34h bits 7 must be set
  426.              2,3    3d4h index 34h bits 7 must be set
  427.                6    3d4h index 34h bits 6 must be set
  428.  
  429. 3d8h (R/W): Display Mode Control
  430.  
  431.  
  432.  
  433.    ****  The memory mapped registers and index registers at 21xAh are only
  434.    present on the ET4000/W32 series chips, not on the ET3000 and ET4000s ****
  435.  
  436. 21xAh index E0h W(R/W):  CRTCB/Sprite Horizontal Pixel Position
  437. bit 0-11  The X position of the HardWare Cursor/CRTCB window in pixels from
  438.           the left edge of the display
  439. Note: The CRTCB/Sprite&IMA registers are at index 21xAh, where x is 0..7.
  440.       The index used by the chip is determined on powerup by the powerup/down
  441.       resistors tied to pin IOD0-2. All systems I have seen uses 217Ah.
  442. Note: The E0h-EFh indexes holds either the CRTCB or the Sprite (Cursor)
  443.       parameters depending on index EFh bit 0
  444.  
  445. 21xAh index E2h W(R/W):  CRTCB Width/Sprite Horizontal Preset
  446. bit 0-11  (CRTCB) The width in pixels (-1) of the CRTCB window
  447.      0-5  (Sprite) The pixel number (from the left) within the 64x64 cursor
  448.           bitmap of the first used pixel. The last pixel displayed is the 63th
  449.           pixel in the bitmap.
  450.  
  451. 21xAh index E4h W(R/W):  CRTCB/Sprite Vertical Pixel Position
  452. bit 0-11  The Vertical position of the CRTCB Window/Sprite (Cursor) in
  453.           scanlines from the top of the display
  454.  
  455. 21xAh index E6h W(R/W):  CRTCB Height/Sprite Vertical Preset
  456. bit 0-11  (CRTCB) The height in scanlines (-1) of the CRTCB window
  457.      0-5  (Sprite) The pixel number (from the top) within the 64x64 cursor
  458.           bitmap of the first used pixel. The last line displayed is line 63
  459.           of the bitmap.
  460.  
  461. 21xAh index E8 3(R/W):  CRTCB/Sprite Starting Address
  462. bit 0-19  The address in Video Memory of the start of the CRTCB/Sprite
  463.           (Cursor) BitMap.
  464.           In bytes in planar modes, and in DWORDs in packed modes.
  465. Note: The sprite data is a 64x64 2bit bitmap
  466.         0:  Sprite Color 0
  467.         1:  Sprite Color 1
  468.         2:  Transparent
  469.  
  470. 21xAh index EBh W(R/W):  CRTCB/Sprite Row Offset
  471. bit 0-11  Width of the each CRTCB/Sprite (Cursor) scanline. Should be 4 for
  472.           Sprite data. For the CRTCB window it is in bytes in planar modes and
  473.           DWORDs in packed modes
  474.    12-15  (R) Chip version. 0: W32, 1: W32i revA, 2: W32p revA, 3: W32i revB,
  475.                5: W32p revB, 6: W32p revD, 7: W32p rev C, 11: W32i rev C
  476.  
  477. 21xAh index EDh (R/W):  CRTCB Pixel Panning
  478. bit  0-2  Number of pixels to shift the CRTCB data left
  479.  
  480. 21xAh index EEh (R/W):  CRTCB Color Depth
  481. bit  0-3  The color depth (bits/pixel) of the CRTCB window data
  482.            0: 1bit/pixel, 1: 2b/p, 2: 4b/p, 3: 8b/p, 4: 16b/p
  483.      4-5  CRTCB Horizontal Zoom Factor. 0: x1, 1: x2, 2: x3, 3: x4
  484.      6-7  CRTCB Vertical Zoom Factor. 0: x1, 1: x2, 2: x3, 3: x4
  485.  
  486. 21xAh index EFh (R/W):  CRTCB/Sprite Control
  487. bit    0  If set selects the CRTCB window, if clear selects the Sprite
  488.        1  If set the CRTCB/Sprite is overlayed on the screen data, if clear it
  489.           is output on the SP0-1 pins
  490.        2  Sprite Size. 0: 64x64, 1: 128x128
  491. Note: 21xAh index F7h bit 7 must be set to enable the CRTCB window or the
  492.       Sprite (Cursor).
  493.  
  494. 21xAh index F0h 3(R/W):  Image Starting Address
  495. bit 0-19  Image port Storage address. In bytes in planar modes and in DWORDs
  496.           in packed modes. The data input from the IMA port is stored at this
  497.           address, starting anew for each frame
  498.  
  499. 21xAh index F3h W(R/W):  Image Transfer Length
  500. bit 0-11  The number of DWORDs to transfer per scan line
  501.  
  502. 21xAh index F5h W(R/W):  Image Row Offset
  503. bit 0-11  The number of DWORDs from the start of one scanline to the start of
  504.           the next scan line.
  505.  
  506. 21xAh index F7h (R/W):  Image Port Control
  507. bit    0  Set to enable the Image Port
  508.        1  Set to enable odd/even interlace transfers, clear for linear
  509.           transfers
  510.        7  Set to enable the CRTCB window or the HardWare Cursor (Sprite).
  511.  
  512. 46E8h (R):  Video Subsystem Enable Register
  513. bit   3  Enable VGA if set
  514.  
  515.  
  516. M+00h D(R/W): MMU Memory Base Pointer Register 0
  517. bit 0-21  The address in display memory where MMU Aperture 0 starts in bytes
  518.  
  519. M+04h D(R/W): MMU Memory Base Pointer Register 1
  520. bit 0-21  The address in display memory where MMU Aperture 1 starts in bytes
  521.  
  522. M+08h D(R/W): MMU Memory Base Pointer Register 2
  523. bit 0-21  The address in display memory where MMU Aperture 2 starts in bytes
  524.  
  525. M+13h (R/W):  MMU Control Register
  526. bit    0  If set accesses via MMU Aperture 0 go to the Accelerator registers
  527.        1  If set accesses via MMU Aperture 1 go to the Accelerator registers
  528.        2  If set accesses via MMU Aperture 2 go to the Accelerator registers
  529.        4  If set the memory accessed via MMU Aperture 0 is organised linearly
  530.           (As if 3C4h index 2 bits 0-3 = 0Fh, 3C4h index 4 bit 3 = 1, 3CEh
  531.            index 1 bits 0-3 = 0, 3CEh index 3 bits 0-4 = 0, 3CEh index 5 bits
  532.             0-1 and 3 = 0, 3CEh index 6 bit 1 = 0 and 3CEh index 8 = 0FFh),
  533.           if clear the memory is organised according to the current display
  534.           mode
  535.        5  Same as bit 4, but for MMU Aperture 1
  536.        6  Same as bit 4, but for MMU Aperture 2
  537.  
  538. M+30h (R/W):  ACL Suspend/Terminate Register
  539. bit    0  To suspend an Accelerator operation the programmer should set this
  540.           bit, wait for the ACL Status Register (Memory 36h) bit 0 to clear
  541.           and then clear this bit.
  542.        4  Same as bit 0, bit terminates the operation.
  543.  
  544. M+31h (W):  ACL Operation State Register
  545. bit    0  When set the contents of the Queued registers (Memory 80h-FFh) are
  546.           transfered to the accelerators internal registers
  547.        3  When set a paused screen-to-screen operation is resumed.
  548.        4  Should be set on startup for the W32p ??
  549.  
  550. M+32h (R/W):  ACL Sync Enable Register
  551. bit    0  If set a write to a "full" queue (Ie. the queued registers are being
  552.           transferred to the internal registers) will be delayed until the
  553.           transfer has completed, if clear the write will be ignored. An
  554.           interrupt can be generated in this situation.
  555.  
  556. M+33h (R?):  ACL Write Interface Valid Bits                   (W32p rev B + ?)
  557. bit    0
  558.  
  559. M+34h (R/W):  ACL Interrupt Mask Register
  560. bit    0  Write Interrupt Enable. If set generates an interrupt when the queue
  561.           is next not-full (I.e. wake me when the transfer has completed).
  562.           Clear this bit to clear the resulting interrupt.
  563.        1  Read Interrupt Enable.
  564.        2  Write Fault Interrupt Enable.
  565.  
  566. M+35h (R/W):  ACL Interrupt Status Register
  567. bit    0  (R) If set a Write Interrupt is pending
  568.        1  If set a Read Interrupt is pending. Set the bit to clear the
  569.           Interrupt condition.
  570.        2  If set a Write Fault Interrupt is pending. Set the bit to clear the
  571.           Interrupt condition.
  572.  
  573. M+36h (R/W):  ACL Accelerator Status Register
  574. bit    0  (R) Write Status (WRST). If set the accelerators queue is full and
  575.           cannot accept further writes to the queued registers
  576.        1  (R) Read Status (RDST). If set the Accelerator is busy or the queue
  577.           is not empty
  578.        2  XY Status (XYST). If set the Accelerator is processing an X/Y block,
  579.           I.e. the internal XPOS/YPOS have not yet stabilised. When a
  580.           suspended operation is restored this bit must also be restored
  581.        3  (R) Screen-to Screen Status (SSO). Set if the current Accelerator
  582.           operation is screen-to-screen. This bit is only valid if bit 2 is
  583.           set
  584.        4  (R) Queue Modified Status (QMOD). If set a queued register has been
  585.           written since the last accelerator operation was started.
  586.        6  (W32p rev B +) Accelerator Pipeline not empty.
  587.        7  (W32p rev B +) Accelerator Data Ready Status. If set data waiting
  588.            for the host to read.
  589.  
  590. M+38h W(R/W):  ACL X Position Register                             (W32p only)
  591. bit 0-11  The accelerators current X position
  592. Note: this register is at offset 94h in the W32 and W32i
  593.  
  594. M+3Ah W(R/W):  ACL Y Position Register                             (W32p only)
  595. bit 0-11  The accelerators current Y position
  596. Note: this register is at offset 96h in the W32 and W32i
  597.  
  598. M+80h D(R/W):  ACL Pattern Address Register
  599. bit 0-21  The byte address in display memory of the Pattern Map
  600.  
  601. M+84h D(R/W):  ACL Source Address Register
  602. bit 0-21  The byte address in display memory of the Source Map
  603.  
  604. M+88h W(R/W):  ACL Pattern Y Offset Register
  605. bit 0-11  The number of bytes (-1) between lines in the pattern
  606.  
  607. M+8Ah W(R/W):  ACL Source Y Offset Register
  608. bit 0-11  The number of bytes (-1) between lines in the source
  609.  
  610. M+8Ch W(R/W):  ACL Destination Y Offset Register
  611. bit 0-11  The number of bytes (-1) between lines in the destination
  612.  
  613. M+8Eh (R/W):  ACL Virtual Bus Size Register                    (W32,W32i only)
  614. bit  0-1  Virtual Bus Size (VBS). When the host provides Source Map or Mix Map
  615.           data this is the number of bytes handled at a time. The number of
  616.           bytes transferred must be rounded up to an integral multiplum of
  617.           this number. 0: 1byte, 1: 2bytes, 2: 4bytes
  618.  
  619. M+8Eh (R/W):  ACL Pixel Depth Register                             (W32p only)
  620. bit  0-?  Pixel depth. 0: 1 byte per pixel, 1: 2 bytes per pixel
  621.  
  622. M+8Fh (R/W):  ACL X/Y Direction Register
  623. bit    0  X Direction. If set the accelerator moves from high to low addresses
  624.           (right -> left), if clear from low to high (left -> right)
  625.        1  Y Direction. If set the accelerator moves from high to low addresses
  626.           (down -> up), if clear from low to high (up -> down)
  627.      0-2  (W32p) Axial Direction for linedraw
  628.        4  (W32p) Line Draw Algorithm.
  629.        5  (W32p) LETQ Load Error Term. If set the internal Bresenham Error
  630.            term is loaded from the ACL Error Term register (M+AAh) (used for
  631.            clipping), if clear it is automatically calculated from the ACL
  632.            Delta Major register (M+AEh) at the start of the line draw.
  633.        7  (W32p) Graphics Opcode. 0 for BitBLT, 1 for linedraw
  634.  
  635. M+90h (R/W):  ACL Pattern Wrap Register
  636. bit  0-2  Pattern X Wrap. The pattern Map will wrap back to the start when
  637.           this number of bytes have been processed.
  638.            2: 4bytes, 3: 8bytes, 4: 16bytes, 5: 32bytes, 6: 64bytes, 7:never
  639.      4-6  Pattern Y Wrap. The pattern Map will wrap back to the start when
  640.           this number of lines have been processed.
  641.            0: 1 line, 1: 2 lines, 2: 4 lines, 3: 8 lines, 7: never
  642.  
  643. M+92h (R/W):  ACL Source Wrap Register
  644. bit  0-2  Source X Wrap. The Source Map will wrap back to the start when
  645.           this number of bytes have been processed.
  646.            2: 4bytes, 3: 8bytes, 4: 16bytes, 5: 32bytes, 6: 64bytes, 7:never
  647.      4-6  Source Y Wrap. The Source Map will wrap back to the start when
  648.           this number of lines have been processed.
  649.            0: 1 line, 1: 2 lines, 2: 4 lines, 3: 8 lines, 7: never
  650.  
  651. M+94h W(R/W):  ACL X Position Register                         (W32,W32i only)
  652. bit 0-11  The accelerators current X position
  653. Note this register is at offset 38h in the W32p
  654.  
  655. M+96h W(R/W):  ACL Y Position Register                         (W32,W32i only)
  656. bit 0-11  The accelerators current Y position
  657. Note this register is at offset 3Ah in the W32p
  658.  
  659. M+98h W(R/W):  ACL X Count Register
  660. bit 0-11  The number of bytes (-1) in the blit area horizontally. For 15/16/24
  661.           bpp modes the number of bytes is the number of pixels * 2/3/4
  662.           depending on the mode.
  663.  
  664. M+9Ah W(R/W):  ACL Y Count Register
  665. bit 0-11  The number of lines (-1) in the blit area vertically
  666.  
  667. M+9Ch (R/W):  ACL Routing Control Register
  668. bit  0-2  Routing of CPU Data (DARO).
  669.             0: CPU data not used
  670.             1: CPU data is Source data
  671.             2: CPU data is Mix data
  672.             4: CPU data is X Count
  673.             5: CPU data is Y Count
  674.        3  (W32p) MixMap Enable (MXEN). If set mixed data is display data, if
  675.            clear mixed data is 1. Only used if bits 0-2 are 0 or 1.
  676.      4-5  Routing of CPU Address (ADRO).
  677.             0: CPU address not used. Only the first write to an accelerated
  678.                MMU Aperture is used as the destination address
  679.             1: CPU address is Destination address
  680.        6  (W32p) Routing of Accelerator data.
  681.        7  (W32p) Invalidate disable
  682.  
  683. M+9Dh (R/W):  ACL Reload Control Register
  684. bit    0  If set the resulting Source Address from the last operation is used
  685.           as the new starting Source Address, if clear the address programmed
  686.           in the ACL Source Address Register (M+84h).
  687.        1  If set the resulting Pattern Address from the last operation is used
  688.           as the new starting Pattern Address, if clear the address programmed
  689.           in the ACL Pattern Address Register (M+80h).
  690.  
  691. M+9Eh (R/W):  ACL Background Raster Operation Register
  692. bit  0-7  The Background Raster Operation
  693.  
  694. M+9Fh (R/W):  ACL Foreground Raster Operation Register
  695. bit  0-7  The Foreground Raster Operation
  696.  
  697. M+A0h D(R/W):  ACL Destination Address Register
  698. bit 0-21  The byte address in display memory of the Destination Map
  699.           The Destination address can also be set by writing via a MMU
  700.           Aperture with the APT bit set. Then the address (after MMU
  701.           translation) is used as the Destination address and the Accelerator
  702.           operation is started. Reading this register returns the accelerator
  703.           internal Destination address
  704.  
  705. M+A4h D(R):  ACL Internal Pattern Address Register             (W32,W32i only)
  706. bit 0-21  The accelerator internal Pattern Address
  707.  
  708. M+A4h D(R):  ACL Mix Address Register                    (W32p rev A & B only)
  709. bit 0-24  Address of the Mix map in display memory. The Mix map has one bit
  710.           for each byte processed by any other map
  711.  
  712. M+A8h D(R):  ACL Internal Source Address Register              (W32,W32i only)
  713. bit 0-21  The accelerator internal Source Address
  714.  
  715. M+A8h W(R):  ACL Mix Y Offset Register                             (W32p only)
  716. bit 0-11  Number of bits (-1) per scan line in the Mix map.
  717.  
  718. M+AAh W(R):  ACL Error Term Register                               (W32p only)
  719. bit 0-15  Bresenham linedraw error term. Only used if ACL X/Y Direction
  720.           Register (M+8Fh) bit 5 is set. Usually this is automatically
  721.           calculated from the ACL Delta Major register (M+AEh), however for
  722.           restoring a suspended operation or for clipping of the line this
  723.           register can be used for direct control.
  724.  
  725. M+ACh W(R/W):  ACL Delta Minor                                     (W32p only)
  726. bit  0-?  Bresenham linedraw length of the minor axis. min(abs(dX),abs(dY))
  727.  
  728. M+AEh W(R/W):  ACL Delta Major                                     (W32p only)
  729. bit  0-?  Bresenham linedraw length of the major axis. max(abs(dX),abs(dY))
  730.           Where dX and dY are the distances in the X and Y directions.
  731.  
  732.  
  733.   **** The PCI Interfece registers are only present on the W32p ****
  734.  
  735. Byte 00h W(R):  Vendor ID
  736. bit  0-15  100Ch for Tseng Labs
  737.  
  738. Byte 02h W(R):  Device ID
  739. bit   0-3  Revision ID. Same as 210Ah index ECh bits 4-7. Also same as Byte 8.
  740.      4-15  Device ID. 320h for all ET4000/W32p's
  741.  
  742. Byte 04h W(R/W):  Command Register
  743. bit     0  I/O Space. If set the device may respond to I/O accesses
  744.         1  Memory Space. If set the device may respond to memory accesses
  745.         2  Reserved(0)
  746.         3  Special cycles. If set the device is allowed to monitor special
  747.            cycles
  748.         4  Reserved(0)
  749.         5  VGA Palette snoop. If set VGA palette snooping is enabled and the
  750.            DAC can not respond to writes. If clear the DAC operates normally
  751.         6  Parity error. If set the device responds to parity errors, if clear
  752.            they are ignored. Must be reset to 0. The device will (and must)
  753.            generate parity even when parity errors are disabled.
  754.         7  Wait cycle control. If set address/data stepping is enabled
  755.         8  System error driver. If set the system error driver reports parity
  756.            errors, if clear it is disconnected.
  757.         9  Reserved(0)
  758.  
  759. Byte 06h W(R/W):  Device Status Register
  760. bit     8  Bus Master
  761.      9-10  (R) Device Select Timing. Timing of DEVSEL#. 0: fast, 1: medium,
  762.             2: slow
  763.        11  Device Target-abort.
  764. Note: The bits are set when the corresponding event occurs, and are reset when
  765.       a one (1) is written to the bit.
  766.  
  767. Byte 08h (R):  Revision ID
  768. bit   0-7  Revision ID. Same as 210Ah index ECh bits 4-7. Also same as Byte 2
  769.            bits 0-3.
  770.  
  771. Byte 09h 3(R):  Class Code
  772. bit  0-23  30000h for a VGA compatible display controller
  773.  
  774. Byte 10h D(R/W):  Base Address Register
  775. bit 24-31 Selects the 16MB area where the Linear Aperture resides (A24-31 =
  776.           these bits) when enabled.
  777.  
  778. Byte 30h D(R/W):  Expansion ROM Address
  779. bit     0  If set the ROM is enabled, if clear it is disabled
  780.      1-27  Reserved(0)
  781.     28-31  (rev A,B) Reserved (0)
  782.            (rev C +) Selects the 256MB area where the ROM resides (A28-31 =
  783.              these bits).
  784. Note: when bit 1-31 is 0 the ROM is at C0000h, else it is replicated every 32K
  785.       within the 256MB area (if enabled).
  786.  
  787. Byte 3Ch (R/W):  Interrupt Line
  788. bit   0-3  (rev A)  Reserved (all 1)
  789.            (rev B +) Input to the system interrupt controller ??
  790.       4-7  (rev A,B) Reserved (all 1)
  791.            (rev C +) Reserved (0)
  792.  
  793. Byte 3Dh (R):  Interrupt Pin
  794.  
  795.  
  796.   Bank Switching:
  797.  
  798.     64k banks are selected by the Segment Select Register at 3CDh.
  799.     Both a Read and a Write segment can be selected.
  800.     For the W32 series extra bank bits are in 3CBh
  801.  
  802.   Hardware Zoom (ET3000 Only).
  803.  
  804.    The ET3000 can zoom a part of display memory in a window.
  805.    The display memory position and window position are selected by 3d4h index
  806.    1Bh to 21h.
  807.  
  808.  
  809.   Identify Tseng Chipset:
  810.  
  811.   outp($3BF,3);
  812.   outp($3D8,$A0);   {Enable ET4000 extensions}
  813.   if tstrg($3CD,$3F) then
  814.     if testinx2(base,$33,$F) then
  815.       if tstrg($3CB,$33) then
  816.         case rdinx($217A,$EC) shr 4 of
  817.           0:Tseng ET4000W32
  818.           3:Tseng ET4000W32i
  819.           2:Tseng ET4000W32p    {Not quite sure yet}
  820.         end
  821.       else Tseng 4000
  822.     else Tseng 3000;
  823.  
  824. Memory:     (Tseng BIOS version 3.00 and up)
  825. 0:488h  BYTE  Bit 4  High bit of the 1024x768 mode flag
  826.                       0: 87Hz interlaced, 1: 60Hz, 2: 72Hz, 3: 70Hz
  827.                   5  High bit of 800x600 mode flag
  828.                       0: 60Hz, 1: 56Hz, 2: 72Hz
  829.                   6  If set 640x480 is 72Hz, else 60Hz
  830. 0:489h  BYTE  Bit 5  Low bit of the 1024x768 mode flag
  831.                   6  Low bit of the 800x600 flag
  832.  
  833.  
  834.  
  835.   Video Modes:
  836.      8   T   132   25   2                   (STB only)
  837.      Ah  T   132   44   2
  838.     18h  T   132   44   4  (8x8)   B000
  839.     19h  T   132   25   4  (9x14)  B000
  840.     1Ah  T   132   28   4  (9x13)  B000
  841.     22h  T   132   44  16  (8x8)
  842.     23h  T   132   25  16  (8x14)
  843.     24h  T   132   28  16  (8x13)
  844.     25h  G   640  480  16  planar
  845.     26h  T    80   60  16  (8x8)
  846.     27h  G   720  512  16  PL4        (Tseng recommended, few boards)
  847.     29h  G   800  600  16  PL4
  848.     2Ah  T   100   40  16  PL4
  849.     2Dh  G   640  350 256  P8
  850.     2Eh  G   640  480 256  P8
  851.     2Fh  G   640  400 256  P8         (ET4000 Only)
  852.     2Fh  G   720  512 256  P8         (Tseng recommended, few boards)
  853.     30h  G   800  600 256  P8
  854.     36h  G   960  720  16  PL4        (STB only)
  855.     37h  G  1024  768  16  PL4
  856.     38h  G  1024  768 256  P8         (ET4000 Only)
  857.     3Dh  G  1280 1024  16  PL4        (newer ET4000s)
  858.     3Eh  G  1280  960  16  PL4        (Definicon)
  859.     3Fh  G  1280 1024 256  P8
  860.     6Ah  G   800  600  16  PL4        Newer ET4000s
  861.  
  862.    BIOS extensions  (Tseng 4000 Sierra HiColor DAC):
  863.  
  864. ----------1010E0-----------------------------
  865. INT 10 - VIDEO - SpeedStar 24 - Set TrueColor Graphics Mode
  866.         AX = 10E0h
  867.         BL = 2Eh
  868. Return: AX = 0010h if successful
  869.              other on error
  870. Enters 24bit 640x480 mode if SS24 DAC present.
  871. Video memory is NOT cleared.
  872. Each line uses 2048 bytes with only 640x3=1920 bytes actually used.
  873. So that a line can never cross a 64K border.
  874. ----------1010F0-----------------------------
  875. INT 10 - VIDEO - Tseng ET-4000 BIOS - Set HiColor Graphics Mode
  876.         AX = 10F0h
  877.         BL = video mode (see also AH=00h)
  878.              32768-color modes:
  879.                    13h =  320x200
  880.                    2Dh =  640x350
  881.                    2Eh =  640x480
  882.                    2Fh =  640x400
  883.                    30h =  800x600
  884.                    38h = 1024x768
  885.              16M color modes:
  886.                    3Eh = 640x480   (Genoa 7900)
  887.         BX =     2DFFh = 640x350   (MEGAVGA/2)
  888.                  2EFFh = 640x480   (MEGAVGA/2)
  889.                  2FFFh = 640x400   (MEGAVGA/2)
  890. Return: AX = 0010h if successful
  891.              other on error
  892. ----------1010F1-----------------------------
  893. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET DAC TYPE
  894.         AX = 10F1h
  895. Return: AX = 0010h if successful, errorcode if not
  896.         BL = type of digital/analog converter
  897.              00h normal VGA DAC
  898.              01h Sierra SC11481/6/8 HiColor DAC
  899.  
  900.          (Diamond SpeedStar 24:)
  901.              02h SS24 DAC (MUSIC MU9c1880)
  902.  
  903.          (Tseng generic BIOS rev 8.00 or later:)
  904.              02h Sierra Mark2 (15-bit) or Mark3 (15/16-bit) DAC
  905.              03h ATT20c490/1/2 & Winbond 490/491 15/16/24 bit HiColor DAC
  906.              04h AcuMos ADAC1 & CL-GD5200 (15/16/24 bit)
  907.              05h Sierra SC15025/26 (15/16/24 bit DAC)
  908.              06h Cirrus Internal 15/16/24 bit DAC (from CL-GD54xx series).
  909.              07h Diamond SS2410 & MUSIC MU9C1880. (15/16/24 bit).
  910.              08h Music MU9c4910/9910 (15/16/24 bit DAC).
  911.              09h Brooktree Bt481/482
  912.              20h SGS-Thompson STG1700
  913.              21h SC15021
  914.              22h AT&T 20c498
  915.              23h ICS 5340/5341
  916.              24h STG1702/3
  917.              25h Chrontel CH8398
  918. ----------1010F2-----------------------------
  919. INT 10 - VIDEO - Tseng ET-4000 BIOS - GET/SET HiColor MODE
  920.         AX = 10F2h
  921.         BL = 00h  Get current HiColor mode
  922.              01h  Set 15bit HiColor mode
  923.              02h  Set 16bit HiColor mode
  924. Return: AX = 0010h if successful, errorcode if not
  925.         BL = Current HiColor mode:
  926.              00h  Not in HiColor mode or not a HiColor DAC
  927.              01h  15-bit RGB mode
  928.              02h  16-bit RGB mode
  929.              03h  24-bit RGB mode
  930. Note: Set HiColor mode (BL=1 or 2) only works if already in some HiColor mode.
  931. ----------101D-------------------------------
  932. INT 10 - VIDEO - SpeedSTAR Plus BIOS v4.23+ - SET SYNC PARAMETERS
  933.         AH = 1Dh
  934.         AL = Video Mode
  935.         ES = Caller's segment
  936. Note: The caller's segment contains a table at offset 5Ch or 100h
  937. Offset    Size    Description
  938.  00h    9 BYTEs   ID string 'ey5CENTER'
  939.  09h    5 BYTEs   sync parameters for 640x480 modes 11h,12h,25h,26h,2Eh
  940.  0Eh    5 BYTEs   sync parameters for 800x600 modes 29h,30h,2Ah
  941.  13h    5 BYTEs   sync parameters for 1024x768 modes 37h, 38h
  942. ----------101DAA-----------------------------
  943. INT 10 - VIDEO - Diamond SpeedSTAR - CHECK FOR SPEEDSTAR
  944.         AX = 1DAAh
  945.         BX = FDECh
  946. Return: BX = DECFh if found
  947.         AL = AH = DACtype:
  948.                     00h  Standard VGA DAC
  949.                     01h  Highcolor DAC with command bit 3 not writable
  950.                          (Sierra "Mark 1" - SC11481/6/8)
  951.                     02h  SS2410 DAC
  952.                     05h  Highcolor DAC with command bit 3 writable (Sierra
  953.                          "Mark 2/3" - SC11482/3/4/5/7/9)
  954.         SI:DI -> BIOS version & Copyright string
  955.  
  956.  
  957.  
  958.  
  959. Notes:
  960.   The sequence:
  961.  
  962.       port[$3BF]:=3;
  963.       port[$3D8]:=$A0;
  964.  
  965. is needed to enable the extensions in the Tseng 3000/4000.
  966. Most BIOSes do this by default, but some such as the Sigma VGA Legend
  967. requires this sequence.
  968.