The entire S3 family are basically 8514/As with a VGA front-end. Hardwired Bit-Blt, fill and line drawfunctions. S3 86c911 184pin 1Mbyte, 1280x1024x16c, 1024x768x256c, 640x480x32kc S3 86c911A 184pin Same as 924??. Corrects a bug in 1280 modes. S3 86c924 184pin Support for 24-bit modes. S3 86c801 160pin as '928, but limited to 2MB DRAM & no 32bit acceleration- '801 is the ISA version S3 86c805 184pin same as '801 but for Local Bus S3 86c805i as 805, but can interleave two banks of DRAM S3 86c805p PCI version of the '805 S3 86c928 208pin 24bit color, 4MB D/VRAM Accelerated 4/8/16/32bit S3 86c928p PCI version of the '928 S3 Vision964 208pin. VRAM 64bit chip. Max 8MB (1600x1200 32bit) S3 Vision864 208pin. As 964, but with max 4MB DRAM. S3 86c732 "Trio32" Integrated '864, DAC and clock chip. 32bit memory path S3 86c764 208pin. "Trio64" Integrated '864, DAC and clock chip S3 86c866 S3 86c868 as '864, but with video support S3 86c968 as '964, but with video support The S3 chip only works in AT and better units as it uses full 16 bit I/O addresses. The S3 has an 8514/A style bitblt engine which uses a number of I/O addresses with the lowest 10 bits = 2E8h (4AE8h, 82E8h, BEE8h...). Please note that this may conflict with Com4 ports at 2E8h-2EFh !!! 102h (R/W): Setup Option Select Register (SETUP_MD) bit 0 SLP MODE. When clear the chip ignores I/O and memory accesses. The video system will continue running as before the bit was cleared. Note: This register can only be accessed when in setup mode, which is controlled either by 3C3h bit 0 or 46E8h bit 4. When in setup mode all other VGA and extended registers are disabled. 3B8h (R/W): MDA-Mode Control Register (MDA_MODE) bit 3 DSP ENB. Enable Display. 1: Blanked, 1: Video enabled 5 TXT BLK. Text Blinking enabled if set 3B8h (R/W): HGC-Mode Control Register (HGC_MODE) bit 1 GRPH MODE. Enable Graphics Mode. 0: Text, 1: 720x348 Graphics 3 DSP ENB. Enable Display. 0: Blank, 1: Video enabled 5 TXT BLK. Text Blinking enabled if set 7 HGC PAGE. Select Hercules Graphics Video Page 1. 0: Display from B000h (page 0), 1: Display from B800h (page 1) 3B9h (W): HGC-Set Light Pen Flag Register (HGCV_SLPEN) Any write to this register will set the Light Pen Latch 3BAh (R): MDA Status Register (MDA_STS) bit 0 HSY. Horizontal Sync Active. Border or Blanking active if set 3 TEST. B/W Video enabled if set 3BAh (R): HGC Status Register (HGC_STS) bit 0 HSY. Horizontal Sync Active. Border or Blanking active if set 1 LPF. Light Pen Flag on if set 3 V-DT. Black/White Video enabled if set 7 /VSY. Vertical Sync Inactive. Vertical Sync active if set 3BBh (W): Reset Light Pen Flag Register Any write to this register will clear the Light Pen Latch 3BFh (W): HGC Configuration Register bit 0 ENB GRPH. Enable Graphics. 0: Force Text mode, 1: Allow Graphics mode 1 ENB PAGE. Enable Page. 0: 3B8h bit 7 can't be set (always use page 0), 1: 3B8h bit can be set enabling both pages 3C4h index 08h (R/W): "PLL Unlock" (732/764) bit 0-? Write 6 to unlock the PLL registers (3C4h index 10h-13h,15h..), write 0 to lock. 3C4h index 09h (R/W): (732/764) 3C4h index 0Ah (R/W): (732/764) 3C4h index 0Bh (R/W): (732/764) 3C4h index 0Dh (R/W): (732/764) 3C4h index 10h W(R/W): "Memory PLL Data" (732/764) bit 0-4 N1. Frequency divider. Stored as 1-31, actual value 3-33 5-7 N2. Divides the frequency. 0: /1, 1: /2, 2: /4, 3: /8 8-14 M. Quotient. Stored as 1-127, actual value 3-129 Note: Frequency is (M/N1)/(1 << N2) *base frequency.M and N1 are the actual values, not the stored ones. Typically the base frequency is 14.318 MHz. 3C4h index 12h W(R/W): "Video PLL Data" (732/764) bit 0-4 N1. Frequency divider. Stored as 1-31, actual value 3-33 5-7 N2. Divides the frequency. 0: /1, 1: /2, 2: /4, 3: /8 8-14 M. Quotient. Stored as 1-127, actual value 3-129 Note: Frequency is (M/N1)/(1 << N2) *base frequency.M and N1 are the actual values, not the stored ones. Typically the base frequency is 14.318 MHz. 3C4h index 15h (R/W): (732/764) bit 4 Set in 1x 16bit -> 2x 8bit pixel mode 5 After updating a clock register set write this bit 3 time. First 0, then 1 and finally 0. 3C4h index 18h (R/W): (732/764) bit 7 Set in 1x 16bit -> 2x 8bit pixel mode 3d4h index 2Dh (R): bit 0-7 Extended Chip ID. Always 88h ? 3d4h index 2Eh (R): "New chip ID" (7xx,866,x68) bit 0-7 Extended Chip ID (if index 30h is E0h/E1h) 10h 86c732 (Trio32) 11h 86c764 (Trio64) 80h 86c866 90h 86c868 B0h 86c968 3d4h index 2Fh (R): Revision (7xx,866,x68) bit 0-7 Revision code 4-7 (86c764) 8 for the 86c765 (Trio64 V+) ?? 3d4h index 30h (R): CR30 Chip ID/REV register bit 0-7 Chip ID: 81h 86c911 82h 86c911A/924 90h 86c928 original 91h 86c928 C-step 94h 86c928 D-step 95h 86c928 E-step A0h 86c801/805 A or B-step A2h 86c801/805 C-step A5h 86c801/805 D-step A6h 86c801/805 P-step A8h 86c801/805 I-step B0h 86c928PCI C0h Vision 86c864 C1h Vision 86c864P D0h Vision 86c964 D1h Vision 86c964P E0h,E1h Trio32/64, 86c866,86c868,86c968, See index 2Eh 3d4h index 31h (R/W): CR31 Memory Configuration Register bit 0 Enable Base Address Offset (CPUA BASE). Enables bank operation if set, disables if clear. 1 Two Page Screen Image. If set enables 2048 pixel wide screen setup 2 VGA 16bit Memory Bus Width. Set for 16bit, clear for 8bit 3 Use Enhanced Mode Memory Mapping (ENH MAP). Set to enable access to video memory above 256k. 4-5 Bit 16-17 of the Display Start Address. For the 801/5,928 see index 51h, for the 864/964 see index 69h. 6 High Speed Text Display Font Fetch Mode. If set enables Page Mode for Alpha Mode Font Access. 7 (not 864/964) Extended BIOS ROM Space Mapped out. If clear the area C6800h-C7FFFh is mapped out, if set it is accessible. 3d4h index 32h (R/W): CR32 Backwards Compatibility 1 bit 0-1 Character Clock Period (CK-CLK). 0: As IBM (8 or 9 dots), 1: 7 dots, 2: 9 dots 2 Force High Character Clock. Forces full character clock for horizontal timing (for CGA and HGC emulation), rather than 1/2 dot clock rate 3 Backward Modes. Clear for VGA, set for MDA, CGA, EGA, HGC 6 Fix VGA Screen Page with IBM VGA Memory Mapping using Display Start Address bit 16-17 (3d4h index 31h bit 4-5) 7 (928,964) Serial Out Tri-State. If set the SC, SOE0 and SXNR pins are tri-stated 3d4h index 33h (R/W): CR33 Backwards Compatibility 2 bit 1 Disable VDE Protection. Disables the function of 3d4h index 11h bit 7 on 3d4h index 7 bit 1,6. 3 VCLK = -DCLK. If set VCLK is inverted DCLK, if clear it is inverted DCLK or DCLK/2 4 Lock Video DAC Writes. If set disables writes to the RamDAC. 5 Blank/Border Select. If set the blank signal will be the same as the active display enable timing, if clear blank comes earlier than the display enable by including the border area. 6 Lock Palette/Overscan Registers if set. 7 Overrides the CGA "enable video" in 3D8h bit 3 if set. 3d4h index 34h (R/W): CR34 Backward Compatibility 3 bit 0-3 BIOS use. 0 Set if address is multiplied with 4 (16color modes ?) 4 (9xx) Enable Data Transfer Position Control (ENB DTPC). If set the Data Transfer position (When a new row should be loaded into the shift register of the VRAM) is controlled by 3d4h index 3Bh, if clear by 3d4h index 0. 5 Lock 8/9 Dots (LOCK 8/9D). Lock the character clock period (3C4h index 1 bit 5) if set. When emulating EGA the horizontal timing registers are programmed for 8 dot character clock. 7 Lock Clock Select (LOCK CKSL). If set the bits 2-3 of the Miscellaneous Output register (3C2h) are locked. 3d4h index 35h (R/W): CR35 CRT Register Lock bit 0-3 CPU Base Address. 64k bank number. For the 801/5 and 928 see 3d4h index 51h bits 2-3. For the 864/964 see index 6Ah. 4 Lock Vertical Timing Registers (LOCK VTMG). Locks 3d4h index 6, 7 (bits 0,2,3,5,7), 9 bit 5, 10h, 11h bits 0-3, 15h, 16h if set 5 Lock Horizontal Timing Registers (LOCK HTMG). Locks 3d4h index 0,1,2,3,4,5,17h bit 2 if set 6 (911/924) Lock VSync Polarity. 7 (911/924) Lock HSync Polarity. 3d4h index 36h (R/W): CR36 Reset State Read 1 bit 0-1 (R) System Bus Select. 0: EISA (805 only), 1: Originally "386/486 local bus" later "VESA local bus", 2: MCA (911/24), PCI bus (805P /928P +) or 8bit (801/5,928 undoc), 3: ISA (not 805) 2 (911-928) VGA ROM Width. Set if 8bit, clear if 16bit 2-3 (864/964) Memory Page Mode Select. 2: Extended Data Out (EDO) Mode, 3: Fast Page Mode 3 (911/24) VRAM. Set if using VRAM (should always be set) (801/5,928) VGA BIOS ROM Enable. If set BIOS is C0000h-C7FFFh, if clear C0000h-C5FFFh plus C6800h-C7FFFh 4 (911/24) Set if display memory is dedicated (Should always be set) (801/5,928 ISA Bus) Address Bit Range for MEMCS16. LA[17-23] if set, also SA16 if clear (805,928 Local Bus) SAUP2/ROMCS Select. If clear SAUP2 pin is ROMCS, if set it is unchanged. (864,964) Enable Video BIOS Access (VL-Bus) if set. 5 (911/24) Video memory. 0: 1Mb, 1: 512Kb 5-7 (not 911/924) Display Memory Size. 0: 4MB, 2: 3MB, 3: 8MB, 4: 2MB, 5: 6MB, 6: 1MB, 7: 512Kb 7 (911/24) Display Memory WPB is available if set (should always be set) Note: These bits are latched from pins PD[0-7] on reset 3d4h index 37h (R/W): CR37 Reset State Read 2 bit 0 (ISA Bus) Setup SEL for ISA bus. If set SEL is 46E8h bit 4, bit 5 if clear (Local Bus) VGA Enable. Enables VGA chip if set 1 (911/24) VRAM Display Memory Speed. Set for Fast Page Mode (80ns VRAM), clear for Page Mode (100ns VRAM). (801/5,928) Reserved(1) (964) Test Mode enabled if clear. All outputs are tri-stated 2 (911/24) 386/486 System Setup is ISA style if set, MCA style if clear (801/5,928) Extended Monitor Identification. Extends bit 5-7 (964 CVL-Bus) Video BIOS ROM Size. Set for 32K, clear for 64K 3 (Local Bus) LOCA Signal Select. Tri-state signal if set, Level signal if clear (ISA Bus) No Wait State. NOWS disabled if clear (964) Dual CAS Select. Set for Dual WE, clear for Dual CAS 4 (ISA bus) Normal MEMCS16 generation if set, external if clear (Local Bus) Disable LOCA and SRDY for video DAC accesses if clear 5-7 Additional Monitor Identification. 0: 640x480 at 60Hz Non-interlaced (Std VGA) 1: 640x480 at 70Hz Non-interlaced 2: 800x600 at 60Hz Non-interlaced 3: 800x600 at 72Hz Non-interlaced 4: 800x600 at 56Hz Non-interlaced 5: 1024x768 at 43Hz Interlaced 6: 1024x768 at 60Hz Non-interlaced 7: 1024x768 at 70Hz Non-interlaced 1280x960 at 46Hz Interlaced Note: These bits are latched from pins PD[8-15] on reset 3d4h index 38h (R/W): CR38 Register Lock 1 bit 2-3 Write 2 to unlock. Bit 6-7 must also be set 6-7 Write 1 to unlock. Bit 3-4 must also be set Note: Traditionally 48h is used to unlock and 00h to lock 3d4h index 39h (R/W): CR39 Register Lock 2 bit 0-2 (911/24) Write 5 to unlock the Test Register ? 5-7 Write 5 to unlock the System Control Registers (3d4h index >=40h) Note: Traditionally A5h is used to unlock and 5Ah to lock 3d4h index 3Ah (R/W): CR3A Miscellaneous 1 bit 0-1 Alternate Refresh Count Control. If bit 2 is set this is the number of refresh cycles per scanline, rather than 3d4h index 11h bit 6. 2 Enable Alternate Refresh Count Control (bits 0-1) if set 3 Top Memory Access (TOP MEM). Forces PCU and CRTC accesses into the upper 32k or 64K if set 4 256 Color Enhanced Mode. Configure Shift registers in the Attribute Controller for 8, 16 or 24 bit data if set, 4bit if clear 5 Enables High Speed Text CPU font writing if set. 7 (911-928) Enable MEMCS16 Bus Signal. If set MEMCS16 is 16bits, else 8 bits. (964) PCIRB DISA. PCI Read Bursts Disabled if set. 3d4h index 66h bit 7 should be set before this bit is set 3d4h index 3Bh (R/W): CR3B Data Transfer Execute Position Register (9xx) bit 0-7 The Horizontal character position of the data transfer execution in memory clocks. Usually in the middle of 3d4h index 0 and 3d4h index 4 3d4h index 3Ch (R/W): CR3C Interlaced Mode Start/End Register bit 0-7 Interlace mode frame offset (Typically half the horizontal total). 3d4h index 40h (R/W): CR40 System Configuration bit 0 Enable Enhanced Register Access. Enables 8514/a registers (x2E8h,x6E8h,xAE8h,xEE8h) if set 1 (911/24) CPC I/O Select. If set CPC selected VDCRD/WR are I/O decoded R/W signals, if clear RAMDAC is selected (801/5) Signal Select. If set the MID0 signal is STRD (928) Signal Select. If set the MID0 signal becomes STRD if 3d4h index 55h bit 2 is set, MID0 becomes BGNT and MID1 becomes BREQ if 3d4h index 55h bit 2 is clear. 2 (911-928) Write Wait Control (Local Bus only). 1 wait state if set, none if clear 3 (911-928) Enable Fast Write Buffer (FIFO) if set (ISA bus only for 911/24, all busses for 801/5,928). 4 (864,964) RDY CTL. Ready Control (VL-bus only). If set there is minimum 1 wait state between the assertion of /SADS and /ARDY (for command writes), if clear the minimum is 0. 5 (864,964) WDL DLAY. Write Latching Delay (VL-bus only). If set write data is latched on the first rising edge of SCLK after assertion of /SRDY, if clear after /RDYIN 4-5 (911-928) Decode Wait Control (Local Bus only). Number of wait states. 0: 0ws, 1: 1ws, 2: 3ws, 3: 2ws 6-7 (911-928) Read Wait Control. Local Bus: Number of wait states 0: 0ws, 1: 1ws, 2: 3ws, 3: 2ws ISA Bus (801/5,928): 0 enables the NOWS signal, 1-3 disables (864,964) BUS TNO. Bus Turnaround Non-Overlap (VL-bus only). Controls the interval between deassertion of /ABEN and the assertion of /DBEN (or vice versa). 0: 1unit, 1: 2units, 2: 3units, 3: 4units 3d4h index 41h (R/W): CR41 BIOS Flag Register bit 0-4 (Diamond 864/964) Clock index for current mode. 4 (911/924) Set if we have 1MByte, clear if we have 512KBytes. 6 Dual Display VGA test size. Set for 32K, clear for 64K Note: this might be reversed for 80x/928 ???? 7 Set to enable dual display Note: Undocumented on the 911 3d4h index 42h (R/W): CR42 Mode Control bit 0-3 DCLK Select. These bits are effective when the VGA Clock Select (3C2h/3CCh bit 2-3) is 3. 5 Interlaced Mode if set. 3d4h index 43h (R/W): CR43 Extended Mode bit 0 Video Clock Edge Mode Select. If clear video data is output on the rising edge of DCLK only, if set on both rising and falling edge. 1 DAC Register Select bit 2. This bit is output to the palette chip RS2 pin, which on advanced DACs works as a 3rd address bit to the DAC registers at 3C6h-3C9h. (801/5,928) Only active if 3d4h index 55h bits 0-1 is 0 2 Logical Screen Width bit 8. Bit 8 of the Display Offset Register/ (3d4h index 13h). (801/5,928) Only active if 3d4h index 51h bits 4-5 are 0 3 (911-928) Enable 64K Color Mode. Enables 16bit modes if set 4 (911-928) Translate Enable. If set the '8514' registers use alternate addresses (x148h, x548h, x948h and xD48h), if clear standard addresses (x2E8h, x6E8h, xAE8h and xEE8h). 5 (911/24) Clock Stop Control. If set stops DCK0 (Attribute Control 0) 6 (911/24) Clock Stop Control. If set stops DCK1 (Attribute Control 1) 7 (911/24) Clock Stop Control. If set stops GCLK (GE and DM Clock) (80x +) Horizontal Counter Double Mode. If set character clocks are 16 pixels wide rather than 8. 3d4h index 45h (R/W): CR45 Hardware Graphics Cursor Mode bit 0 HWGC ENB. Hardware Graphics Cursor Enable. Set to enable the HardWare Cursor in VGA and enhanced modes. 1 (911/24) Delay Timing for Pattern Data Fetch 2 (801/5,928) Hardware Cursor Horizontal Stretch 2. If set the cursor pixels are stretched horizontally to two bytes and items 0 and 1 of the fore/background stacks in 3d4h index 4Ah/4Bh are used. 3 (801/5,928) Hardware Cursor Horizontal Stretch 3. If set the cursor pixels are stretched horizontally to three bytes and items 0,1 and 2 of the fore/background stacks in 3d4h index 4Ah/4Bh are used. 2-3 (805i,864/964) HWC-CSEL. Hardware Cursor Color Select. 0: 4/8bit, 1: 15/16bt, 2: 24bit, 3: 32bit Note: So far I've had better luck with: 0: 8/15/16bit, 1: 32bit?? 4 (80x +) Hardware Cursor Right Storage. If set the cursor data is stored in the last 256 bytes of 4 1Kyte lines (4bits/pixel) or the last 512 bytes of 2 2Kbyte lines (8bits/pixel). Intended for 1280x1024 modes where there are no free lines at the bottom. 5 (928) Cursor Control Enable for Brooktree Bt485 DAC. If set and 3d4h index 55h bit 5 is set the HC1 output becomes the ODF and the HC0 output becomes the CDE (964) BT485 ODF Selection for Bt485A RAMDAC. If set pin 185 (RS3 /ODF) is the ODF output to a Bt485A compatible RamDAC (low for even fields and high for odd fields), if clear pin185 is the RS3 output. 3d4h index 46h M(R/W): CR46/7 Hardware Graphics Cursor Origin-X bit 0-10 The HardWare Cursor X position. For 64k modes this value should be twice the actual X co-ordinate. 3d4h index 48h M(R/W): CR48/9 Hardware Graphics Cursor Origin-Y bit 0-9 (911/24) The HardWare Cursor Y position. 0-10 (80x +) The HardWare Cursor Y position. Note: The position is activated when the high byte of the Y coordinate (index 48h) is written, so this byte should be written last (not 911/924 ?) 3d4h index 4Ah (R/W): Hardware Graphics Cursor Foreground Stack (80x +) bit 0-7 The Foreground Cursor color. Three bytes (4 for the 864/964) are stacked here. When the Cursor Mode register (3d4h index 45h) is read the stackpointer is reset. When a byte is written the byte is written into the current top of stack and the stackpointer is increased. The first byte written (item 0) is allways used, the other two(3) only when Hardware Cursor Horizontal Stretch (3d4h index 45h bit 2-3) is enabled. 3d4h index 4Bh (R/W): Hardware Graphics Cursor Background Stack (80x +) bit 0-7 The Background Cursor color. Three bytes (4 for the 864/964) are stacked here. When the Cursor Mode register (3d4h index 45h) is read the stackpointer is reset. When a byte is written the byte is written into the current top of stack and the stackpointer is increased. The first byte written (item 0) is allways used, the other two(3) only when Hardware Cursor Horizontal Stretch (3d4h index 45h bit 2-3) is enabled. 3d4h index 4Ch M(R/W): CR4C/D Hardware Graphics Cursor Storage Start Address bit 0-9 (911,924) HCS_STADR. Hardware Graphics Cursor Storage Start Address 0-11 (80x,928) HWGC_STA. Hardware Graphics Cursor Storage Start Address 0-12 (864,964) HWGC_STA. Hardware Graphics Cursor Storage Start Address Address of the HardWare Cursor Map in units of 1024 bytes (256 bytes for planar modes). The cursor map is a 64x64 bitmap with 2 bits (A and B) per pixel. The map is stored as one word (16 bits) of bit A, followed by one word with the corresponding 16 B bits. The bits are interpreted as: A B MS-Windows: X-11: 0 0 Background Screen data 0 1 Foreground Screen data 1 0 Screen data Background 1 1 Inverted screen Foreground The Windows/X11 switch is only available for the 80x +. (911/24) For 64k color modes the cursor is stored as one byte (8 bits) of A bits, followed by the 8 B-bits, and each bit in the cursor should be doubled to provide a consistent cursor image. (801/5,928) For Hi/True color modes use the Horizontal Stretch bits (3d4h index 45h bits 2 and 3). 3d4h index 4Eh (R/W): CR4E HGC Pattern Disp Start X-Pixel Position bit 0-5 Pattern Display Start X-Pixel Position. 3d4h index 4Fh (R/W): CR4F HGC Pattern Disp Start Y-Pixel Position bit 0-5 Pattern Display Start Y-Pixel Position. 3d4h index 50h (R/W): Extended System Control 1 Register (80x +) bit 2 (928,964) Enable BREQ Function. If set the BREQ and BGNT functions are enabled. 3 (not 864/964) Disable LOCA/SRDY. If set disables the LOCA/SRDY signals on the Local Bus for writing to the DAC. 4-5 Pixel Length Select. Selects the pixel length for Enhanced Mode. 0: 4 or 8 bits/pixel (1 byte), 1: 16 bits/pixel (2 bytes) 3: 32bits/pixel (4bytes) - 928 and later 6-7 (80x A&B, 928 rev A-D) Graphics Engine Command Screen Pixel Width. 0: 1024 or 2048, 1: 640, 2: 800, 3: 1280 0,6-7 (80x C+,928 E+, 864/964) Graphics Engine Command Screen Pixel Width. 0: 1024 (or 2048 if 3d4h index 31h bit 1 set) , 1: 1152, 2: 640, 4: 800 (or 1600 if 4AE8h bit 2 set), 5: 1600, 6: 1280 3d4h index 51h (R/W): Extended System Control 2 Register (80x +) bit 0 (80x) Display Start Address bit 18 0-1 (928 +) Display Start Address bit 18-19. Bits 16-17 are in index 31h bits 4-5, Bits 0-15 are in 3d4h index 0Ch,0Dh. For the 864/964 see 3d4h index 69h 2 (80x) CPU BASE. CPU Base Address Bit 18. 2-3 (928 +) Old CPU Base Address Bits 19-18. 64K Bank register bits 4-5. Bits 0-3 are in 3d4h index 35h. For the 864/964 see 3d4h index 6Ah 4-5 Logical Screen Width Bit [8-9]. Bits 8-9 of the CRTC Offset register (3d4h index 13h). If this field is 0, 3d4h index 43h bit 2 is active 6 (928,964) DIS SPXF. Disable Split Transfers if set. Spilt Transfers allows transferring one half of the VRAM shift register data while the other half is being output. For the 964 Split Transfers must be enabled in enhanced modes (4AE8h bit 0 set). Guess: They probably can't time the VRAM load cycle closely enough while the graphics engine is running. 7 (not 864/964) Enable EPROM Write. If set enables flash memory write control to the BIOS ROM address Note: both index 38h and 39h must be enabled to access this register. 3d4h index 52h (R/W): Extended BIOS Flag 1 Register (80x +) bit 0-7 Scratch Pad 0-3 (Diamond) Table entry ? 4 (Diamond) VCLK doubler 5 (Diamond) Interlace/NI 6-7 (Diamond) Vsync/Hsync 3d4h index 53h (R/W): Extended Memory Control 1 Register (80x +) bit 0-1 (80x) Enable Write Per Bit MB1,MB0. 0-3 (928) Enable Write Per Bit MB3,MB2,MB1,MB0 Enables Write Per Bit Flags for each 1MB memory bank. 0 (864/964) ENB WPB. Enable Write Per Bit. Enables Write Per Bit for all memory banks if set 3-4 (868/968) Set to 3 to enable "New Memory Mapped I/O" 4 (801/5) Enable MMIO Access. If set to enables the 32K MMIO (Memory Mapped I/O registers) at A0000h-A7FFFh. (928 +) Enable MMIO Access. If set the 32K MMIO area at A0000h -A7FFFh is used for image transfers via E2E8h and E2EAh, and the second 32K MMIO area at A8000h-AFFFFh is used for the command registers (82E8h-BEE8h) 5 (928,964) PAR VRAM. Parallel VRAM Addressing. Parallel if set, serial if clear. (964) Only needs to be set when a 64bit pixel bus is used (3d4h index 66h bits 4-5 = 2). (801/5i) DRAM interleaving if set 6 SWP NBL. Swap Nibbles. If set swaps the nibbles (4bits) in each byte read or written to/from video memory. 7 (not 864/964) Enable Nibble Write Control if set 3d4h index 54h (R/W): Extended Memory Control 2 Register (80x +) bit 0-2 (not 964) Read Ahead Cache (RAC) Extra Prefetch Control. The number of doublewords to prefetch (words/bytes in VGA word/byte mode). Only 1,3 and 7 are meaningful. 3-7 (80x,964) M Parameter. 3d4h index 55h (R/W): Extended Video DAC Control Register (80x +) bit 0-1 DAC Register Select Bits. Passed to the RS2 and RS3 pins on the RAMDAC, allowing access to all 8 or 16 registers on advanced RAMDACs. If this field is 0, 3d4h index 43h bit 1 is active. 2 Enable General Input Port Read. If set DAC reads are disabled and the STRD strobe for reading the General Input Port is enabled for reading while DACRD is active, if clear DAC reads are enabled. 3 (928) Enable External SID Operation if set. If set video data is passed directly from the VRAMs to the DAC rather than through the VGA chip 4 Hardware Cursor MS/X11 Mode. If set the Hardware Cursor is in X11 mode, if clear in MS-Windows mode 5 (80x,928) Hardware Cursor External Operation Mode. If set the two bits of cursor data ,is output on the HC[0-1] pins for the video DAC The SENS pin becomes HC1 and the MID2 pin becomes HC0. 6 ?? 7 (80x,928) Disable PA Output. If set PA[0-7] and VCLK are tristated. (864/964) TOFF VCLK. Tri-State Off VCLK Output. VCLK output tri -stated if set 3d4h index 56h (R/W): External Sync Control 1 Register (80x +) bit 0 RMT ON. Remote Mode Operation. If set the VSync pin is the input for Gen-Lock 1 (not 864/964) NTSC Mode. If set enables the special NTSC Horizontal counter mode, where two dot clocks are skipped in each scanline, relative to the value programmed in the Horizontal Total register (3d4h index 0). Typical Horizontal Total value is 114 clocks. Index 00h = 109. 2 (not 864/964) PAL Mode. If set enables the special PAL Horizontal counter mode, where one dot clock is skipped in each scanline, relative to the value programmed in the Horizontal Total register (3d4h index 0). Typical Horizontal Total value is 142 clocks. Index 00h = 137. 3 External Sync Mode Select. If Remote Mode is selected (bit 0 is set) the falling edge of the VSync input signal resets the Vertical counter if this bit is set, or both the Horizontal and Vertical counters if this bit is clear. 4 Preset Frame Select. If bit 0 and 3 are both set, the starting frame after the Vertical reset is Odd if this bit is set, even if not. 5 Disable SYNC Output. If set HSYNC, VSYNC and BLANK are tristated. 3d4h index 57h (R/W): External Sync Control 2 Register (80x +) bit 0-3 Vsync Reset Adjust. The vertical delay of the Vertical counter reset from the falling edge of VSync in scan lines. Must be non-zero in Remote mode (3d4h index 56h bit 0 set). 4-7 Hsync Reset Adjust. The horizontal delay of the Horizontal counter reset from the falling edge of VSync in character clocks. 3d4h index 58h (R/W): Linear Address Window Control Register (80x +) bit 0-1 Linear Address Window Size. Must be less than or equal to video memory size. 0: 64K, 1: 1MB, 2: 2MB, 3: 4MB (928)/8Mb (864/964) 2 (not 864/964) Enable Read Ahead Cache if set 3 (80x,928) ISA Latch Address. If set latches address during every ISA cycle, unlatches during every ISA cycle if clear. (864/964) LAT DEL. Address Latch Delay Control (VL-Bus only). If set address latching occours in the T1 cycle, if clear in the T2 cycle (I.e. one clock cycle delayed). 4 ENB LA. Enable Linear Addressing if set. 5 (not 864/964) Limit Entry Depth for Write-Post. If set limits Write -Post Entry Depth to avoid ISA bus timeout due to wait cycle limit. 6 (928,964) Serial Access Mode (SAM) 256 Words Control. If set SAM control is 256 words, if clear 512 words. 7 (928) RAS 6-MCLK. If set the random read/write cycle time is 6MCLKs, if clear 7MCLKs 3d4h index 59h M(R/W): Linear Address Window Position Register (80x +) bit 0-9 (80x,928) Linear Address Window Position. This is bit 16-25 of the Linear Address Window Starting Position. Bits 26-31 are generated externally and input on the SAUP1 pin. 0-15 (864/964) Linear Address Window Position. This is bit 16-31 of the Linear Address Window Starting Position. ISA configurations ignore bits 24-31 of the address (and thus bits 8-9/15 of this register). If the Linear Address Window Size (3d4h index 58h bits 0-1) is >64K the lower 4 (1MB),5 (2MB),6 (4MB) or 7 (8MB) bits of this register are ignored. For PCI systems bits 23-31 of the address is common with bits 23-31 of the PCI Base Address 0 register at PCI offset 10h. Writes to either register will be reflected in the other, but bits 23-31 should be updated through the PCI register. 3d4h index 5Bh (R/W): Extended BIOS Flag 2 Register (80x +) bit 0-7 Scratch Pad. 0-3 (Diamond) Monitor type. 0: NEC 3Fg, 1: NEC 6Fg, 2: VESA 75Hz, 3: NEC 4Fg, 4: Gen90?, 5: CS1024i, NEC 3FGx, 8: Fixed?, 9: Sony 1304, 10: Sony 1304s, 11: CS1572, 12: NEC 5FGe, 13: Mon100?, 14: Mon120?, 15: Reserved fopr Vmode 3d4h index 5Ch (R/W): General Output Port Register (80x +) bit 0-3 (R) Clock Select Out. If 3C2h/3CCh bit 2-3 is 3 this is 3d4h index 42h bits 0-3, else bits 0-1 are 3C2h/3CCh bits 2-3 and bits 2-3 are 0. Thus this is the resulting clock select signals output. 4-7 General Output Port. Can be used for external logic. 4 (ELSA) EEProm Data Bit 5 (ELSA) EEProm Chip Read Select. Set for read access (TVP3025 systems) Connected to RS4 on the TVP3025. Set for Bt485 mode, clear for TVP3020 mode. 6 (ELSA) EEProm Clock Bit 7 (ELSA) EEProm Chip Select. Set to access the EEProm (STB Pegasus) Changes Video Memory mapping. If set video memory is mapped in the 7C000000h-7FFFFFFFh range (A26-31 = 011111), if clear at 0-3FFFFFFh range (A26-31 = 0). 3d4h index 5Dh (R/W): Extended Horizontal Overflow Register (80x +) bit 0 Horizontal Total bit 8. Bit 8 of the Horizontal Total register (3d4h index 0) 1 Horizontal Display End bit 8. Bit 8 of the Horizontal Display End register (3d4h index 1) 2 Start Horizontal Blank bit 8. Bit 8 of the Horizontal Start Blanking register (3d4h index 2). 3 (864,964) EHB+64. End Horizontal Blank +64. If set the /BLANK pulse is extended by 64 DCLKs. Note: Is this bit 6 of 3d4h index 3 or does it really extend by 64 ? 4 Start Horizontal Sync Position bit 8. Bit 8 of the Horizontal Start Retrace register (3d4h index 4). 5 (864,964) EHS+32. End Horizontal Sync +32. If set the HSYNC pulse is extended by 32 DCLKs. Note: Is this bit 5 of 3d4h index 5 or does it really extend by 32 ? 6 (928,964) Data Transfer Position bit 8. Bit 8 of the Data Transfer Position register (3d4h index 3Bh) 7 (928,964) Bus-Grant Terminate Position bit 8. Bit 8 of the Bus Grant Termination register (3d4h index 5Fh). 3d4h index 5Eh (R/W): Extended Vertical Overflow Register (80x +) bit 0 Vertical Total bit 10. Bit 10 of the Vertical Total register (3d4h index 6). Bits 8 and 9 are in 3d4h index 7 bit 0 and 5. 1 Vertical Display End bit 10. Bit 10 of the Vertical Display End register (3d4h index 12h). Bits 8 and 9 are in 3d4h index 7 bit 1 and 6 2 Start Vertical Blank bit 10. Bit 10 of the Vertical Start Blanking register (3d4h index 15h). Bit 8 is in 3d4h index 7 bit 3 and bit 9 in 3d4h index 9 bit 5 4 Vertical Retrace Start bit 10. Bit 10 of the Vertical Start Retrace register (3d4h index 10h). Bits 8 and 9 are in 3d4h index 7 bit 2 and 7. 6 Line Compare Position bit 10. Bit 10 of the Line Compare register (3d4h index 18h). Bit 8 is in 3d4h index 7 bit 4 and bit 9 in 3d4h index 9 bit 6. 3d4h index 5Fh (R/W): Bus Grant Termination Position Register (928,964) bit 0-7 Bus Grant Termination Position. The termination position in character clocks for the BGNT signal. Valid only if 3d4h index 50h bit 2 set. 3d4h index 60h (R/W): Extended Memory Control 3 (864,964) bit 0-7 N parameter. Number of 4byte(1Mb) or 8byte(2/4Mb) memory cycles reserved for the display FIFO before other requestors are served 3d4h index 61h (R/W): Extended Memory Control 4 (864,964) bit 0-2 L Parameter bits 8-10. Bits 0-7 are in index 62h 7 ENB DFLC. Enable Display Fetch Length Control (L Parameter) enabled if set 3d4h index 62h (R/W): Extended Memory Control 5 (864,964) bit 0-7 L Parameter bits 0-7. Bits 8-10 are in index 61h. Number of bytes per scanline divided by 4(for 1Mb - 32bit) or 8(for 2/4Mb - 64bit). When the display FIFO has received this many memory cycles the FIFO will need no further cycles until the next line starts. 3d4h index 63h (R/W): Extended Sync Delay Adjust High (864,964) bit 0-3 VSYNC Reset Adjust bits 4-7. Bits 0-3 are in 3d4h index 57h bits 0-3 4-7 HSYNC Reset Adjust bits 4-7. Bits 0-3 are in 3d4h index 57h bits 4-7 3d4h index 64h (R/W): Genlocking Adjustment Register (864,964) bit 0-2 H-Counter Dot Addition Adjust. Adjusts the timing of the H-Counter reset delay n Dot Clocks. 3 H-Counter Dot Addition Adjust enabled if set 4-6 Character Clock Phase Adjust. Delay (in dot clocks) from the rising edge of VSYNC to the character clock. 7 Character Clock Phase Adjust enabled if set 3d4h index 65h (R/W): Extended Miscellaneous Control (864,964) bit 0 SE DLAY. Delay falling edge of SE. If set the falling edges of SE0-3 are delayed. This reduces the risc of data contention when several memory banks are outputting to the same pixel bus. 1 DISA 1SC. Disable 1st SC0-1 Output. If set the early SC0-1 output during blanking is disabled when split transfers are enabled 2 ENB 3C3. Enable 3C3h for Video Subsystem Setup. If set 3C3h is used for video subsystem setup, if clear 46E8h is used. 6-7 ADR ADJ. Address adjustment for split transfers. 0: No adjustment (32 or 64bit pixel bus), 2: 512word shift register and 128bit pixel bus, 3: 256word shift register and 128bit pixel bus. When using the TI TVP3020 DAC should be set to: 0: Palette modes (4/8bit modes), 1: 15/16bit modes, 2: 32bit modes 3d4h index 66h (R/W): Extended Miscellaneous Control 1 (864/964) bit 0-2 DIV-SC. Divide SC,SE and VCLK. 0: SC,SE and VCLK = DCLK, 1: SC,SE and VCLK = DCLK/2, 2: SC,SE and VCLK = DCLK/4, 3: SC,SE and VCLK = DCLK/8, 4: SC,SE and VCLK = DCLK/16, 5: SC,SE and VCLK = DCLK/32 3 SC=VCLK. Set SC0 to VCLK Frequency. if set SC = VCLK and SC1 = inverted VCLK regardless of bits 4-5. 4-5 SID-MODE. SID Operation Mode. 0: 64bit serial pixel bus, 1: 32bit parallel pixel bus, 2: 128bit serial (or 64bit parallel) pixel bus, 3: 32bit serial pixel bus. 6 TOFF PADT. Tri-State Off Pixel Address Bus. If set PA0-7 (the VGA pixel bus) is tri-stated. 7 PCI DE. PCI Bus Disconnect Enabled if set 3d4h index 67h (R/W): Extended Miscellaneous Control 2 (805i,864/964) bit 0 VCLK PHS. VCLK Phase With Respect to DCLK. If clear VLKC is inverted DCLK, if set VCLK = DCLK. 1-7 Documented as reserved, however: 4-7 Pixel format. 0 Mode 0: 8bit (1 pixel/VCLK) 1 Mode 8: 8bit (2 pixels/VCLK) 3 Mode 9: 15bit (1 pixel/VCLK) 5 Mode 10: 16bit (1 pixel/VCLK) 7 Mode 11: 24/32bit (2 VCLKs/pixel) 13 (732/764) 32bit (1 pixel/VCLK) 3d4h index 68h (R/W): Configuration 3 Register (864,964) bit 0-1 /CAS,/WE,/OE Stretch Time. 0: 4units delay, 1: 3units delay, 2: 2units delay, 3: 1unit delay 2-3 MA-D-SEL. Memory Address Depth Select. 1: 128K (512 rows X 256 coloumns), 3: 256K (512 rows X 512 coloumns). 4-5 /RAS-LOW. /RAS Low Timing Select. 0: 6.5 MCLKs, 1: 5.5 MCLKs, 2: 4.5 MCLKs, 3: 3.5 MCLKs 6-7 /RAS-PCG. /RAS Precharge Timing Select. 1: 4.5 MCLKs, 2: 3.5 MCLKs, 3: 2.5 MCLks Note: This register is latched from PD16-23 on reset. Write A5h to index 39h to update this register. 3d4h index 69h (R/W): Extended System Control 3 (864,964) bit 0-4 Display Start Address bits 16-20 Note: The Display Start registers at index 31h/51h still works. 3d4h index 6Ah (R/W): Extended System Control 4 (864,964) bit 0-6 Bank register in units of 64Kbytes. Note: The bank registers at index 35h/51h still works. 3d4h index 6Bh (R/W): Extended BIOS Flag 3 (864,964) bit 0-7 Reserved 3d4h index 6Ch (R/W): Extended BIOS Flag 4 (864,964) bit 0-7 Reserved 3d4h index 6Dh (R/W): Extended Miscellaneous Control (805i,864/964) bit 0-2 DELAY-BL-BY-DCLK. Delay /BLANK by DCLK. Number of DCLKs to delay the BLANK signal. Pulse width is not affected. 4-6 DELAY-SC-BY-VCLK. Number of VCLKs to delay SC0-1. Pulse width is not affected. 3D8h (R/W): CGA Mode Control Register (CGA_MODE) bit 0 HRES TEXT. Select High Resolution Text. 0: 40x25, 1: 80x25 1 GRPH MODE. Select Graphics Mode. 0: Text, 1: Graphics 2 B/W MODE. Select Black/White Mode. 0: Color enabled, 1: Color disabled, In 320x200 4 color mode the pixels are: 0: background, 1: Cyan, 2: Red, 3: White 3 DISP ENB. Enable Display. 0: Blank, 1: Video Enabled 4 HRES GRPH. Select High Resolution Graphics. 1: Enable 640x200 graphics mode, 0: all other modes. 5: TEXT BLNK. Enable Text Blinking. 0: disabled, 1: enabled 3D9h (R/W): CGA Color Select Register (CGA_COLOR) bit 0 BORDER/BKGR COLOR. Select Blue Border. 0: Blue not selected, 1: Blue border in text mode, blue background & border in 320x200 mode, blue foreground in 640x200 mode. 1 BORDER/BKGR COLOR. Select Green Border. 0: Green not selected, 1: Green border in text mode, green background & border in 320x200 mode, green foreground in 640x200 mode. 2 BORDER/BKGR COLOR. Select Red Border. 0: Red not selected, 1: Red border in text mode, red background & border in 320x200 mode, Red foreground in 640x200 mode. 3 BORDER/BKGR COLOR. Select intensified Border. 0: No intensification, 1: Intensified border in text mode, intensified background & border in 320x200 mode, intensified foreground in 640x200 mode. 4 SEL I-EN. Select Alternate Color Set. 0: Alternate color set not enabled, 1: Background color in text mode, Enable alternate color set in graphics mode. 5 SEL CSET. Select Color Set in 320x200 mode. 0: Palette: 0: Background, 1: Green, 2: Red, 3: Yellow 1: Palette: 0: Background, 1: Cyan, 2: Violet, 3: White 3DAh (R): CGA Status Register (CGA_STAT) bit 0 /DTM. Border/Blanking Active. Border or Blanking active if set 1 LPF. Light Pen Flag. 0: Light Pen Latch cleared, 1: light Pen Latch triggered. 2 Light Pen switch open if set, cleared if not 3 VSY. Vertical Sync Active. if set 3DBh (W): Reset Light Pen Flag Register (RLPEN) Any write to this register will reset the Light Pen Latch 3DCh (W): Set Light Pen Flag Register (SLPEN) Any write to this register will set the Light Pen Latch Below are the 8514/A registers. 3d4h index 40h bit 0 must be set to use them. 42E8h W(R): Subsystem Status Register (SUBSYS_STAT) bit 0-3 Interrupt requests. These bits show the state of internal interrupt requests. An interrupt will only occur if the corresponding bit(s) in SUBSYS_CNTL is set. Interrupts can only be reset by writing a 1 to the corresponding Interrupt Clear bit in SUBSYS_CNTL. Bit 0: Vertical Sync Interrupt 1: Graphics Engine Busy Interrupt 2: FIFO Overflow Interrupt 3: FIFO Empty Interrupt 4-6 MONITORID. 2: IBM 8514/A color 16" 5: IBM 8503 Monochrome 12" 6: IBM 8512 color 14" or 8513 color 12" 7: No (or other) monitor 7 PXL LNG. Clear for 4 bits per pixel, set for 8 or more bpp. Only used when 3d4h index 50h bits 4-5 = 0. 42E8h W(W): Subsystem Control Register (SUBSYS_CNTL) bit 0-3 Interrupt Reset. Write 1 to a bit to reset the interrupt. Bit 0 VSY CLR Write 1 to reset Vertical Sync interrupt. 1 GEB CLR Write 1 to reset Graphics Engine Busy interrupt. 2 FIFO CLO Write 1 to reset FIFO Overflow interrupt. 3 FIFO CLE Write 1 to reset FIFO Empty interrupt. 4-7 Reserved(0) 8 VSY ENB. Vertical Sync Interrupt Enabled if set. 9 GE BSY. Graphics Engine Busy Interrupt Enabled if set. 10 FIFO-ENB OVF. FIFO Overflow Interrupt Enabled if set. 11 FIFO-ENB EMP. FIFO Empty Interrupt Enabled if set. 14-15 GE-RST. Graphics Engine Software Reset. 0: no change, 1: Graphics Engine enabled, 2: reset 46E8h (W): Video Subsystem Enable Register (SETUP_MD) bit 3 Address Decoding (AD DEC). If clear Video I/O and Memory address decoding is disabled. 4 Enable Setup (EN SUP). Set to enter Setup Mode, clear to enable normal operation. When in Setup Mode only the Setup Option Select Register at 102h is accessible. 4AE8h W(W): Advanced Function Control Register (ADVFUNC_CNTL) bit 0 ENB EHFC. Enable Enhanced Functions. Set to enable enhanced functions using the wide pixel bus to the DAC(SID), clear to enable VGA display functions using the VGA pixel bus (PA0-7). 1 Reserved(1). 2 (911-928) SCRN SIZE - Screen Size. For enhanced modes this bit selects the resolution: Clear for 640x480, set for 1024x768 or 800x600 (864,964) ENH PL. Enhanced modes pixel length. Set for 4bits/pixel enhanced modes, clear for 8/15/16/24/32 bit/pixel enhanced modes (3d4h index 50h bits 4-5 controls the width). 4 (928 +) LA - Enable Linear Addressing if set. This bit is ORed with 3d4h index 58h bit 4 so that either bit will enable Linear Addressing if set 5 (928 +) MIO - Enable Memory Mapped I/O if set. This bit is ORed with 3d4h index 53h bit 4 so that either bit will enable Memory Mapped I/O if set 6 (928 only) WP - Enable Write Posting if set. This bit is ORed with 3d4h index 40h bit 3 so that either bit will enable Write Posting if set 82E8h W(R/W): Current Y Position Register (CUR_Y) bit 0-11 Y Position. Y co-ordinate of current position in pixels. 86E8h W(R/W): Current X Position Register (CUR_X) bit 0-11 X Position. X co-ordinate of current position in pixels. 8AE8h W(R/W): Destination Y Position & Axial Step Constant Register (DESTY_AXSTP) bit 0-11 DESTINATION Y-POSITION. During BITBLT operations this is the Y co-ordinate of the destination in pixels. 0-12 (911/924) LINE PARAMETER AXIAL STEP CONSTANT. During Line Drawing, this is the Bresenham constant 2*dminor in two's complement format. (dminor is the length of the line projected onto the minor or dependent axis). 0-13 (80 x+) LINE PARAMETER AXIAL STEP CONSTANT. Se above 8EE8h W(R/W): Destination X Position & Diagonal Step Constant Register (DESTX_DISTP) bit 0-11 DESTINATION X-POSITION. During BITBLT operations this is the X co-ordinate of the destination in pixels. 0-12 (911/924) LINE PARAMETER DIAGONAL STEP CONSTANT. During Line Drawing this is the Bresenham constant 2*dminor-2*dmajor in two's complement format. (dminor is the length of the line projected onto the minor or dependent axis, dmajor is the length of the line projected onto the major or independent axis) 0-13 (80x +) LINE PARAMETER DIAGONAL STEP CONSTANT. Se above 92E8h W(R/W): Line Error Term Read/Write Register (ERR_TERM). bit 0-12 (911/924) LINE PARAMETER/ERROR TERM. For Line Drawing this is the Bresenham Initial Error Term 2*dminor-dmajor (one less if the starting X is less than the ending X) in two's complement format. (dminor is the length of the line projected onto the minor or dependent axis, dmajor is the length of the line projected onto the major or independent axis). 0-13 (80x +) LINE PARAMETER/ERROR TERM. See above. 96E8h W(R/W): Major Axis Pixel Count/Rectangle Width Register (MAJ_AXIS_PCNT) bit 0-10 (911/924) RECTANGLE WIDTH/LINE PARAMETER MAX. For BITBLT and rectangle commands this is the width of the area. For Line Drawing this is the Bresenham constant dmajor in two's complement format. (dmajor is the length of the line projected onto the major or independent axis). Must be positive. 0-11 (80x +) RECTANGLE WIDTH/LINE PARAMETER MAX. See above 9AE8h W(R): Graphics Processor Status Register (GP_STAT) bit 0-7 Queue State. 00h = 8 words available - queue is empty 01h = 7 words available 03h = 6 words available 07h = 5 words available 0Fh = 4 words available 1Fh = 3 words available 3Fh = 2 words available 7Fh = 1 word available FFh = 0 words available - queue is full 8 (911-928) DTA AVA. Read Data Available. If set data is ready to be read from the PIX_TRANS register (E2E8h). 9 HDW BSY. Hardware Graphics Processor Busy If set the Graphics Processor is busy. 10 (928 +) AE. All FIFO Slots Empty. If set all FIFO slots are empty. 11-15 (864/964) (R) Queue State bits 8-12. 1Fh if 8 words or less available, Fh for 9 words, 7 for 10 words, 3 for 11 words, 1 for 12 words and 0 for 13 words available. 9AE8h W(W): Drawing Command Register (CMD) bit 0 (911-928) ~RD/WT. Read/Write Data. If set VRAM write operations are enabled. If clear operations execute normally but writes are disabled. 1 PX MD. Pixel Mode. Defines the orientation of the display bitmap. 0 = Through plane mode (Single pixel transferred at a time) 1 = Across plane mode (Multiple pixels transferred at a time). 2 LAST PXOF. Last Pixel Off. If set the last pixel of a line command (CMD_LINE, SSV or LINEAF) is not drawn. This is used for mixes such as XOR where drawing the same pixel twice would give the wrong color. 3 DIR TYP. Direction Type. 0: Bresenham line drawing (X-Y Axial) CMD_LINE draws a line using the Bresenham algorithm as specified in the DESTY_AXSTP (8AE8h), DESTX_DIASTP (8EE8h), ERR_TERM (92E8h) and MAJ_AXIS_PCNT (96E8h) registers INC_X, INC_Y and YMAJAXIS determines the direction. 1: Vector line draws (Radial). CMD_NOP allows drawing of Short Stroke Vectors (SSVs) by writing to the Short Stroke register (9EE8h). CMD_LINE draws a vector of length MAJ_AXIS_PCNT (96E8h) in the direction specified by LINEDIR (bits 5-7). DRWG-DIR determines the direction of the line. 4 DRAW YES. If clear the current position is moved, but no pixels are modified. This bit should be set when attempting read or write of bitmap data. 5-7 DRWG-DIR. Drawing Direction. When a line draw command (CMD_LINE) with DIR TYP=1 (Radial) is issued, these bits define the direction of the line counter clockwise relative to the positive X-axis. 0 = 000 degrees 1 = 045 degrees 2 = 090 degrees 3 = 135 degrees 4 = 180 degrees 5 = 225 degrees 6 = 270 degrees 7 = 315 degrees 5 INC_X. This bit together with INC_Y determines which quadrant the slope of a line lies within. They also determine the orientation of rectangle draw commands. If set lines are drawn in the positive X direction (left to right). 6 YMAJAXIS. For Bresenham line drawing commands this bit determines which axis is the independent or major axis. INC_X and INC_Y determines which quadrant the slope falls within. This bit further defines the slope to within an octant. If set Y is the major (independent) axis. 7 INC_Y. This bit together with INC_X determines which quadrant the slope of a line lies within. They also determine the orientation of rectangle draw commands. If set lines are drawn in the positive Y direction (down). 8 WAIT YES. If set the drawing engine waits for read/write of the PIX_TRANS register (E2E8h) for each pixel during a draw operation. 9 (911-928) BUS SIZE. If set the PIX_TRANS register (E2E8h) is processed internally as two bytes in the order specified by BYTE SWAP. If clear all accesses to E2E8h are 8bit. 9-10 (864,964) BUS SIZE. Select System Bus Size. Controls the width of the Pixel Data Transfer registers (E2E8h,E2EAh) and the memory mapped I/O. 0: 8bit, 1: 16bit, 2: 32bit 12 BYTE SWAP. Affects both reads and writes of SHORT_STROKE (9EE8h) and PIX_TRANS (E2E8h) when 16bit=1. If set take low byte first, if clear take high byte first. 13-15 Draw Command: 0 = NOP. Used for Short Stroke Vectors. 1 = Draw Line. If bit 3 is set the line is drawn to the angle in bits 5-7 and the length in the Major Axis Pixel Count register (96E8h), if clear the line is drawn from the Bresenham constants in the Axial Step Constant register(8AE8h), Diagonal Step Constant register (8EE8h), Line Error Term register (92E8h) and bits 5-7 of this register. 2 = Rectangle Fill. The Destination X (8EE8h) and Y (8AE8h) registers holds the coordinates of the rectangle to fill and the Major Axis Pixel Count register (96E8h) holds the horizontal width (in pixels) fill and the Minor Axis Pixel Count register (BEE8h index 0) holds the height of the rectangle. 6 = BitBLT. Copies the source rectangle specified by the Current X (86E8h) and Y (8AE8h) registers to the destination rectangle, specified as for the Rectangle Fills. 7 = (80x +) Pattern Fill. The source rectangle is an 8x8 pattern rectangle, which is copied repeatably to the destination rectangle. 9EE8h W(W): Short Stroke Vector Transfer Register (SHORT_STROKE) bit 0-3 PIXEL-LENGTH. Length of vector projected onto the major axis. This is also the number of pixels drawn. 4 DRW-MV. Set to draw the line, clear to move over it. 5-7 DRWG DIR. The angle measured counter-clockwise from horizontal right) at which the line is drawn, 0 = 000 degrees 1 = 045 degrees 2 = 090 degrees 3 = 135 degrees 4 = 180 degrees 5 = 225 degrees 6 = 270 degrees 7 = 315 degrees 8-15 The lower 8 bits are duplicated in the upper 8 bits so two short stroke vectors can be drawn with one command. Note: The upper byte must be written for the SSV command to be executed. Thus if a byte is written to 9EE8h another byte must be written to 9EE9h before execution starts. A single 16bit write will do. If only one SSV is desired the other byte can be set to 0. A2E8h W(R/W): Background Color Register (BKGD_COLOR) bit 0-7 (911/924) Background Color. This is the color used for writing pixels where the Foreground Color Mix is selected and FSS=0, or the Background Color Mix is selected and BSS=0. 0-15 (801/5) Background color. See above. 0-31 (928 +) Background color. See above. In 32 bits per pixel modes there are two 16bit registers at this address. BEE8h index 0Eh bit 4 selects which 16 bits are accessible and each access toggles to the other 16 bits. A6E8h W(R/W): Foreground Color Register (FRGD_COLOR) bit 0-7 (911/924) Foreground Color. This is the color used for writing pixels where the Foreground Color Mix is selected and FSS=1, or the Background Color Mix is selected and BSS=1. 0-15 (801/5) Foreground color. See above. 0-31 (928 +) Foreground color. See above. In 32 bits per pixel modes there are two 16bit registers at this address. BEE8h index 0Eh bit 4 selects which 16 bits are accessible and each access toggles to the other 16 bits. AAE8h W(R/W): Write Mask Register (WRT_MASK) bit 0-7 (911/924) Writemask. A plane can only be modified if the corresponding bit is set. 0-15 (801/5) Writemask. See above. 0-31 (928 +) Writemask. See above. In 32 bits per pixel modes there are two 16bit registers at this address. BEE8h index 0Eh bit 4 selects which 16 bits are accessible and each access toggles to the other 16 bits. AEE8h W(R/W): Read Mask Register (RD_MASK) bit 0-7 (911/924) Read Mask affects the following commands: CMD_RECT, CMD_BITBLT and reading data in Across Plane Mode. Each bit set prevents the plane from being read. 0-15 (801/5) Readmask. See above. 0-31 (928 +) Readmask. See above. In 32 bits per pixel modes there are two 16bit registers at this address. BEE8h index 0Eh bit 4 selects which 16 bits are accessible and each access toggles to the other 16 bits. B2E8h W(R/W): Color Compare Register (COLOR_CMP) (not 911/924) bit 0-15 (801/5) This is the color which is compared to the destination data during BitBlts. The arithmetic comparison to be used (<,>,=,true, false, etc..) is specified by the COLCMPO bits of the PIX_CNTL register. If the result of the comparison is true, the destination data is left unchanged. 0-31 (928 +) See above. In 32 bits per pixel modes there are two 16bit registers at this address. BEE8h index 0Eh bit 4 selects which 16 bits are accessible and each access toggles to the other 16 bits. B6E8h W(R/W): Background Mix Register (BKGD_MIX) bit 0-3 Background MIX (BACKMIX). 00 not DST 01 0 (false) 02 1 (true) 03 2 DST 04 not SRC 05 SRC xor DST 06 not (SRC xor DST) 07 SRC 08 not (SRC and DST) 09 (not SRC) or DST 0A SRC or (not DST) 0B SRC or DST 0C SRC and DST 0D SRC and (not DST) 0E (not SRC) and DST 0F not (SRC or DST) DST is always the destination bitmap, bit SRC has four possible sources selected by the BSS bits. 5-6 Background Source Select (BSS) 0 BSS is Background Color 1 BSS is Foreground Color 2 BSS is Pixel Data from the PIX_TRANS register (E2E8h) 3 BSS is Bitmap Data (Source data from display buffer). BAE8h W(R/W): Foreground Mix Register (FRGD_MIX) bit 0-3 Foreground MIX (FOREMIX). Same as BACKMIX in B6E8h. 5-6 Foreground Source Select (FSS) 0 FSS is Background Color 1 FSS is Foreground Color 2 FSS is Pixel Data from the PIX_TRANS register (E2E8h) 3 FSS is Bitmap Data (Source data from display buffer). BEE8h W(R): Read Register Data Register (RD_REG_DT) (801/5,928) bit 0-15 BEE8h index Fh bits 0-2 selects the index which is read from this address. Each read of this address increases the pointer so all indices can be read by sequential reads of this register. BEE8h W(W): Multifunction Control Register (MULTIFUNC_CTRL) bit 0-11 Data. 12-15 INDEX. indicates which Multifunction register will be written with the data in bits 0-11. Note: Several registers are placed at BEE8h. When BEE8 is written the bits 12-15 selects the specific register to receive the write. Note: These registers are write-only on the 911 and 924, but read/write on later chips. BEE8h index 00h W(R/W): Minor Axis Pixel Count Register (MIN_AXIS_PCNT). bit 0-10 (911/924) Rectangle Height. Height of BITBLT or rectangle command. Actual height is one larger. 0-11 (80x +) Rectangle Height. See above Note: See note above on reading BEE8h. BEE8h index 01h W(R/W): Top Scissors Register (SCISSORS_T). bit 0-10 (911/924) Clipping Top Limit. Defines the upper bound of the Clipping Rectangle (Lowest Y coordinate). 0-11 (80x +) Clipping Top Limit. See above Note: See note above on reading BEE8h. BEE8h index 02h W(R/W): Left Scissors Registers (SCISSORS_L). bit 0-10 (911,924) Clipping Left Limit. Defines the left bound of the Clipping Rectangle (Lowest X coordinate). 0-11 (80x +) Clipping Left Limit. See above. Note: See note above on reading BEE8h. BEE8h index 03h W(R/W): Bottom Scissors Register (SCISSORS_B). bit 0-10 (911,924) Clipping Bottom Limit. Defines the bottom bound of the Clipping Rectangle (Highest Y coordinate). 0-11 (80x +) Clipping Bottom Limit. See above. Note: See note above on reading BEE8h. BEE8h index 04h W(R/W): Right Scissors Register (SCISSORS_R). bit 0-10 (911,924) Clipping Right Limit. Defines the right bound of the Clipping Rectangle (Highest X coordinate). 0-11 (80x +) Clipping Bottom Limit. See above. Note: See note above on reading BEE8h. BEE8h index 0Ah W(R/W): Pixel Control Register (PIX_CNTL). BIT 2 (911-928) Pack Data. If set image read data is a monochrome bitmap, if clear it is a bitmap of the current pixel depth 6-7 DT-EX-DRC. Select Mix Select. 0 Foreground Mix is always used. 2 CPU Data determines the Mix register used. 3 Video memory determines the Mix register used. Note: See note above on reading BEE8h. BEE8h index 0Dh W(R/W): Multifunction Control Miscellaneous 2 Register (MULT_MISC2) (864,964) bit 0-2 DST-BASE. Destination Base. Selects the megabyte the first destination address is in (huh?) 0: 1st MB, 1: 2nd MB 3: 4th Mb, 4: 5th MB, 5: 6th MB, 6: 7th MB, 7: 8th MB If this is >0 it will override index Eh bits 0-1 4-6 (864,964) SRC-BASE. Source Base. Selects the megabyte the first source address is in (huh?). 0: 1st MB, 1: 2nd MB, 2: 3rd MB, 3: 4th MB, 4: 5th MB, 5: 6th MB, 6: 7th MB, 7: 8th MB If this is >0 it will override index Eh bits 2-3 BEE8h index 0Eh W(R/W): Multifunction Control Miscellaneous Register (MULT_FUNC) (80x +) bit 0 (801/5) DEST-BA. Destination Base Address. Selects the megabyte the first destination address is in (huh?) 0: 1st MB, 1: 2nd MB 0-1 (928 +) DEST-BA. See above, plus 2: 3rd MB, 3: 4th MB 2 (801/5) SRC-BA. Source Base Address. Selects the megabyte the first source address is in (huh?) 0: 1st MB, 1: 2nd MB, 2: (928) 3rd MB, 3: (928) 4th MB 2-3 (928 +) SRC-BA. See above 4 (928 +) RSF. Register Select Flag. In 32bits per pixel modes this flag determines which half of the 32bit registers (A2E8h, A6E8h, AAE8h, AEE8h, B2E8h) will be accessible. 0: Lower half (bits 0-15), 1: Upper half (bits 16-31). 5 EXT CLIP. External Clipping. If set only pixels outside the Clipping Rectangle are drawn, if clear only pixels inside are drawn. 6 SLW RMW. Slow Read/Modify/Write Cycle. Set to use slow RMW cycles (4 MCLKs), clear to use fast RMW cycles (3 MCLKs). 7 SRC NE. Source Not Equal. If set bitmap data will only be updated if the Color Compare register (B2E8h) is equal to the source data, if clear the update only happens if the register and the source data differ. If bit 8 is clear the bitmap data will always be updated. 8 Enable Color Compare. If set enables Color Comparison. 9 (864/964) CMR 32B. Select 32-Bit Command Registers. If set the command registers (A2E8h, A6E8h, AAE8h, AEE8h and B2E8h) are 32bit byte and word access won't work, if clear they are 16bit. BEE8h index 0Fh W(W): Read Register Select Register (READ_SEL) (801/5,928) bit 0-2 (911-928) READ-REG-SEL. Read Register Select. Selects the register that is actually read when a read of BEE8h happens. Each read of BEE8h increments this register by one. 0: Read will return contents of BEE8h index 0. 1: Read will return contents of BEE8h index 1. 2: Read will return contents of BEE8h index 2. 3: Read will return contents of BEE8h index 3. 4: Read will return contents of BEE8h index 4. 5: Read will return contents of BEE8h index 0Ah. 6: Read will return contents of BEE8h index 0Eh. 7: Read will return contents of 9AE8h (Bits 13-15 will be 0). 0-3 (864,964) READ-REG-SEL. See above plus: 8: Read will return contents of 42E8h (Bits 12-15 will be 0) 9: Read will return contents of 46E8h 10: Read will return contents of BEE8h index 0Dh E2E8h W(R/W): Pixel Data Transfer Register (PIX_TRANS) bit 0-15 Data can be read from or written to the display buffer. In through plane mode (PLANAR=0), bits 0-7 and 8-15 map onto bit planes 0-7 of an individual pixel. In across plane mode (PLANAR=1) bits 0-4 and 8-12 map onto pixels 0-4 within a nugget (1 bit per pixel). Note: Write only on the 864,964 ?? E2EAh W(R/W): Pixel Data Transfer Register (PIX_TRANS) (80x +) bit 0-15 This is an extension of E2E8h for 32bit transfers. Note: Write only on the 864,964 ?? ELSA EEProm data structures: WORD: Bit: 00h 0-15 CRC of entire EEProm image 01h 0-15 Always 3353h ('S3') 02h 0-15 Board code: 910h ELSA Winner 1000 912h ELSA Winner 1000 VESA Local Bus 914h ELSA Winner 1000 PCI 91Ah ELSA Winner 1000 ISA 920h ELSA Winner 2000 922h ELSA Winner 2000 VESA Local Bus 924h ELSA Winner 2000 PCI 930h ELSA Winner 1000 Pro 940h ELSA Winner 2000 Pro 03h 0-15 Serial Number, lower 16bits 04h 0-15 Serial Number, upper 16bits 05h 0-15 Size (in words) of the EEProm structure 06h Hardware Configuration 07h 0-15 Max Pixel Clock in units of 4KHz 08h 0-15 Max Memory Clock in units of 4KHz 09h Vmode0 0Ah Key Word 0Bh 0-15 Monitor Horizontal Size in mm 0Ch 0-15 Monitor Vertical Size in mm 0Dh Software Version 0Eh-19h Reserved Mode information, one record per mode: 00h 10-15 Bits per Pixel (bpp) 0-9 Horizontal Resolution in units of 4 pixels 01h 12-15 Flags 0-11 Vertical Resolution i scanlines 02h 0-15 Pixel Frequency in units of 4KHz 03h 0-11 Horizontal Total 12-15 Horizontal Front Porch bit 6-9 04h 10-15 Horizontal Front Porch bit 0-5 0-9 Horizontal Sync Width 05h 0-11 Vertical Total in scanlines 12-15 Vertical Front Porch bit 6-11 06h 10-15 Vertical Front Porch bit 0-5 0-9 Vertical Sync Width 07h Reserved 08h Reserved PCI Configuration Registers PCI 00h W(R): Vendor ID bit 0-15 5333h ('S3'). PCI 02h W(R): Device ID bit 0-15 88C0h for 864, 88D0h for 964. For 764 and later chips probably 3d4h index 2Dh in the high byte and 3d4h index 2Eh in the low byte. PCI 04h W(R/W): Command bit 0 I/O. Response to I/O Accesses enabled if set 1 MEM. Response to Memory Accesses enabled if set. 5 DAC RSP. No Response to RAMDAC Register Access. If set there is no access to the RAMDAC registers. PCI 06h W(R): Status bit 9-10 DEVSEL. Device Select Timing. 1: Medium /DEVSEL timing. PCI 08h (R): Revision ID bit 0-7 Revision level. Probably 3d4h index 2Fh for 764 and later chips. PCI 0Ah (R/W): Programming Interface bit 0 VGA. Set as we supports the VGA interface PCI 10h D(R/W): Base Address 0 bit 0 (R) MSI. Memory Space Indicator. 0 as it is Memory Mapped. 1-2 (R) TYPE. Type of Address Relocation. 0 as we can locate anywhere in 32bit address space 3 (R) PREF. Prefetchable. 0 as the memory is non-cachable. 23-31 BASE ADDRESS0. Upper 9 bits of the memory address. See 3d4h index 59h for details. Updates should be done to this register. PCI 30h D(R/W): BIOS ROM Base Address bit 0 ADE. Address Decode Enable. Set to access the BIOS ROM at the address defined here. 16-31 BIOS ROM BASE ADDRESS. Upper 16bits of the BIOS ROM base address ID S3 chip: wrinx(base,$38,0); {disable extensions} if not testinx2(base,$35,$F) then begin wrinx(base,$38,$48); if testinx2(base,$35,$F) then begin __S3__ case rdinx(base,$30) of $81:86c911 $82:86c911A or 86c924 $90:86c928 C $91:86c928 D $94,$95:86c928 E $A0:86c801/5 A or B $A2..$A4:86c801/5 C $A5:86c801/5 D $B0:86c928 PCI end; end; end; Video Modes (Diamond Stealth): VESA: 54h T 132 43 16 55h T 132 25 16 101h G 640 480 256 P8 6Ah 102h G 800 600 16 PL4 103h G 800 600 256 P8 104h G 1024 768 16 PL4 205h G 1024 768 256 P8 206h G 1280 960 16 PK4 208h G 1280 1024 16 PK4 211h G 640 480 64K P16 Stealth 24 only 212h G 640 480 16M P24 Stealth 24 only 301h G 640 480 32k P15 HiColor '911/'924 cards 106h G 1280 1024 16 PL4 107h G 1280 1024 256 P8 Remaining modes not on '911 and '924 cards Note the 16m color modes are type P24 on 801/5's and P32 on 928's 110h G 640 480 32k P15 111h G 640 480 64k P16 112h G 640 480 16m P32 This is a P24 mode 113h G 800 600 32k P15 114h G 800 600 64k P16 115h G 800 600 16m P32 116h G 1024 768 32k P15 117h G 1024 768 64k P16 118h G 1024 768 16m P32 119h G 1280 1024 32k P15 11Ah G 1280 1024 64k P16 45h G 1600 1200 256 P8 STB Pegasus 126h G 1152 864 P16 Number 9 127h G 1152 864 P32 Number 9 ----------101DAA------------------------------- INT 10 - VIDEO - Diamond Stealth - Check for Stealth AX = 1DAAh BX = FDECh Return: AL = 01h For Stealth VRAM 02h For Stealth 24 AH = DACtype: 00h Standard VGA DAC 11h Highcolor DAC where bit 3 of the command register is not writable. 23h SS2410 DAC 33h Highcolor DAC without RS2 decoding 43h Highcolor DAC with RS2 decoding SI:DI -> BIOS version & Copyright string ----------101DAA------------------------------- INT 10 - VIDEO - Diamond Stealth 64 AX = 1DAAh BX = FDECh Return: BX = CEDFh For Stealth64 SI:DI -> BIOS message AL = Amount of memory 01h for 1Mb 02h for 2Mb 04h for 4Mb AH = DAC Type Bit 0-3 DAC Type. 0: Normal, 1: Sierra, 2: Diamond SS24, 3: Bt485 (135MHz), 4: STG1700, 5: STG1702, 6: AT&T 20c49x, 7: STG1703, 8: S3 SDAC, 9: Bt485 (175MHz) 4 Bus type. 0: VESA VLB, 1: PCI ----------104FFF----------------------------------- INT 10 - VIDEO - S3 - SET/RESET DUAL DISPLAY MODE AX = 4FFFh BX = Dual display mode 00h Reset 01h Set dual display, 32KB VGA test 02h Set dual display, 64KB VGA test Return: AX = 4F00h if successful BX = number of scanlines off screen for test mode ----------107F------------------------------------- INT 10 - VIDEO - Diamond Stealth/Stealth 24 - SET TEXT MODE AH = 7Fh BH = 00h Set Color text mode 01h Set Color text mode 02h Set Monochrome text mode Note: Actually only bit 0-1 of BH are tested. ----------107F00-4000------------------------------ INT 10 - VIDEO - S3 80x/928 - GET S3 INFORMATION BLOCK AX = 7F00h BX = 4000h Return: AX = 007Fh if supported DX:BX -> DAC set mode rutine Note: Might be implemented in Diamond Stealth 24 with BIOS version > 3.33 ----------107F00-4001------------------------------ INT 10 - VIDEO - S3 80x/928 - GET LINEAR ADDRESS AX = 7F00h BX = 4001h Return: AX = 007Fh if supported CX = current linear address base (high word) Note: Might be implemented in Diamond Stealth 24 with BIOS version > 3.33 ----------107F00-4002------------------------------ INT 10 - VIDEO - S3 80x/928 - SET LINEAR ADDRESS AX = 7F00h BX = 4002h CX = new linear address base (high word) Return: AX = 007Fh if supported Note: Might be implemented in Diamond Stealth 24 with BIOS version > 3.33