home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / doc / graphdoc / s3.txt < prev    next >
Text File  |  1994-01-18  |  11KB  |  307 lines

  1. The entire S3 family are basically 8514/As with a VGA front-end.
  2. Hardwired Bit-Blt, fill and line drawfunctions. 
  3.  
  4.  
  5.   S3  86c911  -  1Mbyte, 1280x1024x16c, 1024x768x256c, 640x480x32kc
  6.   S3  86c911A -  Same as 924??. Corrects a bug in 1280 modes.
  7.   S3  86c924  -  Support for 24-bit modes.
  8.   S3  86c928  -  24bit color, 4MB D/VRAM 
  9.   S3  86c801  -  similar to '928, but limited to 2MB
  10.   S3  86c805  -  same as '801 but for Local Bus
  11.  
  12.   S3  86c964     New VRAM 64bit chip. Max 8MB (1600x1200 32bit)
  13.   S3  86c864     Same as 964 with DRAM.
  14.  
  15.  
  16.   The S3 chip only works in AT and better units as it uses full
  17.   16 bit I/O addresses.
  18.  
  19.   The S3 uses the following I/O addresses:
  20.      42E8h, 4AE8h, 82E8h, 86E8h, 8AE8h, 8EE8h, 92E8h, 96E8h, 9AE8h, 9EE8h
  21.  
  22.   Please note that this may conflict with Com4 ports at 2E8h-2EFh !!!
  23.   The accelerator part of the S3 is similar to the 8514/A.
  24.  
  25.  
  26. 3d4h index 0Eh (R/W):
  27. This appears to be the Hardware cursor ForeGround color ??
  28.  
  29. 3d4h index 0Fh (R/W):
  30. This appears to be the Hardware cursor background color ??
  31.  
  32. 3d4h index 30h (R/W): ID register
  33. bit 0-7  Chip ID:
  34.             81h  86c911
  35.             82h  86c911A/924
  36.             90h  86c928 C
  37.             91h  86c928 D
  38.         94h,95h  86c928 E
  39.             A0h  86c801/805 A or B
  40.         A2h-A4h  86c801/805 C
  41.             A5h  86c801/805 D
  42.             B0h  86c928PCI
  43.  
  44. 3d4h index 31h (R/W): Display Start
  45. bit   0  Set before writing bank register???
  46.       3  Set to enable access to video memory above 256k.
  47.     4-5  Bit 16-17 of the Display Start Address.
  48.  
  49. 3d4h index 32h (R/W):
  50.  
  51. 3d4h index 33h (R/W):
  52.  
  53. 3d4h index 34h (R/W): 
  54. bit   0  Set if address is multiplied with 4 (16color modes ?)
  55.       4  Set if 1024 bytes (pixels ?) wide screen
  56.  
  57. 3d4h index 35h (R/W): Bank number
  58. bit 0-3  64k bank number.
  59.  
  60. 3d4h index 36h (R/W):  Configuration Register 1
  61. bit 0-1  (801,805 & 928)  Bus width. 0=32bit EISA ,1=32bit Local Bus,
  62.               2=~bits (8??), 3=16bits ISA.
  63.       5  (911,924) Video memory. 0: 1Mb, 1: 512Kb
  64.     5-6  (801,805 & 928)  Video memory. 0=2Mb, 2=1Mb, 3=512Kb.
  65.  
  66. Another source gives:
  67.       5  Set if only 512Kb, clear if more (1MB for 911,924)
  68.     6-7  (801,805,928) Video Memory:  0: 4MB, 1: 3MB, 2: 2MB, 3: 1MB
  69.  
  70. 3d4h index 38h (R/W): Extensions Enable
  71. bit 0-7  Writing 48h to this register enables the extended registers,
  72.          writing 0 disables them.
  73.  
  74. 3d4h index 39h (R/W): Extensions Enable 2
  75. bit 0-7  Write A5h to this register to unlock extensions.
  76.          Write 5Ah to disable
  77.  
  78. 3d4h index 3Ah (R/W):
  79. bit   3  Clear to reset dual display ??
  80.       7  (801,805,928) If set MEMCS16 is 16bits, else 8 bits.
  81.  
  82. 3d4h index 3Bh (R/W):
  83.  
  84. 3d4h index 3Ch (R/W):
  85. bit 0-7  Interlace mode frame offset (Typically half the horizontal total).
  86.  
  87. 3d4h index 40h (R/W):
  88. bit   0  If set enables 8514/a mode ??
  89.       3  (801,805 & 928)  If set Fast Write Buffer is ON.
  90.       6  (801,805 & 928)  If set Zero Waitstate is OFF (only valid if EISA
  91.                           bus).
  92.  
  93. 3d4h index 41h (R/W): Memory
  94. bit   4  Set if we have 1MByte, clear if we have 512KBytes.
  95.       6  Dual Display VGA test size. Set for 32K, clear for 64K
  96.          Note: this might be reversed for 80x/928 ????
  97.       7  Set to enable dual display
  98.  
  99. 3d4h index 42h (R/W):
  100. bit  0-1  I/O bits. on #9 cards connected to the ICD2061A clock chip
  101.      0-?  Clock Select bit 0-? (Really same as above, but different clock
  102.           hardware and pins).
  103.        5  If set mode is interlaced.
  104.  
  105. 3d4h index 43h (R/W):
  106. bit   1  This bit is output to the palette chip RS2 pin, which on advanced
  107.          DACs works as a 3rd address bit to the DAC registers at 3C6h-3C9h.
  108.       2  Bit 8 of the Display Offset Register (3d4h index 13h).
  109.       4  If set the '8514' registers use alternate addresses (x148h, x548h,
  110.          x948h and xD48h), if clear standard addresses (x2E8h, x6E8h, xAE8h
  111.          and xEE8h).
  112.       7  If set character clocks are 16 pixels wide rather than 8.
  113.  
  114. 3d4h index 45h (R/W):
  115. bit   0  Set to enable the HardWare Cursor.
  116.       1
  117.  
  118. 3d4h index 46h (R/W):  Cursor X-position high
  119. bit 0-7  Upper 8 bits of the HardWare Cursor X position.
  120.          Lower 8 bits are in index 47h. For 64k modes this value should be
  121.          twice the actual X co-ordinate.
  122.  
  123. 3d4h index 47h (R/W):  Cursor X-position low
  124. bit 0-7  Lower 8 bits of the HardWare Cursor X position.
  125.          Upper bits are in index 46h
  126.  
  127. 3d4h index 48h (R/W):  Cursor Y-position high
  128. bit 0-7  Upper 8 bits of the HardWare Cursor Y position.
  129.          Lower 8 bits are in index 49h
  130.  
  131. 3d4h index 49h (R/W):  Cursor Y-position low
  132. bit 0-7  Lower 8 bits of the HardWare Cursor Y position.
  133.          Upper bits are in index 48h
  134.  
  135. 3d4h index 4Ah (R/W):
  136.  
  137. 3d4h index 4Bh (R/W):
  138.  
  139. 3d4h index 4Ch (R/W):  Cursor Address high
  140. bit 0-7  Upper 8 bits of the address of the HardWare Cursor Map in units of
  141.          1024 bytes (256 bytes for planar modes). Lower bits are in index 4Dh
  142.          The cursor map is a 64x64 bitmap with 2 bits (A and B) per pixel.
  143.          The map is stored as one word (16 bits) of bit A, followed by one
  144.          word with the corresponding 16 B bits.
  145.          The bits are interpreted as:
  146.             A    B    Result
  147.             0    x    These results in a solid color (typically black or
  148.                       white), but the origin of the color is as yet
  149.                       undetermined. Probably connected to index 4Ah and 4Bh.
  150.             1    0    The screen data (transparent cursor)
  151.             1    1    The inverted screen data (XOR cursor)
  152.          For 64k color modes the cursor is stored as one byte (8 bits) of A
  153.          bits, followed by the 8 B-bits, and each bit in the cursor should be
  154.          doubled to provide a consistent cursor image.
  155.          3d4h index Eh and Fh appears to be the cursor fore & background color
  156.  
  157. 3d4h index 4Dh (R/W):  Cursor Address low
  158. bit 0-7  Lower 8 bits of the address of the HardWare Cursor Map.
  159.          Upper bits are in index 4Ch
  160.  
  161. 3d4h index 4Eh (R/W):  Cursor Hot-spot X
  162.  
  163. 3d4h index 4Fh (R/W):  Cursor Hot-spot Y
  164.  
  165. 3d4h index 50h (R/W):                                       (801/5 & 928 only)
  166. bit 6-7  Display width. 0: 1024, 1: 640, 2: 800, 3: 1280
  167.  
  168. 3d4h index 51h (R/W):                                       (801/5 & 928 only)
  169. bit   0  Display start address bit 18. bit 16-17 are in index 31h.
  170.     2-3  Bank register bits 4-5. Bits 0-3 are in 3d4h index 35h.
  171. Note: both index 38h and 39h must be enabled to access this register.
  172.  
  173. 3d4h index 53h (R/W):                                       (801/5 & 928 only)
  174. bit   4  Set to enable memory mapped registers
  175.  
  176. 3d4h index 55h (R/W):
  177. bit 0-1  Passed to the RS2 and RS3 pins on the RAMDAC, allowing access to all
  178.          8/16 registers on advanced RAMDACs.
  179.  
  180. 3d4h index 58h (R/W):  Linear Aperture Options
  181. bit   2
  182.  
  183. 3d4h index 59h (R/W):                                       (801/5 & 928 only)
  184. bit 0-1  Linear Memory Address bit 8-9. Bits 0-7 are in index 5Ah
  185.  
  186. 3d4h index 5Ah (R/W):                                       (801/5 & 928 only)
  187. bit 0-7  Linear Memory Address bit 0-7. Bits 8-9 are in index 59h.
  188.          This is the address the Video Memory is mapped at in 4MB units.
  189.  
  190. 3d4h index 5Eh (R/W):                                       (801/5 & 928 only)
  191. bit   0  Vertical Total bit 10h (3d4h index 6).
  192.       1  Vertical Display End bit 10h (3d4h index 12h).
  193.       2  Vertical Sync Start bit 10h (3d4h index 10h).
  194.  
  195.  
  196.   3d4h index 30h-3Ch and 40h-4Fh are used.
  197.   3d4h index 50h-63h are used in the 801/805/928.
  198.  
  199.   82E8h (16) (R/W): CUR_Y
  200.   86E8h (16) (R/W): CUR_X
  201.   8AE8h (16) (R/W): DIAGY_STEP
  202.   8EE8h (16) (R/W): DIAGX_STEP
  203.   92E8h (16) (R/W): ERR_TERM
  204.   96E8h (16) (R/W): MAJ_AXIS/CURWIDTH
  205.   9AE8h (16) (W): CMD_REG
  206.   9AE8h (16) (R): GP_STAT
  207.   bit    8  Set when data is ready from the co-processor.
  208.  
  209.   A2E8h (16) (R/W): BKGD_COLOR
  210.   A6E8h (16) (R/W): FRGD_COLOR
  211.   AAE8h (16) (R/W): WRT_MASK
  212.   B2E8h (16) (R/W): COLOR_CMP
  213.   B6E8h (16) (R/W): BKGD_MIX
  214.   BAE8h (16) (R/W): FRGD_MIX
  215.   BEE8h (16) (R/W): MULTIFUNC_CNTL
  216.   E2E8h (16) (R/W): PIX_TRANS
  217.  
  218.  
  219.   ID S3 chip:
  220.  
  221.   wrinx(base,$38,0);    {disable extensions}
  222.   if not testinx2(base,$35,$F) then
  223.   begin
  224.     wrinx(base,$38,$48);
  225.     if testinx2(base,$35,$F) then
  226.     begin
  227.       __S3__
  228.       case rdinx(base,$30) of
  229.        $81:86c911
  230.        $82:86c911A or 86c924
  231.        $90:86c928 C
  232.        $91:86c928 D
  233.    $94,$95:86c928 E
  234.        $A0:86c801/5 A or B
  235.   $A2..$A4:86c801/5 C
  236.        $A5:86c801/5 D
  237.        $B0:86c928 PCI
  238.       end;
  239.     end;
  240.   end;
  241.  
  242.  
  243.   Video Modes (Diamond Stealth):
  244.        VESA:
  245.   54h        T  132   43   16
  246.   55h        T  132   25   16  
  247.        101h  G  640  480  256  P8
  248.   6Ah  102h  G  800  600   16  PL4
  249.        103h  G  800  600  256  P8
  250.        104h  G 1024  768   16  PL4
  251.        205h  G 1024  768  256  P8
  252.        206h  G 1280  960   16  PL4
  253.        208h  G 1280 1024   16  PL4
  254.        211h  G  640  480  64K  P16     Stealth 24 only
  255.        212h  G  640  480  16M  P24     Stealth 24 only
  256.        301h  G  640  480  32k  P15
  257.  
  258. ----------101DAA-------------------------------
  259. INT 10 - VIDEO - Diamond Stealth - Check for Stealth
  260.         AX = 1DAAh
  261.         BX = FDECh
  262. Return: AL = 01h  For Stealth VRAM
  263.              02h  For Stealth 24
  264.         AH = DACtype:
  265.                00h  Standard VGA DAC
  266.                11h  Highcolor DAC where bit 3 of the command register is
  267.                     not writable.
  268.                23h  SS2410 DAC
  269.                33h  Highcolor DAC without RS2 decoding
  270.                43h  Highcolor DAC with RS2 decoding
  271.         SI:DI -> BIOS version & Copyright string
  272. ----------104FFF-----------------------------------
  273. INT 10 - VIDEO - S3                 - SET/RESET DUAL DISPLAY MODE
  274.         AX = 4FFFh
  275.         BX = Dual display mode
  276.               00h  Reset
  277.               01h  Set dual display, 32KB VGA test
  278.               02h  Set dual display, 64KB VGA test
  279. ----------107F-------------------------------------
  280. INT 10 - VIDEO - Diamond Stealth/Stealth 24 - SET TEXT MODE
  281.         AH = 7Fh
  282.         BH = 00h  Set Color text mode
  283.              01h  Set Color text mode
  284.              02h  Set Monochrome text mode
  285. Note: Actually only bit 0-1 of BH are tested.
  286. ----------107F00-4000------------------------------
  287. INT 10 - VIDEO - S3 80x/928 - GET S3 INFORMATION BLOCK
  288.         AX = 7F00h
  289.         BX = 4000h
  290. Return: AX = 007Fh if supported
  291.         DX:BX -> DAC set mode rutine
  292. Note: Might be implemented in Diamond Stealth 24 with BIOS version > 3.33
  293. ----------107F00-4001------------------------------
  294. INT 10 - VIDEO - S3 80x/928 - GET LINEAR ADDRESS
  295.         AX = 7F00h
  296.         BX = 4001h
  297. Return: AX = 007Fh if supported
  298.         CX = current linear address base (high word)
  299. Note: Might be implemented in Diamond Stealth 24 with BIOS version > 3.33
  300. ----------107F00-4002------------------------------
  301. INT 10 - VIDEO - S3 80x/928 - SET LINEAR ADDRESS
  302.         AX = 7F00h
  303.         BX = 4002h
  304.         CX = new linear address base (high word)
  305. Return: AX = 007Fh if supported
  306. Note: Might be implemented in Diamond Stealth 24 with BIOS version > 3.33
  307.