ATI Technologies Super VGA Chip Sets. 18800 V3. ROM BIOS label: V3M 18800-1 100pin V4. ROM BIOS label: V4M 18800-1 100pin V5. Uses 18810 Dot Clock Chip. ROM BIOS label: V5M 28800-2 V6. VGA Wonder+ 28800-4 V7. VGA Wonder XL 28800-5 VGA Wonder (1MB)/XL, Graphics/Ultra (VGA chip) 28800-6 160pin VGA Wonder XL24 38800-1 Mach 8. 8514/Ultra and Graphics/Ultra (8514/A chip) 68800-3 208pin Mach 32. Graphics Ultra Pro/+ Combined 8514/A and VGA chip. 68800-6 208pin As -3, but with memory mapped registers 68800-LX 208pin As -6, but only supports DRAM (no VRAM) 68800-AX 208pin As -6, but supports PCI bus 88800GX 208pin Mach64 (there is also an 88800CX ??) Support chips: ATI18810 Clock chip for 18800-1, 28800 ATI18811 Clock chip for 68800 ATI18820 Bus Mouse Controller ATI Prism Elite uses Trident 8800CS chips. ATI VGA Wonder XL can use the Sierra HiColor RAMDAC. Note that the base register for the ATI extended registers should be read from the word at 0C000h:10h (NOT on Mach64), as ATI reserves the right to change the base address. However all current implementations use 1CEh. Note: The ATI chips handles the indexed registers slightly differently from other VGA chips, as the index register must be written before each read or write of the associated data register. 1CEh index 80h (R/W): ATI Register 0 (ATI00) (68800 only) bit 0-7 Scratch Pad 1CEh index 81h (R/W): ATI Register 1 (ATI01) (68800 only) bit 0-7 Scratch Pad 1CEh index 82h (R/W): ATI Register 2 (ATI02) (68800 only) bit 0-7 Scratch Pad 1CEh index 83h (R/W): ATI Register 3 (ATI03) (68800 only) bit 0-7 Scratch Pad 1CEh index 84h (R/W): ATI Register 4 (ATI04) (68800 only) bit 0-7 Scratch Pad 1CEh index 85h (R/W): ATI Register 5 (ATI05) (68800 only) bit 0-3 CPUCLK Select. Selects the number of CPU clocks for the basic command cycle in the local bus. 4-5 Delay Memory Read Ready Control. 0: Read Ready signal is 1 MCLK before memory data is available 1: Read Ready signal is simultaneously with the memory data. 2: Read Ready signal is 1 MCLK after memory data is available 3: Read Ready signal is 2 MCLKs after memory data is available 6 Delay latch memory read data by one half memory clock cycle in VGA planar mode. 7 Cursor Blink Rate Select. Half normal rate if set. 1CEh index 86h (R/W): ATI Register 6 (ATI06) (68800 only) bit 0-2 Text mode character FIFI depth 4-6 Number of CPUCLK cycles in the local bus BIOS ROM read cycle. 1CEh index A0h (R/W): ATI Register 20 (ATI20) (28800 +) bit 0-3 (68800 only) Display FIFO. Selects the video FIFO depth where the Display Request changes from low to high priority in the memory controller. Default is 8 4 Enable 16bit ROM if set 5-6 (68800 only) RAMDAC Extended Address Select. Connected to RS2 and RS3 on the RAMDAC, giving access to all 8 or 16 registers on advanced RAMDACs. 1CEh index A1h (R/W): ATI Register 01h (28800 +) bit 0-2 Reserved 3-4 Digital Monitor Detection 5-7 Reserved 1CEh index A2h (R/W): ATI Register 02h (28800 +) bit 0-7 Reserved 1CEh index A3h (R/W): ATI Register 23 (ATI23) (28800 +) bit 0-2 16bit ROM Access. ROM access time (Single 16bit ROM). 3 Cursor Start Address bit 17. Bit 17 of the Cursor Start Address (3d4h index 0Eh,0Fh) Bit 16 is in 4 Display start address bit 17. Bit 17 of the Display Start Address (3d4h index 0Ch,0Dh). Bit 16 is in 1CEh index B0h bit 6. 5-7 Reserved 1CEh index A4h (R/W): ATI Register 24 (ATI24) (28800 +) bit 0-3 ROM page 0 4-7 ROM page 1 1CEh index A5h (R/W): ATI Register 25 (ATI25) (28800 +) bit 0-3 ROM page 2 4-7 ROM page 3 1CEh index A6h (R/W): ATI Register 26 (ATI26) (28800 +) bit 0 (68800) Display Enable Skew-by-2. If set skews the "Display Enable" signal by 2 character clocks. 3 (68800) General Purpose R/W Bit. 6 (68800) Solid Underline. Set for solid underline in monochrome text, clear for dashed underline. 7 Forced read 3CCh. If set forces GENMO[1-7] to 0 while reading 3CCh 1CEh index A7h (R/W): ATI Register 07h (28800 +) bit 0 Enable True color mode 1,3 True Color DAC installed 2 Reserved 4-5 Forced pixel data to high 6 Skew display enable 7 Enable divide by 3 clock 1CEh index A8h (R): ATI Register 28 (ATI28) (28800-5 +) bit 0-1 Vertical Line Counter bit 8-9 2-7 Reserved 1CEh index A9h (R): ATI Register 29 (ATI29) (28800-5 +) bit 0-7 Vertical Line Counter bit 0-7 Note: The VGA Wonder documents A8h as the low byte and A9h as the high byte, but at least for the 28800-6 and Mach32 A8h IS the low byte. 1CEh index AAh (R/W): ATI Register 0Ah (28800-5 +) bit 0-3 (R) Chip Revision ID. 6 for the 28800-6, (5 for the 28800-5 ??) 4 Address/Data bus configuration 5-7 Reserved 1CEh index ABh (R/W): ATI Register 2B (ATI2B) (28800 +) bit 0 Video Zero Wait-State Enable. Enables zero wait state support for video memory write if set 1 BIOS Zero Wait-State Enable. Enables zero wait state for BIOS read if set 2 (68800) I/O Zero Wait State Enable if set 3 Select secondary display (68800) Double Scan Lock Enable. Locks 3d4h index 9 bit 7 if set 4 (28800-6 +) Lock DAC write. If set locks the RAMDAC write signal 5 (28800-6) Zero wait state enable 6 Restrict CPU access (68800) Memory Data Delay Latch in Text Mode. If set latching of memory data from the DRAM port is delayed by 1/2 MCLK in text modes 7 Video Data Delay Latch in Text Mode. If set internal latching of video data from the serial port is delayed by 1/2 MCLK in text modes 1CEh index ACh (R/W): ATI Register 0Ch (28800-6 +) bit 0 Enable Linear Addressing 1-5 Reserved 6 Enable 1024x768x16 color planar pass through internal palette 7 Reserved 1CEh index ADh (R/W): ATI Register 2D (ATI2D) (28800-6 +) bit 0 (28800-6) Extended Horizontal Total bit 8. Bits 0-7 are in 3d4h index 0. Only used if bit 3 is set 1 (28800-6) Extended CRTC Start Blanking bit 8. Bits 0-7 are in 3d4h index 2. Only used if bit 3 is set 0-1 (68800) Extended Cursor Address. Bits 18-19 of the Cursor Address register (3d4h index 0Eh,0Fh). Bit 16 is in 1CEh index B0h bit 2 and bit 17 in 1CEh index A3h bit 3. 2 (28800-6) Extended CRTC Horizontal Retrace Start bit 8. Bits 0-7 are in 3d4h index 4. Only used if bit 3 is set 3 (28800-6) Extended CRTC Registers Enable 2-3 (68800) Extended Start Address. Bits 18-19 of the Display Start Address register (3d4h index 0Ch,0Dh). Bits 16 is in 1CEh index B0h bit 6 and bit 17 in 1CEh index A3h bit 4 4-7 Extended Character Map Address. Bits 16-19 of the address where the font maps are stored. See 3C4h index 3. 1CEh index AEh (R/W): ATI Register 2E (ATI2E) (68800 only?) bit 0-1 (68800) Write/Single bank bit 4-5 2-3 (68800) Read bank bit 4-5 4 If sets locks the CPUCLK select bits (1CEh index 85h bits 0-3). 5-7 Horizontal Sync Skew relative to pixel clock. 1CEh index AFh (R/W): ATI Register 0Fh bit 0-7 Reserved 1CEh index B0h (R/W): ATI Register 30 (ATI30) bit 0 Skews Display Enable by one character clock if set 1 (188xx) Enable 256 color modes (288xx) Enable alt Video memory organization in text modes 2 (188xx) Enable 256 color modes (28800 +) Extended Cursor Start Address. Bit 16 of the Cursor Start Address register (3d4h index 0Eh,0Fh). Bit 17 is in 1CEh index A3 bit 3. 3 (188xx) Enable 8 CRT accesses for each CPU access 3-4 (28800-4 +) Video memory: 0=256k, 1=1M, 2=512K 4 (28800-2) Video memory: 0=256k, 1=512k 5 (28800 +) ATI-Ext 256 Color Mode Select. Enables extended 256 color modes if set 6-7 (188xx) Display Start Address bit 16-17 6 (28800 +) Extended Display Start Address. Bit 16 of the Display Start Address register (3d4h index 0Ch,0Dh). Bit 17 is in 1CEh index A3h bit 4 7 (28800 +) Enable Higher bandwidth in VRAM 1CEh index B1h (R/W): EGA Compatibility and Double Scanning Enable bit 0 EGA I/O Address Compatibility. Forces all VGA I/O addresses to be EGA compatible if set 1 EGA Register Compatibility. Forces all VGA registers to be EGA compatible if set 2 General purpose read/write bit 3-5 Scan Function. Double scanning/3 of 4 scanning enable 0: Normal 1: Enable double scanning in graphics mode 2: Enable 3 of 4 scanning in graphics mode 5: Enable double scanning in text mode 6: Enable 3 of 4 scanning in text mode 6 Vertical Timings Divide by 2. If set divides the Vertical timing parameters by 2 7 Reserved 1CEh index B2h (R/W): Memory Page Select bit 0 (18800) Enable interlace if set (18800-1) reserved (28800 +) Read bank no bit 3 1-3 (18800-1) Write/Single bank no. 1-4 (28800 +) Write/Single bank no (18800) Bank no. in 64 chunks 5 (18800) Enable internal DIP switch settings (EGA mode) 6 (18800) External clock select. Bit 2 of the clock select. Bits 0-1 are in 3C2h/3CCh bits 2-3. Clocks in MHz: 0: 50.175, 1: 56.644, 3: 44.900, 4: 44.900, 5: 50.175, 7: 36.000 7 (18800) Reserved 5-7 (18800-1 +) Read bank no 1CEh index B3h (R/W): ATI Register 33 (ATI33) bit 0 EEPROM data input 1 EEPROM clock source 2 Enable EEPROM interface 3 EEPROM chip select. Enables EEPROM if set 4 (18800?) Enable PS/2 decoding (18800-1) Disable memory beyond 256K if set 5 (28800 +) XOR with input status bit HSYNC to select 8 or 16 bit video memory operation (68800) ISA bus 8/16bit Video Memory Operation. Selects 8 or 16 bit Video memory operation depending on whether input pin RMCE1B is grounded through a 2K Ohm resistor. If grounded: 1: 8bit, 1: 16bit If NOT grounded: 0: 16bit, 1: 8bit 6 (18800) Enable 1 CRT access to 1 CPU access (18800-1 +) 4bit PEL, 1bit/map. Enables 1024x768 16 color planar pixel mode if set. If set 16 pixels are loaded and displayed per character clock rather than the normal 8, also the CRTC offset register (3d4h index 13h) is in units of 4 bytes rather than 2. 7 Double Scan Enable. Enable double scanning for 200 line modes if set Note: This register should not be modified on revision 1 chips. 1CEh index B4h (R/W): Emulation Control bit 0 Enable CGA emulation if set 1 Enable Hercules emulation if set 2 Write Protect CRT09[0-4,7]. If set write protects 3d4h index 9 bits 0-4 and 7 3 Write Protect Vertical Timing registers. If set write protects 3d4h index 6, 7 bits 0-3 and 5-7, 9 bit 5, 10h, 11h bits 0-3, 12h, 15h and 16h 4 Write Protect CRT0A-CRT0B. If set write protects the Cursor Start and End registers (3d4h index 0Ah and 0Bh). 5 Write Protect CRT08[0-6], CRT14[0-4]. If set write protects registers 3d4h index 8 bits 0-6 and index 14h bits 0-4 6 Write Protect CRT00-CRT07. If set write protects 3d4h index 0-7 except index 7 bit 4 7 CRT11[7] Override. If set 3d4h index 11h bit 7 is ignored and does not lock other CRTC registers. 1CEh index B5h (R/W): ATI Register 35 (ATI35) bit 0 Blanking Signal Select. Select display enable as the blanking signal if set 1 Blanking Polarity Invert. Inverts the polarity of the blanking signal BLANKB if set 2 Display Enable Signal Skewed. Skews the Display Enable signal by one PEL clock period if set 3 Select Map 3 as programmable character generator (68800) General Purpose Read/Write bit. 4 (18800-1 +) Enable 8 simultaneous fonts if set. Background is then always 0, and bit 4-7 of the attribute selects the font. The font location in plane 2 (sorted by attribute bit 4-7) is: 0: 0K, 1: 32K, 2: 8K, 3: 40K, 4: 16K, 5: 48K, 6: 24K, 7: 56K (68800) Anti-alias Fonts Enable. 5 Disable Cursor Blinking if set 6 CGA Cursor Start/End Address. If set adds 5 to the cursor start and end registers for CGA emulation. 7 Select undivided input clock as pixel clock (68800-6) VGA Overscan Output Enable. If set generates an overscan signal that can be used by the RAMDAC to select a color outside the normal 256color palette (overlay registers in the RAMDAC). 1CEh index B6h (R/W): High Resolution Enable bit 0 (28800-4 +) CRTC Display Address Counter Enable. Set to enable >16bit CRTC address counter. If clear the display wraps at 256K (planar modes - 4x64K) or 512K (packed modes - 8x64K). 1 Enable 640x400 Hercules emulation if set 2 Enable linear addressing in 256color modes if set 3 Select 4 color high res modes (68800) General Read/Write bit. 4 16 Color Enable, APA Mode. Set to enable 16 color high resolution modes. If set the horizontal timings (3d4h index 0-5) are doubled. 5 Enable vertical interrupts if set 6 (18800 - 28800-3) Enable linear addressing (?) Select composite sync for output (68800) Linear Addressing, Text Mode. Enables linear addressing in text modes if set. 7 Screen Blanking Disable. Disable blanking screen blank in CGA and Hercules emulation if set 1CEh index B7h (R/W): ATI Register 37 (ATI37) bit 0 Status of ISA bus 16bit Operation Select. 16bit if set, 8bit if clear 1 (not 68800) PS/2 configuration 2 (not 68800) Video memory is DRAM if set, VRAM if clear 3 Output Data for the EEPROM input 4 Status of ROM Address Decode. Decode enabled if set 5 (not 68800) Select I/O address at 3xxh or 2xxh 6-7 Reserved 1CEh index B8h (R/W): Write Protect and Clock Select bit 0 Write Protect ATTR00-0F. If set write protects the Palette registers (3C0h index 0-0Fh). 1 Write Protect ATTR11. If set write protects the Overscan register (3C0h index 11h). 2 Write Protect VGA Registers. If set write protects all VGA registers except the Display Start Address (3d4h index 0Ch,0Dh) and the Cursor Start and End registers (3d4h index 0Ah and 0Bh) 3 Write Protect Register at I/O Port 3C2h if set 4 (not 68800) Lock horizontal sync polarity if set 5 (not 68800) Lock vertical sync polarity if set (68800) 640x300 Hercules Graphics Emulation. Enabled if set 6-7 (Not 68800) Divide Video Clock by: 0: 1, 1: 2, 2: 3, 3: 4 6 (68800) Clock Divider. If set divides the input Video Clock by 2. 7 (68800) General Purpose Read/Write bit 1CEh index B9h (R/W): ATI Register 39 (ATI39) bit 0 (?) Clock select 1 (18800-1 +) Select input to clock chip. See index BEh bit 4 (68800) Documented as "General Purpose Read/Write bit", but is actually a Clock Select bit as for the earlier chips! 2-3 ROM address space. 0: 32k at C000h, 1: 28k at C000h, 2,3: 24k at C000h 4-5 Wait cycles for 16 bit ROM access: 0: 8 cycles, 1: 4 cycles, 2: 2 cycles, 3: none (68800) General Purpose Read/Write bits. 6 16bit I/O Operation. If set I/O operations are 16bits, 8bits if clear 7 Write Protect CRT18. If set write protects the Line Compare register (3d4h index 18h) 1CEh index BAh (R/W): ATI Register 3A (ATI3A) bit 0-2 (not 68800) Delay chain timing compensation for TTL monitors and 16color RGB simulation (68800) General Purpose Read/Write bits 3 (not 68800) Disable secondary Red output (for RGB monitors) 4 (not 68800) Enable EGA color simulation for RGB monitors 5 (not 68800) Enable monochrome grey scale circuit 6 reserved 7 (not 68800) Delay chain resolution compensation 1CEh index BBh (R/W): Input Status Register bit 0-3 Monitor Type: 0: EGA 1: PS/2 Analog Monochrome 2: TTL Monochrome 3: PS/2 Color 4: RGB Color 5: MultiSync 7: PS/2 8514 8: Seiko 1430 9: NEC Multisync 2A A: Crystalscan 860/Tatung 1439 B: NEC Multisync 3D C: TVM 3M D: NEC MultiSync XL E: TVM 2A F: TVM 3A 4 (188xx) General read/write bit (28800 +) Bit 4 of the Monitor Type above 5 (188xx) Video memory is 512Kbytes if set, 256K else 6-7 Reserved 0-7 (68800) General Purpose Read/Write bits Note: this register is set by the BIOS 1CEh index BCh (R/W): ATI Register 3C (ATI3C) bit 0-7 reserved, must be 0 1CEh index BDh (R/W): EGA Switch Settings bit 0 Composite Sync Polarity Select. 2 (28800-5 +) 128K CPU Address. Enables A0000h-BFFFFh as one 128K page if set 3 Composite Sync Select. If set selects Composite Sync output, if clear Horizontal Sync. 4-7 EGA switch settings 1CEh index BEh (R/W): ATI Register E (not 18800) bit 0 R/W Vertical Display End Register. If set unlock Vertical Display End register (3d4h index 12h) even in Double Scan modes. 1 Interlace Operation. Set to enable interlace. 2 Select Internal EGA DIP Switches. If set use 1CEh index BBh bits 4-7, if clear use 3 Read/Write Paging Select. Selects Read/Write bank mode if set, single bank mode if clear 4 (18800-1 without 18810 Clock Chip (V4)) External clock select. Bit 2 of the clock select. Bits 0-1 are in 3C2h/3CCh bits 2-3. Clocks in MHz: 0: 50.175, 1: 56.644, 3: 44.900, 4: 44.900, 5: 50.175, 7: 36.000 (18800-1 with 18810 Clock Chip, 28800 +) Clock Select BEh bit 4: B9h bit 1: 3C2h bit 3: 3C2h bit 2: Frequency: 0 0 0 0 42.954 MHz 0 0 0 1 48.771 0 0 1 0 Ext 0 (16.657) 0 0 1 1 36.000 0 1 0 0 50.350 0 1 0 1 56.640 0 1 1 0 Ext 1 (28.322) 0 1 1 1 44.900 1 0 0 0 30.240 1 0 0 1 32.000 1 0 1 0 37.500 1 0 1 1 39.000 1 1 0 0 40.000 1 1 0 1 56.644 1 1 1 0 75.000 1 1 1 1 65.000 (68800) Documented as "General Purpose Read/Write bit", but is actually a Clock Select bit as for the earlier chips! 6 (not 68800) Enable 1024x768 16 color mode 7 (not 68800) Enable 1024x768 4 color mode 1CEh index BFh (R/W): Miscellaneous Register (not 188xx) bit 0 (68800) Disable Zero Wait State in planar modes if set 1-3 (68800) Delay in number of MCLK cycles before latching first CPU data in 16bit planar modes. 6 (288xx) ROM page address bit 7 (288xx) Alternate memory organisation for graphics enable 23Ch (R): Port A (18820 only) bit 0-3 The data selected by 23Eh bits 5-6. 5 Clear if the right mouse button is down. 6 Clear if the middle mouse button is down. 7 Clear if the left mouse button is down. Note: The registers 23Ch-23Fh are relocated to 238h-23Bh if the secondary mouse port address is selected. This can be done in software or jumper. 23Ch (R/W): Port A (288xx) bit 0-2 Internal Register Index. Selects the register to access at 23Dh 7 Set to reset the chip, clear for normal operation. Note: The 28800 series has built in Inport Mouse support. Note: The registers 23Ch-23Fh are relocated to 238h-23Bh if the secondary mouse port address is selected. This is done in software. 23Ch index 0 (R/W): Mouse State (288xx) bit 0 Set if right mouse button is down 1 Set if middle mouse button is down 2 Set if left mouse button is down 3 Set if the right mouse button state has changed since Hold was set 4 Set if the middle mouse button state has changed since Hold was set 5 Set if the left mouse button state has changed since Hold was set 6 Set if the mouse has moved 7 Set if packet complete Note: this register is valid when 23Ch index 7 bit 5 is set 23Ch index 1 (R/W): X Movement Count (288xx) bit 0-7 X-Count. Two's complement movement X count Note: this register is valid when 23Ch index 7 bit 5 is set 23Ch index 2 (R/W): Y Movement Count (288xx) bit 0-7 Y-Count. Two's complement movement Y count Note: this register is valid when 23Ch index 7 bit 5 is set 23Ch index 7 (R/W): Mode (288xx) bit 0-2 Timer Select. Sets the maximum interrupt rate. Interrupts only occur if the button state has changed or the mouse has moved. 0: 0Hz (Never), 1: 30Hz, 2: 50Hz, 3: 100Hz, 4: 200Hz, 6: Always 3 Data Interrupt Enable. If set an interrupt will be generated when the button state has changed or the mouse has moved. 4 Timer Interrupt Enable. If set interrupts will be generated at the frequency specified in bits 0-2. 5 Hold. Should be set before reading index 0-2 and reset after. 6-7 Mode. 0: Quadrature Mouse. 23Dh (R/W): Port B (18820 only) Note: only used to detect I/O address 23Eh (R/W): Port C (18820 only) bit 0 (R) Set if IRQ5 selected 1 (R) Set if IRQ4 selected 2 (R) Set if IRQ3 selected 3 (R) Set if IRQ2 selected 4 Interrupts disabled if set, enabled if clear 5-6 Counter Read Select. Selects the data to return in 23Ch bits 0-3 0: Low nibble of X Counter 1: High nibble of X Counter 2: Low nibble of Y Counter 3: High nibble of Y Counter 7 Hold. Set this bit at the beginning of the Interrupt Service Rutine, clear after reading counter. 23Eh (R): Port C (288xx) Bit 0-7 Alternates between DEh and 11h on each read. 23Fh (R/W): Port D (18820 only) bit 0-7 Used to control timer, must be 91h 2EEh (W): Overscan Color Register (Mach32) bit 0-7 OVERSCAN_COLOR_8. Overscan color for 4 and 8bit modes 2EFh (W): 24Bit Blue Overscan Component (Mach32) bit 0-7 OVERSCAN_BLUE_24. Blue Overscan color for 16 and 24bit modes 3C0h index 00h-0Fh (R/W): Palette index register bit 4-5 Mode 67h Palette set selection. These bits should be the same in all 16 attribute registers. Value Pixel=0 1 2 3 0 Black White Grey Bright White 1 Black Green Red Yellow 2 Black Cyan Red White 3 Black Cyan Magenta White Note: this is special to mode 67h only!! 3CEh index 50h (R/W): (Mach32/64 only?) bit 0-7 Lower 8 bits of the ATI extended register base I/O address 3CEh index 51h (R/W): (Mach32/64 only?) bit 0-3 Bits 8-11 of the ATI extended register base I/O address. Bits 0-7 are in 3CEh index 50h. 6-7 Selects the index range for the extended registers within the ATI extended registers. 0: 00h-3Fh, 1: 40h-7Fh, 2: 80h-BFh, 3: C0h-FFh Note: Usually these registers are programmed to place the extended registers at 1CEh with index 80h-BFh. (50h = CEh and 51h = 81h). 6EEh (W): 24Bit Green Overscan Component (Mach32) bit 0-7 OVERSCAN_GREEN_24. Green Overscan color for 16 and 24bit modes 6EFh (W): 24Bit Red Overscan Component (Mach32) bit 0-7 OVERSCAN_RED_24. Red Overscan color for 16 and 24bit modes 0AEEh W(W): Cursor Offset Low (Mach32) bit 0-15 CURSOR_OFFSET_LO. Lower bits of the address (in DWORDs) of the cursor map in video memory. The upper bits are in 0EEEh. The cursor map is a 64x64 pixel map with two bits per pixel. Pixel: Pixel Color: 0 Cursor Color 0 1 Cursor Color 1 2 Transparent (Screen data) 3 Complement (XOR cursor) 0EEEh W(W): Cursor Offset High (Mach32) bit 0-3 CURSOR_OFFSET_HI. Upper bits of the address of the cursor map. Low bits are in 0AEEh. 15 CURSOR_ENA. Set to enable the Hardware Cursor 12EEh W(R): Configuration Status 1 Register (Mach8) bit 0 CLK_MODE. Set to use clock chip, clear to use crystals. 1 BUS_16. Set for 16bit bus, clear for 8bit bus 2 MC_BUS. Set for MicroChannel bus, clear for ISA/EISA bus 3 EEPROM_ENA. EEPROM enabled if set 4 DRAM_ENA. Set for DRAM, clear for VRAM. 5-6 MEM_INSTALLED. Video memory. 0: 512K, 1: 1024K 7 ROM_ENA. Set is ROM is enabled 8 ROM_PAGE_ENA. Set if ROM paging enabled 9-15 ROM_LOCATION. If bit 2 and 3 are 0 the ROM will be at this location: 0: C000h, 1: C080h, 2: C100h, .. 127: FF80h (unlikely) 12EEh W(R): Configuration Status 1 Register (Mach32) bit 0 8514_ONLY. If set the VGA is disabled, if clear VGA and 8514 enabled 1-3 BUS_TYPE. 0: ISA, 1:EISA, 2:16bit MCA, 3: 32bit MCA, 4: Local Bus (386SX), 5: Local Bus (386DX), 6: Local Bus (486), 7: PCI 4-6 MEM_TYPE. Memory type: 0: 256Kx4 DRAM 1: 256Kx4 VRAM with 512bit serial transfer 2: (68800-3) 256Kx4 VRAM with 256bit serial transfer (68800-6 +) 256Kx16 VRAM with 256bit serial transfer 3: 256Kx16 DRAM Remaining only for 68800-6 and up: 4: 256Kx4 Graphics DRAM 5: 256Kx4 VRAM with 512bit split transfer 6: 256Kx16 VRAM with 256bit spilt transfer 7 CHIP_DIS. Chip disabled if set 8 TST_VCTR_ENA. If set delay memory write data by 0.5 MCLK for test vector generation. 9-11 DACTYPE: Indicates the type of RAMDAC installed: 0: ATI 68830 (8bit i/f, 8 and 15/16bit modes) 1: SC1148x, IMS-G173,MU9c4870 (8bit i/f, 8 and 15/16bit modes) 2: ATI68875, Bt885, TLC34075 (24/32bit i/f, 8,15/16 and 24bit modes) 3: Bt47x, INMOS17x (8bit i/f, 8bit modes - standard DAC) 4: AT&T20c49x, Bt48x, IMS-G174, MU9c1880, MU9c4910, SC1502x (8bit i/f, 8,15/16 and 24bit modes) 5: ATI68860 (24/32/64bit i/f, 8,15/16 and 24bit modes) Only for 68800-AX 12 MC_ADR_DECODE. Enable internal microchannel address decode if set, external if clear 13-15 CARD_ID. Used for multiple controllers 12EE W(W): Horizontal Cursor Position Register (Mach32) bit 0-10 H_CUR_POSN. Cursor X-position in units of 8 pixels relative to the address in 2AEEh & 2EEEh 16EEh (R): Configuration Status 2 Register (Mach8) bit 0 SHARE_CLOCK. If set the Mach8 shares clock with the VGA 1 HIRES_BOOT. Boot in hi-res mode if set 2 EPROM_16_ENA. Adapter configured for 16bit ROM if set 3 WRITE_PER_BIT. Write masked VRAM operations supported if set 4 FLASH_ENA. Flash page writes supported if set 16EEh W(R): Configuration Status 2 Register (Mach32) bit 0 (68800-3 only) SLOW_SEQ_EN. Use 2 clock sequencer timing if set, 1 clock sequencer timing if clear 1 MEM_ADDR_DIS. Disable FE0000h-FFFFFFh if set 2 ISA_16_ENA. (ISA bus only) 16bit ISA bus if set, 8bit if clear 3 KOR_TXT_MODE_ENA. Korean character font support enabled if set 4-5 LOCAL_BUS_SUPPORT. 1: LOCAL2# local bus signal selected 2: LOCAL3# local bus signal selected 3: LOCAL1# local bus signal selected 6 LOCAL_BUS_CONFIG_2. LBus_2 configuration (non-multiplexed) if set, LBus_1 configuration (multiplexed) if clear 7 LOCAL_BUS_RD_DLY_ENA. If set read data is held for 1 bus clock after RDY 8 LOCAL_DAC_EN. Disable local decode of RAMDAC write in local bus systems if set 9 LOCAL_RDY_EN. Enable 1 bus clock RDY delay for write if clear 10 EEPROM_ADR_SEL. Decode BIOS EEPROM at C0000h-C7FFFh if set, at E0000h-E7FFFh if clear 11 GE_STRAP_SEL. (EISA bus) Enable POS register function if set, always enable chip if clear. (Local Bus) Enable local decode of 102h register if clear 12 VESA_RDY. Enable VESA compliant RDY format if clear 13 (68800-6 +) Z4GBYTE. Enable 4GN memory aperture if set, 128MB if clear 14 (68800-6 +) LOC2_MDRAM. Supports 2MB DRAM in LBus_2 configuration if set, 1MB if clear 16EE W(W): Vertical Cursor Position Register (Mach32) bit 0-11 V_CUR_POSN. Cursor Y-position relative to the address in 2AEEh & 2EEEh 1AEEh W(R): FIFO Test Data Register (Mach32) bit 0-15 FIFO test data 1AEEh (W): Cursor Color 0 Register (Mach32) bit 0-7 CUR_COLOR_0. Cursor Color 0. In 16 and 24 bit modes this is the Blue component of Cursor Color 0 1AEFh (W): Cursor Color 1 Register (Mach32) bit 0-7 CUR_COLOR_1. Cursor Color 1. In 16 and 24 bit modes this is the Blue component of Cursor Color 1 1EEEh (W): Horizontal Cursor Offset Register (Mach32) bit 0-5 CUR_H_OFFSET. First horizontal pixel actually used within the 64x64 cursor map. 1EEFh (W): Vertical Cursor Offset Register (Mach32) bit 0-5 CUR_V_OFFSET. Number of lines shown in the cursor 22EEh (R/W): PCI Control Register (68800-AX) bit 0-2 DAC_RW_WS. RAMDAC read/write wait states 3 TARGET_ABORT_EN. Enable Target Abort Cycle if set 4 PCI_DAC_DLY. If set increases the hold time of the register select signals relative to the falling edge of the DAC write signal 5 DAC_SNOOP_EN. Enables snooping on DAC read if set 6 FAST_BURST. Enables 0 wait states on aperture Burst Write if set 7 FAST_MEM_IO. Fast memory mapped I/O read/write enabled if set 26EEh (W): CRT Pitch Register (Mach8/32) bit 0-7 Width of logical scanlines in units of 8 pixels. (Mach8) When 4AE8h or BEE8h index 5 is written this register is reset to 128 (=1024 pixels) 2AEEh W(W): CRT Offset Low Register (Mach8/32) bit 0-15 Lower 16 bits of the CRT Offset. The upper bits are in 2EEEh. The start of the displayed image in units of 4 bytes. 2EEEh W(W): CRT Offset High Register (Mach8/32) bit 0-3 Upper bits of the CRT Offset. Lower bits are in 2AEEh. 32EEh W(R/W): Local Control Register (Mach32) bit 0 MED_NON-PAGE-CYC. Enables 6 clock non-page cycle 1 LONG_NON-PAGE-CYC. Enables 7 clock non-page cycle 2 SHORT_CAS_PULSE_EN. Enables 1/2 memory clock CAS precharge time 3 DAC_BLANK_ADJ. Enables DAC to be clocked on positive clock edge 4 FIFO_TEST. Enables testing of FIFO 5-6 (68800-3) FIFO_TIMING_ADJ. Enables filtering of 1 clock IOW low or high pulse 5 (68800-6 +) MEM_MAP_ENA. Enables Memory Mapped registers The memory mapped registers are located in the last 512 bytes of the aperture (1MB or 4MB). 4 bytes are allocated to each register Memory Address: I/O register: xFFE00 02E8h xFFE04 06E8h xFFEFC FEE8h xFFF00 02EEh xFFF04 06EEh xFFFFC FEEEh 6 (68800-6 +) LOC_BIOS_ENA. Enables Local Bus BIOS ROM Decode 7-9 ROM_WAIT. Number of ROM wait states. Default is 7. 10-11 MEM_R_DELAY. Additional wait states for memory reads. Default is 3 12-15 (not 68800-AX on PCI bus) LOCAL_BUS_WAIT. Minimum wait states for local bus. Default is 15 (68800-AX on PCI bus) 8514IO_WAIT. Number of wait states for I/O read/write operations. 36EEh (W): FIFO Options Register (Mach8) bit 0 W_STATE_ENA. If clear wait states disabled unless FIFO is full, if set wait states are generated if the FIFO is at least half full. This bit does not affect wait states for 8514/A compatible registers 1 HOST_8_ENA. Clear for 16bit I/O operations, set for 8bit I/O 36EEh W(R/W): Miscellaneous Register (Mach32) bit 0 W_STATE_ENA. If clear wait states disabled unless FIFO is full, if set wait states are generated if the FIFO is at least half full. This bit does not affect wait states for 8514/A compatible registers 1 HOST_8_ENA. Clear for 16bit I/O operations, set for 8bit I/O 2-3 MEM_SIZE_ALIAS. Video Memory: 0: 512K, 1: 1MB, 2: 2MB, 3: 4MB 4 DISABLE_VGA. VGA controller enabled if clear. 5 16_BIT_IO. 16bit 8514 I/O enabled if set. 6 DISABLE_DAC. Disables local DAC if set 7 DLY_LATCH_ENA. For VRAM this is the serial data delay latch enable, for DRAM the memory data delay latch enable for bits 0-63. 8 TEST_MODE. Extends draw engine page write cycle to 3 clocks for test purposes. 10 (68800-6 +) BLK_WR_ENA. Block Write Enabled if set. Utilises the block write mode of most VRAMs which expands all '1' data bits to a specified color in the corresponding nibbles. '0 bits are no-ops Only supported if the memory type is 5 or 6. 11 (68800-6 +) 64_DRAW_ENA. 64bit Draw Enable if set. 12 MEM_DATA_SEL. If set video memory read data is latched on the rising edge of CASB, if clear it flows through. 13 DLY_LATCH_ENA. Memory data delay latch enable for data bits 0-63 14 LATCH_FULL_ENA. Memory Data Latch full clock pulse enable 3AEEh (R): FIFO Test Tag Register (Mach32) bit 0-4 FIFO test data 3AEEh W(W): Extended Cursor Color 0 Register (Mach32) bit 0-7 EXT_CUR_COL_0_G. Green component of the Cursor Color 0 in 16 and 24bit modes 8-15 EXT_CUR_COL_0_R. Red component of the Cursor Color 0 in 16 and 24bit modes 3EEEh W(W): Extended Cursor Color 1 Register (Mach32) bit 0-7 EXT_CUR_COL_1_G. Green component of the Cursor Color 1 in 16 and 24bit modes 8-15 EXT_CUR_COL_1_R. Red component of the Cursor Color 1 in 16 and 24bit modes 42EEh (R/W): Memory Boundary Register (Mach32) bit 0-3 MEM_PAGE_BNDRY. Division between VGA and 8514 memory in 256K units. 1: VGA can write in the first 256K, 8514 in all but the first 256K 2: VGA can write in the first 512K, 8514 in all but the first 512K etc. 4 MEM_BNDRY_ENA. If set the VGA and 8514 can only write in each their own memory area, if clear each can write in all of memory. 46EEh W(W): Shadow Set Control Register (Mach8/32) bit 0 LOCK_CRT_PARAMS. Locks the display mode CRT parameters - Double Scan and Interlace. 1 LOCK_Y_CONTROL. Locks 22E8h bits 1-2 2 LOCK_H_PARAMS. Locks the Horizontal Sync parameters: Position, Width and Total. 3 LOCK_H_DISP. Locks Horizontal Displayed 4 LOCK_V_PARAMS. Locks Vertical Sync parameters: Width, Start and Total. 5 LOCK_V_DISP. Locks Vertical Displayed 6 (Mach32) LOCK_OVERSCAN. Locks the selection of shadow overscan register set in 1024x768 resolution. 4AEEh W(R/W): Clock Select Register (Mach8/32) bit 0 PASS_THROUGH. If set video output id's from the 8514, if clear from either the internal VGA or from the Feature Connector. 2-5 CLK_SEL. Clock Select lines to the 1881x clock chip. 6 CLK_DIV. If set divide clock by 2. 7 Refresh. Enables video memory refresh counter if clear. 8-11 VFIFO_DEPTH. When the Video FIFO has less than this number of entries refill will start. Only used for DRAM systems, however performance at high resolutions can be optimized regardlessly. 12 COMPOSITE_SYNC. (Mach8) If set Composite Sync used with the primary CRT register set, if clear Composite Sync used when programming CRT Shadow Set 1 or 2. (Mach32) Set for Composite Sync, clear for separate Sync. Note: in Mach8 mode this register is Read Only. Writing to this register switches the CRT controller to ATI mode, writing to 4AE8h switches to 8514 mode. 52EEh W(R/W): Scratch Pad 0 Register (Mach32) bit 0-6 ROM address: 0: C000h, 1: C080h, 2: C100h ... 8-15 Scratch Pad 56EEh W(R/W): Scratch Pad 1 Register (Mach32) bit 0-15 Scratch Pad 5AEEh W(W): Shadow Set Register (Mach8/32) bit 0-1 SHADOW_SET. Selects the current CRT register set: 0: Primary CRT register set 1: Shadow set 1 (usually 640x480) 2: Shadow set 2 (usually 1024x768) 8-9 (68800-6 +) LOAD_SRC/DST. Determines whether the source and destination offset/pitch registers are loaded together: 0: Load Destination and Source Offset/Pitch registers together 1: Load Destination Offset/Pitch register only 2: Load Source Offset/Pitch register only 5EEEh W(R/W): Memory Aperture Configuration Register (Mach32) bit 0-1 MEM_APERT_SEL. Aperture: 0: Disabled, 1: 1MB, 2: 4MB PCI configuration does not support 1MB aperture 2-3 MEM_APERT_PAGE. Memory aperture page selection in 1MB aperture mode. 4-15 MEM_APERT_LOC. Address of aperture in 1MB steps between 0 and 4GB 8-15 MEM_APERT_LOC. Address of aperture in 1MB steps between 0 and 128MB Note: bit 8-15 is used as the Aperture Address except for PCI systems and multiplexed local bus systems (16EEh bit 13 set) where bit 4-15 are used 62EEh W(R): Extended Graphics Engine Status Register (Mach32) bit 0-3 CLIP_OVERRUN. Clip Overrun 8 CLIP_INSIDE. Clip Inside 9-12 CLIP_FLAGS. For each bit: 0: outside scissor, 1: inside ? 13 GE_ACTIVE. The Graphics Engine is busy if set. 14 EE_DATA_IN. EEProm data in 15 POINTS_OUTSIDE. Points Outside. 62EEh W(W): Horizontal Overscan Register (Mach32) bit 0-3 Overscan Width - left side in character units 4-7 Overscan Width - right side in character units 8-10 (68800-6 +) H_SYNC_DELAY. Horizontal Sync Delay in pixels (for 1280x1024 multiplexed pixel modes in units of 2 pixels) 12 (68800-6 +) OSCAN_INV. Inverts Overscan Polarity if set 13 (68800-6 +) SYN_CONT_SEL. If set bits 14-15 controls HSYNC and VSYNC 14 (68800-6 +) HSYN_CONT. If bit 13 is set this bit controls the HSYNC signal 15 (68800-6 +) VSYN_CONT. If bit 13 is set this bit controls the VSYNC signal 66EEh W(W): Vertical Overscan Register (Mach32) bit 0-7 Overscan height - top in lines 8-15 Overscan height - bottom in lines 6AEEh W(R/W): Maximum Wait-States Register (Mach8, 68800-3/6/LX) bit 0-3 Q_WSTATES. Max number of wait-states (in units of 0.25 clocks) that the engine can generate during I/O writes. 0 = No Wait states Set to 0Ch on hardware reset 4-7 ROM_SPEED. Number of wait states inserted by the engine when the ROM BIOS is read. Set to 0Fh on hardware reset. 0 = No Wait states. 8 LINE_OPT_ENA. Horizontal Line draw optimisations enabled if clear. Must be disabled during degree-mode linedraws to keep the ERR_TERM register 8514 compatible. 9 (Mach8) IOR16_ENA. 16bit I/O reads enabled if clear. 10 (Mach8) PASSTHROUGH_OVERRIDE. Clear if passthrough connection made, set if not (no VGA sync detected). Must be set correctly for the DAC to function. 6AEEh W(R/W): Memory Aperture Configuration Register (68800-AX) bit 10 F_APERT_ENA. Enables zero waitstate aperture write if set 11 FIFO_RD_AHEAD. Enables Read Ahead for aperture read operation if set Speeds up sequential reads 12 SCLK_DLY. Pixel Stream 1 SCLK Delay if set 13 DEC_BURST_ENA. Enables Decrement Burst if set 14 INC_BURST. Increments Burst if set, decrements if clear 15 PCI_TIMEOUT_DIS. Enables bus timeout on burst read/writes if clear Note: This register available in PCI configurations only 6EEEh W(W): Graphics Engine Offset Low Register (Mach8/32) bit 0-15 Lower bits of the Graphics Engine Offset. Upper bits are in 72EEh. Video buffer address in units of 4 bytes 72EEh W(R): Bounds Accumulator Left Register (Mach8/32) bit 0-15 BOUNDS_LEFT. The lowest X coordinate written through the linedraw register. Reset to 2047 when A2EEh bit 8 is set 72EEh (W): Graphics Engine Offset High Register (Mach8/32) bit 0-3 Upper 4 bits of the Graphics Engine Offset. Lower bits are in 6EEEh 76EEh W(R): Bounds Accumulator Top Register (Mach8/32) bit 0-15 BOUNDS_TOP. The lowest X coordinate written through the linedraw register. Reset to 2047 when A2EEh bit 8 is set 76EEh (W): Graphics Engine Pitch Register (Mach8/32) bit 0-7 GE_PITCH. Width of the display buffer in units of 8 pixels. 7AEEh (W): Extended Graphics Engine Configuration Register (Mach8) bit 0 EE_DATA_OUT 1 EE_CLK 2 EE_CS 3 ALIAS_ENA 4 Z1280 7 EE_SELECT Note: This register is used in 8bit mode (card in an 8bit slot or the 8/16bit jumper set for 8bit) 7AEEh W(R): Bounds Accumulator Right Register (Mach8/32) bit 0-15 BOUNDS_RIGHT. The highest X coordinate written through the linedraw register. Reset to -2048 when A2EEh bit 8 is set 7AEEh W(W): Extended Graphics Engine Configuration Register (Mach8/32) bit 0-2 MONITOR_ALIAS. Alternate monitor ID for 8514/A application use 3 ALIAS_ENA. If set read of the Subsystem Status register (42E8h) returns the monitor ID in bit 0-2 rather than the actual ID. 4-5 (Mach32) PIXEL_WIDTH. Number of bits per pixel 0: 4bits/pixel(bpp), 1: 8bpp, 2: 16bpp, 3: 24bpp 16 and 24 bits per pixel only supported if we have at least 1MB and the DAC can handle it. 6-7 (Mach32) 16_BIT_COLOR_MODE. 16bit pixel format: 0: (5,5,5) Red = bit 10-14, Green = bit 5-9, Blue = bit 0-4 0: (5,6,5) Red = bit 11-15, Green = bit 5-10, Blue = bit 0-4 0: (6,5,5) Red = bit 10-15, Green = bit 5-9, Blue = bit 0-4 0: (6,6,4) Red = bit 10-15, Green = bit 4-9, Blue = bit 0-3 8 (Mach32) MULTIPLEX_PIXELS. If set 4 pixels are sent to the DAC in parallel 9 (Mach32) 24_BIT_COLOR_CONFIG. If set 24bit pixel occupy 4 bytes and bit 10 selects the unused byte within the pixel, if clear 24bit pixel occupy 3 bytes. 10 (Mach32) 24_BIT_COLOR_ORDER. Selects the order the colors are stored in 24bit pixels. If set Red is stored first, if clear blue first. Bit10 Bit9 Red Green Blue 0 0 Byte 2 Byte 1 Byte 0 0 1 Byte 3 Byte 2 Byte 1 1 0 Byte 0 Byte 1 Byte 2 1 1 Byte 0 Byte 1 Byte 2 11 (68800-6 +) DISPLAY_PIXEL_SIZE. Set to load display pixel size. If both bit 11 and 15 are 0 both pixel sizes are loaded 12-13 (Mach32) DAC_EXT_ADDR. Connected to RS2 and RS3 on the DAC. 12 (Mach8) EE_DATA_OUT. Data output for the EEPROM 13 (Mach8) EE_CLK. Clock signal for the EEPROM 14 (Mach32) DAC_8_BIT_EN. Set for 8bit DAC operation, clear for 6bit (Mach8) EE_CS. Chip select line for the EEPROM 15 (68800-6 +) DRAW_PIXEL_SIZE. Set to load drawing pixel size. If both bit 11 and 15 are 0 both pixel sizes are loaded (Mach8) EE_SELECT. Must be set to enable read/writing the EEPROM Note: On the Mach32 this register can be read at 8EEEh 7EEEh W(R): Bounds Accumulator Bottom Register (Mach8/32) bit 0-15 BOUNDS_BOTTOM. The highest Y coordinate written through the linedraw register. Reset to -2048 when A2EEh bit 8 is set 7EEEh W(W): ROM/EEPROM/DAC Control Register (Mach32) bit 0 EE_DATA_OUT. Data output to the EEPROM 1 EE_CLK. Clock signal for the EEPROM 2 EE_CS. Chip select for EEPROM 3 EE_SELECT. Enables the external EEPROM for reading and writing if set 4-7 ROM_PAGE_SEL. Selects a 2K page within the 32K ROM 8-9 BLANK_ADJUST. For type 2 DACs (ATI68875) only. Delays BLANK by 1 or 2 PCLKs 10-11 PIXEL_DELAY. Adjusts pixel data skew from PCLK 12 PASSTHRU_OVERIDE. Allows the pixel clock to remain active even when PASSTHROUGH is 0 13-15 CARD_SELECT. Allows selection of cards in multicard systems. The card is active if the card is strapped to this value or zero. 82EEh (R/W): Pattern Data Index Register (Mach8/32) bit 0-7 (68800-3) Selects 1 of 18 pattern data registers 0-4 (68800-6 +) Selects one of 24 pattern data registers Note: the data is written to 8EEEh. Each write increments this index Index 0-0Fh are the color pattern data registers, 10h-11h (10h-17h for the 68800-6 and later) are the mono pattern data registers. 8EEEh W(R): Read Extended Graphics Engine Configuration Register (Mach32) bit 0-2 MONITOR_ALIAS. Alternate monitor ID for 8514/A application use 3 ALIAS_ENA. If set read of the Subsystem Status register (42E8h) returns the monitor ID in bit 0-2 rather than the actual ID. 4-5 PIXEL_WIDTH. Number of bits per pixel 0: 4bits/pixel(bpp), 1: 8bpp, 2: 16bpp, 3: 24bpp 16 and 24 bits per pixel only supported if we have at least 1MB and the DAC can handle it. 6-7 16_BIT_COLOR_MODE. 16bit pixel format: 0: (5,5,5) Red = bit 10-14, Green = bit 5-9, Blue = bit 0-4 0: (5,6,5) Red = bit 11-15, Green = bit 5-10, Blue = bit 0-4 0: (6,5,5) Red = bit 10-15, Green = bit 5-9, Blue = bit 0-4 0: (6,6,4) Red = bit 10-15, Green = bit 4-9, Blue = bit 0-3 8 MULTIPLEX_PIXELS. If set 4 pixels are sent to the DAC in parallel 9 24_BIT_COLOR_CONFIG. If set 24bit pixel occupy 4 bytes and bit 10 selects the unused byte within the pixel, if clear 24bit pixel occupy 3 bytes. 10 24_BIT_COLOR_ORDER. Selects the order the colors are stored in 24bit pixels. If set Red is stored first, if clear blue first. Bit10 Bit9 Red Green Blue 0 0 Byte 2 Byte 1 Byte 0 0 1 Byte 3 Byte 2 Byte 1 1 0 Byte 0 Byte 1 Byte 2 1 1 Byte 0 Byte 1 Byte 2 11 (68800-6 +) DISPLAY_PIXEL_SIZE. Set to load display pixel size. If both bit 11 and 15 are 0 both pixel sizes are loaded 12-13 DAC_EXT_ADDR. Connected to RS2 and RS3 on the DAC. 14 DAC_8_BIT_EN. Set for 8bit DAC operation, clear for 6bit 15 (68800-6 +) DRAW_PIXEL_SIZE. Set to load drawing pixel size. If both bit 11 and 15 are 0 both pixel sizes are loaded Note: This register is written at 7AEEh 8EEEh W(W): Color/Monochrome Pattern Data Registers (Mach8/32) bit 0-15 Pattern data. 82EEh selects the pattern data registers to write to. 92EEh W(R): ROM Page Select & EEPROM Control Register (Mach32) bit 4-7 ROM_PAGE_SEL. Selects a 2K page within the 32K ROM 8-9 BLANK_ADJUST. For type 2 DACs (ATI68875) only. Delays BLANK by 1 or 2 PCLKs 10-11 PIXEL_DELAY. Adjusts pixel data skew from PCLK 96EEh W(R/W): Bresenham Count Register (Mach8/32) bit 0-10 COUNT. The largest of the absolute values of delta X and delta Y 9AEEh W(R): Extended FIFO Status Register (Mach8/32) bit 0-15 Each bit is set if the corresponding FIFO location is occupied and clear if it is free. Bit 15 will clear first. 9AEEh (W): Linedraw Index Register (Mach8/32) bit 0-2 Determines the type of line data written to FEEEh. 0: Set current X, 1: Set current Y, 2: Line end X, 3: Line end Y, 4: set current X, 5: Set current Y. Writing to FEEEh increments this index, except that 3 wraps to 2 and 5 to 4 so that a polyline can be output by setting this index to 0 and then writing the coordinates to FEEEh. A2EEh W(R/W): Linedraw Options Register (Mach8/32) bit 1 POLY_MODE. Clear for normal linedraw, set for polygon linedraw mode. 2 LAST_PEL_OFF. Set if the last pixel of a line should not be drawn. 3 DIR_TYPE. If set lines are drawn in the direction set by bits 5-7 and of the length in the Bresenham Count Register (96EEh), if clear according to the Bresenham parameters 5-7 (bit 3=1) DEGREE. Direction of the line in degrees 0: 0, 1: 45, 2: 90, 3: 135, 4: 180, 5: 225, 6: 270, 7: 315 5 (bit 3=0) XDIR. Set to draw to the right (increase X) 6 (bit 3=0) YMAJOR. Set if delta Y > delta X (numerically) 7 (bit 3=0) YDIR. Set to draw downwards (increase Y) 8 BOUNDS_RESET. If set the accumulator registers are reset to Left=2047, Top=2047, Right=-2048, Bottom=-2048 9-10 CLIP_MODE. 0: Clip exception disabled 1: Stroked line segments 2: Polygon boundary lines 3: Patterned lines A6EEh W(W): Destination Start X Register (Mach8/32) bit 0-10 DEST_X_START. Starting X coordinate for the destination blit AAEEh W(W): Destination X End Register (Mach8/32) bit 0-10 DEST_X_END. Ending X coordinate of each row of the destination blit AEEEh W(W): Destination Y End Register (Mach8/32) bit 0-10 DEST_Y_END. Ending line of the destination blit for VRAM to VRAM B2EEh W(R): R Horizontal Displayed & Total Register (Mach32) bit 0-7 H_DISP. Pixels displayed horizontally, in units of 8 pixels. This field is written at 6E8h 8-15 H_TOTAL. Total horizontal screen width in units of 8 pixels. This field is written at 2E8h B2EEh W(W): Source X Start Register (Mach8/32) bit 0-10 SRC_X_START. First pixel of the blit area (except first row) B6EEh (R): Horizontal Sync Start Register (Mach32) bit 0-7 H_SYNC_STRT. HSync start in units of 8 pixels. Note: This register is written at 0AE8h B6EEh (W): Background Function Register (Mach8/32) bit 0-4 ALU_BG_FN. Background ALU function code BAEEh (R): Horizontal Sync Width Register (Mach32) bit 0-4 H_WIDTH. Width of the sync in units of 8 pixels 5 H_POLARITY. Set for negative Horizontal sync polarity, clear for positive Horizontal sync Note: This register is written at 0EE8h BAEEh (W): Foreground Function Register (Mach8/32) bit 0-4 ALU_FG_FN. Foreground ALU function code. BEEEh W(W): Source X End Register (Mach8/32) bit 0-10 SRC_X_END. Last pixel of the blit source area C2EEh W(R): Vertical Total Register (Mach32) bit 0-11 V_TOTAL. Total number of scanlines in a frame. Note: This register is written at 12E8h C2EEh (W): Source Y Direction Register (Mach8/32) bit 0 SRC_Y_DIR. Direction of drawing. Set for top-to-bottom, clear for bottom-to-top. C6EEh W(R): Vertical Displayed Register (Mach32) bit 0-11 V_DISP. Number of scanlines displayed (-1). Note: This register is written at 16E8h C6EEh W(W): Extended Short Stroke Vector Transfer Register (Mach8/32) bit 0-3 Length of the major axis 4 Set for drawing, clear for moves 5-7 Direction in degrees: 0: 0, 1: 45, 2: 90, 3: 135, 4: 180, 5: 225, 6: 270, 7: 315 8-15 Same as bits 0-7, but another vector. Note: this is similar to 9EE8h CAEEh W(R): Vertical Sync Start Register (Mach32) bit 0-11 V_SYNC_STRT. Vertical sync start in scanlines Note: This register is written at 1AE8h CAEEh W(W): Scan To X Register (Mach8/32 bit 0-10 SCAN_TO_X. Can be used for fast polygon scan conversion and horizontal lines. Drawn from current X position to this position. Left edge drawn, right edge not drawn. CEEEh W(R): Vertical Line Counter Register (Mach32) bit 0-10 VERT_LINE_CNTR. Vertical Line Counter CEEEh W(W): Data Path Configuration Register (Mach8/32) bit 0 READ_WRITE. If set data is written to the drawing trajectory, if clear read from it. 1 POLY_FILL_MODE. If set Polygon-fill blit mode is enabled, blit source mechanism is triggered and VRAM source blit data is used as the polygon fill mask, if clear polygon-fill blit mode is disabled Cleared at the start of each row of the blit. 2 READ_MODE. If set read host data is monochrome, if clear color. 4 DRAW. Enable Draw if set. 5-6 MONO_SRC. Monochrome source is: 0: Always "1" 1: Mono Pattern register 2: Pixel Transfer register 3: VRAM blit source 7-8 BG_COLOR_SRC. Background Color Source select. 0: Background color register 1: Foreground color register 2: Pixel transfer register 3: VRAM blit source 9 DATA_WIDTH. Width of the data transferred through the CPU Data Transfer register. 0: 8bit, 1: 16bit Should be set in 16bit/pixel modes. 12 LSB_FIRST. If set the CPU Data Transfer register is "Intel little endian style" (least significant byte first), if clear in "Motorola big endian style" (most significant byte first). In Mach8 mode this bit is ignored if bit 9 is 0. 13-15 FG_COLOR_Src. Foreground color source select. 0: Background color register 1: Foreground color register 2: Pixel transfer register 3: VRAM blit source 5: Color pattern shift register D2EEh W(R): Vertical Sync Width Register (Mach32) bit 0-4 V_WIDTH. Width of Vsync pulse in scanlines 5 V_POLARITY. Set for negative Vsync, clear for positive Vsync Note: This register is written at 1EE8h D2EEh W(W): Pattern Length Register (Mach8/32) bit 0-4 PATT_LENGTH. Number of pixels (-1) in the pattern 7 8x8 Mono Pattern Enable. If set bits 0-4 are ignored and Pattern Data index 10h-17h are used as an 8x8 rectangular pattern 15 8x8 Block Write Mono Pattern Enable. If set the 8x8 pattern described in bit 7 is used as a transparency mask for the write D6EEh (W): Pattern Index Register (Mach8/32) bit 0-4 PATT_INDEX. Selects the first pixel in the color or mono pattern for the destination DAEEh W(R): Read Source X Register (Mach8/32) bit 0-10 R_SRC_X. Source current X. This register is written at 8EE8h DAEEh W(W): Extended Left Scissor Register (Mach8/32) bit 0-11 EXT_SCISSOR_L. Left scissor (-2048..2047) DEEEh W(R): Read Source Y Register (Mach8/32) bit 0-10 R_SRC_Y. Source current Y. This register is written at 8AE8h DEEEh W(W): Extended Top Scissor Register (Mach8/32) bit 0-11 EXT_SCISSOR_T. Top scossor (-2048..2047) E2EEh W(W): Extended Right Scissor Register (Mach8/32) bit 0-11 EXT_SCISSOR_R. Right scissor (-2048..2047) E6EEh W(W): Extended Bottom Scissor Register (Mach8/32) bit 0-11 EXT_SCISSOR_B. Bottom Scissor (-2048..2047) EEEEh W(W): Destination Color Compare Function Register (Mach8/32) bit 3-5 DEST_CMP_FN_4/8. 4/8bit mode destination compare function code 0: False 1: True 2: Destination pixel >= DEST_CMP_CLR 3: Destination pixel < DEST_CMP_CLR 4: Destination pixel != DEST_CMP_CLR 5: Destination pixel = DEST_CMP_CLR 6: Destination pixel <= DEST_CMP_CLR 7: Destination pixel > DEST_CMP_CLR The pixels where the comparison is true are NOT updated. 6-8 DEST_CMP_FN_B. 16bit blue destination compare function code 9-11 DEST_CMP_FN_G. 16bit green destination compare function code 12-14 DEST_CMP_FN_R. 16bit red destination compare function code F2EEh W(R/W): Destination Color Compare Function Register (68800-6 +) bit 0-15 Destination Color Compare Mask FAEEh W(R): Chip ID Register (68800-6 +) bit 0-9 CHIP_CODE. Identifies the chip version: 017h 68800-AX 177h 68800-LX 2F7h 68800-6 The 68800-3 appears to return 0 for this field (undocumented) 10-11 CHIP_CLASS. 12-15 CHIP_REV. FEEEh W(W): Linedraw Register (Mach8/32) bit 0-15 Line data. 9AEEh determines which type of line data is written Bank Switching Bank switching can use either one single bank register or two separate read and write bank registers (18800-2 and 28800 Only). Banks map to 64k boundaries. Reserved locations in the ROM (typically starting at C000h:0): $10 2 bytes ATI Register (usually $1CE). $31 9 bytes '761295520' ID's ATI product $40 2 bytes '31' = ATI VGA Wonder/Mach series '32' = ATI EGA Wonder 800+ '34' = ATI VGA Basic-16 '22' = ATI EGA Wonder ?+'3' = ATI Basic-16 $42 1 byte Bit 0 Set for 16-bit boards 1 Mouseport present if set 2 Use hardware detection to detect mouse port if set 3 Microchannel if set, PC/AT else 4 Use clock chip if set 7 Use C000:0000 to D000:FFFF with 16 bit ROM if set $43 1 byte Gate revision. ' ' (20h) = Mach64 (see Mach64 section below) '1' (31h) = 18800 (V3), '2' (32h) = 18800-1 (V4/V5), '3' (33h) = 28800-2 VGA Wonder+ (V6). '4' (34h) = 28800-4 VGA Wonder (1MB) '5' (35h) = 28800-5 VGA Wonder 1MB/XL '6' (36h) = 28800-6 VGA Wonder XL 'a' (61h) = 68800 Mach-32 'c' (63h) = 68800 Mach-32 - Which version ? $44 1 byte Bit 0 If clear the board can support 70Hz non-interlaced refresh 1 If set the board supports Korean characters in VGA mode 2 If set the board uses 45MHz memory clock, if clear 40MHz 3 If clear the board supports zero wait states. 4 If set the board uses paged ROMs. 6 If clear there is 8514/A hardware on board (Graphics Ultra) 7 If set there is a 32K color DAC on board. $4C 1 byte Major Bios version $4D 1 byte Minor Bios version $64 (Mach32) Far call entry point to Load Shadow Set function AH = 0 $68 (Mach32) Far call entry point to Set Mode function AL = 00h Load VGA passthrough mode 01h Load low resolution mode 02h Load high resolution mode $6C (Mach32) Far call entry point to Query function AL = 00h Query information structure in bytes Returns size in AX 01h Query device long ES:BX -> Device Status Table to be filled out OFFSET TYPE Description: 00h WORD Size of structure in bytes 02h BYTE Revision of structure 03h BYTE Number of mode tables 04h WORD Offset of mode tables 06h BYTE Size of mode tables in bytes 07h BYTE ASIC Revision 08h BYTE Status Flags Bit 0 Host data transfers forced to 8bit 09h BYTE VGA Type. 0: Disabled, 1: Enabled 0Ah BYTE VGA Boundary. 0: 0K, 1: 256K, 2: 512K, 3: 768K, 4: 1M, 0FFh: Full access 0Bh BYTE Memory Size. 0: 256K, 1: 512K, 2: 1M, 3: 2M, 4: 4M 0Ch BYTE DAC Type 0: ATI68830 1: SC1148x 2: ATI68875, TLC34075 3: Bt476,Bt478 4: Bt481,Bt482 5: ATI68860 (68800-AX only) 0Dh BYTE Memory Type: See 12EEh bits 4-6 for details 0Eh BYTE Bus Type: 0: 16bit ISA 1: EISA 2: 16bit Micro Channel 3: 32bit Micro Channel 4: Local bus (386SX) 5: Local bus (386DX) 6: Local bus (486) 0Fh BYTE Monitor Alias 10h WORD Shadow 1 Status 12h WORD Shadow 2 Status 14h WORD Aperture Address (0MB - 4095MB) 16h BYTE Aperture Configuration Bit 0-1 0: Disabled, 1: 1MB, 2: 4MB 17h BYTE Mouse Configuration Bit 0-1 Mouse Address Selection 0: Disabled 1: Secondary Address 2: Primary Address 2-3 Interrupt handler selection 0: IRQ5, 1: IRQ4, 2: IRQ3, 3: IRQ2 18h BYTE DAC Support Bit 0 Supports (664) if set 1 Supports (655) if set 2 Supports (565) if set 3 Supports (555) if set 5 Supports 32bpp if set 6 Supports BGR if set 7 Supports RGB if set A number of mode tables follows: OFFSET TYPE Description: 00h WORD Number of pixels horizontally 02h WORD Number of lines vertically 04h BYTE Maximum pixel depth 05h BYTE Status Flags Bit 0 Nonlinear Y addressing mode if set 6 MUX mode if set 7 PCLK divided by 2 if set 06h DWORD Reserved 0Ah WORD (4AEEh) CLOCK_SELECT 0Ch BYTE (02E8h) H_TOTAL 0Dh BYTE (06E8h) H_DISP 0Eh BYTE (0AE8h) H_SYNC_STRT 0Fh BYTE (22E8h) DISP_CNTL 10h BYTE (0EE8h) H_SYNC_WID 11h BYTE (1EE8h) V_SYNC_WID 12h WORD (12E8h) V_TOTAL 14h WORD (16E8h) V_DISP 16h WORD (1AE8h) V_SYNC_STRT 18h WORD (62EEh) HORIZONTAL_OVERSCAN 1Ah WORD (66EEh) VERTICAL_OVERSCAN 1Ch BYTE (02EEh) OVERSCAN_COLOR_8 1Dh BYTE (02EFh) OVERSCAN_COLOR_BLUE 1Eh BYTE (06EEh) OVERSCAN_COLOR_GREEN 1Fh BYTE (06EFh) OVERSCAN_COLOR_RED 02h Query device short Returns: AL = ASIC revision AH = Aperture Configuration BX = Aperture Address CL = Mouse Configuration CH = DAC type $70 (Mach32) Far call entry point to Accelerator service function AH = 00h Reset accelerator 01h Set DAC to default colors 02h EEPROM services AL = 00h Read from EEPROM (returns result in AX) 01h Write to EEPROM BX = EEPROM word address DX = Data to write EEPROM Map (Mach32): Word: Bits: Description 00h 0-15 EEPROM Write Counter 01h 0-7 Int Handler Select. 20h: IRQ5, 28h: IRQ4, 30h: IRQ3, 38h: IRQ2 8-15 Mouse Address Select 00h: Disabled, 08h: Secondary Address, 18h: Primary Address 02h 0 ROM 16bit access enabled if set 1 Zero Waitstate ROM Enabled if set 2 Zero Waitstate RAM Enabled if set 3 VGA bus I/O is 16bit if set, 8bit if clear 4 Power Up Font. 0: 8x14 or 9x14, 1: 8x16 or 9x16 5 Dual Monitor Enable 6-7 Mono Color Select 0: White, 1: Green, 2: Amber 8-15 Power Up Video Mode: 03h VGA Color - secondary 05h VGA mono - secondary 07h VGA lores Color - primary 09h VGA hires Color - primary 0Bh VGA mono - primary 12h EGA lores Color - secondary 13h EGA hires Color - secondary 15h EGA mono - secondary 17h EGA lores Color - primary 19h EGA hires Color - primary 1Bh EGA mono - primary 20h CGA 30h Hercules 720x348 40h Hercules 640x400 03h 0-3 EEPROM table revision number 14 Korean BIOS support 15 Scrolling Fix enable 04h 0-15 Custom Monitor Indices 05h 0-2 Monitor Alias 3 Alias Enable 4-6 VGA Boundary. 0: Shared, 1: 256K, 2: 512K, 4: 1MB 8-13 Monitor Code 14-15 Host Data Transfer Width. 0: Auto Select, 1: 16bit, 2: 8bit 3: 8bit host data/16bit other 06h 0-3 Aperture Size. 0: Disabled, 1: 1MB, 2: 4MB 4-15 Aperture Location in Mbytes 07h 0 640x480 72Hz enable 1 Use Stored Parameters for 640x480 8-15 Offset to 640x480 table in WORDs 08h 0 800x600 95Hz (interlaced) enable 1 800x600 89Hz (interlaced) enable 2 800x600 56Hz enable 3 800x600 60Hz enable 4 800x600 70Hz enable 5 800x600 72Hz enable 7 Use Stored Parameters for 800x600 8-15 Offset to 800x600 table in WORDs 09h 0 1024x768 87Hz (interlaced) enable 1 1024x768 60Hz enable 2 1024x768 70Hz enable 3 1024x768 72Hz enable 4 1024x768 66Hz enable (not active) 7 Use Stored Parameters for 1024x768 8-15 Offset to 1024x768 table in WORDs 0Ah 0 1280x1024 87Hz (interlaced) enable 1 1280x1024 95Hz (interlaced) enable 7 Use Stored Parameters for 1280x1024 8-15 Offset to 1280x1024 table in WORDs 0Bh 0 1120x750 enable 1 1152x900 enable 7 Use Stored Parameters for alternate modes 8-15 Offset to alternate table in WORDs 0Dh-1Bh CRT Parameter Table 1 1Ch-2Ah CRT Parameter Table 2 2Bh-39h CRT Parameter Table 3 3Ah-48h CRT Parameter Table 4 49h-57h CRT Parameter Table 5 58h-66h CRT Parameter Table 6 67h-75h CRT Parameter Table 7 7Eh 8-10 DAC Type. See 12EEh bit 9-11 for details 11-13 Memory Size. See 12EEh bit 4-6 for details 14 VGA enable 7Fh 0-15 EEPROM Checksum CRT Table structure: Word: Bits: Description 00h 0-3 Clock Chip Sel 4-5 Clock Div 6 CRTC Usage. Set to use all CRTC parameters in EEPROM, clear to only use sync polarities 7 Dot Clock Selects. 0: Use default dot clock 1: Use user supplied dot clock 8 Parm Type. Set if WORDs 1-9 are 8514 data, clear if VGA data 9-11 Maximum Pixel Depth. 0: 8bits/pixel, 1: 16b/p, 2: 24b/p 12 MUX Mode 13 Interlace 14 Horizontal Sync Polarity 15 Vertical Sync Polarity If WORD 00h bit 8 is clear (VGA data): 01h 0-7 Video Mode Sel 2 8-15 Video Mode Sel 1 02h 0-7 Video Mode Sel 4 8-15 Video Mode Sel 3 03h 0-7 Vertical Total (3d4h index 6) 8-15 Horizontal Total (3d4h index 0) 04h 0-7 Horizontal Retrace End (3d4h index 5) 8-15 Horizontal Retrace Start (3d4h index 4) 05h 0-7 Vertical Retrace End (3d4h index 11h) 8-15 Vertical Retrace Start (3d4h index 10h) 06h 0-7 Horizontal Blank End (3d4h index 3) 8-15 Horizontal Blank Start (3d4h index 2) 07h 0-7 Vertical Blank End (3d4h index 16h) 8-15 Vertical Blank Start (3d4h index 15h) 08h 0-7 Maximum Scanline (3d4h index 9) 8-15 CRT Overflow (3d4h index 18h) 09h 0-7 CRT Mode (3d4h index 17h) 8-15 Vertical Displayed (3d4h index 12h) If WORD 00h bit 8 is set (8514 data): 02h 0-7 VFIFO_16 8-15 VFIFO_24 03h 0-7 (06E8h) H_DISP 8-15 (02E8h) H_TOTAL 04h 0-7 (0EE8h) H_SYNC_WID 8-15 (0AE8h) H_SYNC_STRT 05h 0-15 (12E8h) V_TOTAL 06h 0-15 (16E8h) V_DISP 07h 0-15 (1AE8h) V_SYNC_STRT 08h 0-7 (22E8h) DISP_CNTL 8-15 (1EE8h) V_SYNC_WID 09h 0-15 (4AEEh) CLOCK_SEL Common data again: 0Ah 0-7 Offset to alternate table 8-13 Size of mode tables in WORDs 14 MUX flag 15 PCLK/2 flag 0Bh 0-15 (62EEh) HORIZONTAL_OVERSCAN 0Ch 0-15 (66EEh) VERTICAL_OVERSCAN 0Dh 0-7 (02EEh) OVERSCAN_COLOR_8 8-15 (02EFh) OVERSCAN_COLOR_BLUE 0Eh 0-7 (06EEh) OVERSCAN_COLOR_GREEN 8-15 (06EFh) OVERSCAN_COLOR_RED ** Mach64 Registers ** The Mach64 engine is different from the Mach8/Mach32. The Mach64 has a number of 32bit registers. Most are I/O mapped at x2ECh (A2-A9 = 10111011), and all except the Config_Ctrl Register (6AECh) is memory mapped as a 1KB block, either at 0BFC00h or the last 1KB of the Linear Aperture. 6AECh D(R/W): Config_Ctrl bit 0-1 Cfg_Mem_Ap_Size. Linear Memory Aperture Size. 0: Disabled, 1: 4MB Aperture, 2: 8MB Aperture 2 Cfg_Mem_VGA_Ap_En. VGA Aperture enabled if set 4-13 Cfg_Mem_Ap_Loc. Linear Memory Aperture Location in units of 4MB. Bit 4 (lowest bit) is ignored for 8MB Apertures. 16-18 Cfg_Card_ID. 19 Cfg_VGA_Dis. VGA enabled if clear, disabled if set M+000h/02ECh D(R/W): Crtc_H_Total_Disp bit 0-7 Crtc_H_Total. Horizontal Total in character clocks (8 pixel units) 16-23 Crtc_H_Disp. Horizontal Display End in character clocks. M+004h/06ECh D(R/W): Crtc_H_Sync_Strt_Wid bit 0-7 Crtc_H_Sync_Strt. Horizontal Sync Start in character clocks (8 pixel units) 8-10 Crtc_H_Sync_Dly. Horizontal Sync Start delay in pixels 16-20 Crtc_H_Sync_Wid. Horizontal Sync Width in character clocks 21 Crtc_H_Sync_Pol. Horizontal Sync Polarity M+008h/0AECh D(R/W): Crtc_V_Total_Disp bit 0-10 Crtc_V_Total. Vertical Total 16-26 Crtc_V_Disp. Vertical Displayed End M+00Ch/0EECh D(R/W): Crtc_V_Sync_Strt_Wid bit 0-10 Crtc_V_Sync_Strt. Vertical Sync Start 16-20 Crtc_V_Sync_Wid. Vertical Sync Width 21 Crtc_V_Sync_Pol. Vertical Sync Polarity M+010h/12ECh D(R/W): Crtc_Vline_Crnt_Vline bit 0-10 The line at which Vertical Line interrupt is triggered 16-26 (R) Crtc_Crnt_Vline. The line currently being displayed M+014h/16ECh D(R/W): Crtc_Off_Pitch bit 0-19 Crtc_Offset. Display Start Address in units of 8 bytes. 22-31 Crtc_Pitch. Display pitch in units of 8 pixels M+018h/1AECh D(R/W): Crtc_Int_Cntl bit 0 (R) Crtc_Vblank. Vertical Blank 1 Crtc_Vblank_Int_En. Vertical Blank interrupt enable 2 Crtc_Vblank_Int. When read returns the status of the Vertical Blank interrupt, when written (with a 1 ??) acknowledges the interrupt. 3 Crtc_Vline_Int_En. Vertical Line Interrupt enable. 4 Crtc_Vline_Int. When read returns the status of the Vertical Line interrupt, when written (with a 1 ??) acknowledges the interrupt. 5 (R) Crtc_Vline_Sync. 0: Even scan line, 1: Odd scan line 6 (R) Crtc_Frame. Interlaced frame. 0: Even frame, 1: Odd frame M+01Ch/1EECh D(R/W): Crtc_Gen_Cntl bit 0 Crtc_Dbl_Scan_En. Enables double scan 1 Crtc_Interlace_En. Enables interlace. 2 Crtc_Hsync_Dis. Disables Horizontal Sync output 3 Crtc_Vsync_Dis. Disables Vertical Sync output 4 Crtc_Csync_En. Enable composite sync on Horizontal Sync output 5 Crtc_Pic_By_2_En. CRTC advances 2 pixels per pixel clock 8-10 Crtc_Pix_Width. Displayed bits/pixel: 1: 4bpp, 2: 8bpp, 3: 15bpp (5:5:5), 4: 16bpp (5:6:5), 5: 24bpp(undoc), 6: 32bpp 11 Crtc_Byte_Pix_Order. Pixel order within each byte (4bpp). 0: High nibble displayed first, 1: low nibble displayed first 16-19 Crtc_Fifo_Lwm. Low Water Mark of the 16entry deep display FIFO. Only used in DRAM configurations. The minimum number of entries remaining in the FIFO before the CRTC starts refilling. Ideally should be set to the lowest number that gives a stable display. 24 Crtc_Ext_Disp_En. 1:Extended display mode , 0:VGA display mode 25 Crtc_En. Enables CRTC if set, resets if clear M+040h/22ECh D(R/W): Ovr_Clr bit 0-7 Ovr_Clr_8. Overscan color for 4bpp and 8bpp 8-15 Ovr_Clr_B. Blue component of the Overscan Color 16-23 Ovr_Clr_G. Green component of the Overscan Color 24-31 Ovr_Clr_R. Red component of the Overscan Color M+044h/26ECh D(R/W): Ovr_Wid_Left_Right bit 0-3 Ovr_Wid_Left. Left overscan width in character clocks 16-19 Ovr_Wid_Right. Right overscan width in character clocks M+048h/2AECh D(R/W): Ovr_Wid_Top_Bottom bit 0-7 Ovr_Wid_Top. Top overscan width in lines 16-23 Ovr_Wid_Bottom. Bottom overscan width in lines M+060h/2EECh D(R/W): Cur_Clr0 bit 0-7 Cur_Clr0_8. Cursor color 0 for 4bpp and 8bpp modes 8-15 Cur_Clr0_B. Blue component of the Cursor Color 0 16-23 Cur_Clr0_G. Green component of the Cursor Color 0 24-31 Cur_Clr0_R. Red component of the Cursor Color 0 M+064h/32ECh D(R/W): Cur_Clr1 bit 0-7 Cur_Clr1_8. Cursor color 1 for 4bpp and 8bpp modes 8-15 Cur_Clr1_B. Blue component of the Cursor Color 1 16-23 Cur_Clr1_G. Green component of the Cursor Color 1 24-31 Cur_Clr1_R. Red component of the Cursor Color 1 M+068h/36ECh D(R/W): Cur_Offset bit 0-19 Cur_Offset. Address of the cursor definition in units of 8 bytes M+06Ch/3AECh D(R/W): Cur_Horz_Vert_Posn bit 0-10 Cur_Horz_Posn. Cursor Horizontal Position 16-26 Cur_Vert_Posn. Cursor Vertical Position M+070h/3EECh D(R/W): Cur_Horz_Vert_Off bit 0-5 Cur_Horz_Off. Cursor Horizontal Offset within the 64x64 cursor 16-21 Cur_Vert_Offset. Cursor Vertical Offset within the 64x64 cursor. M+080h/42ECh D(R/W): Scratch_Reg0 bit 0-31 Scratch_Reg0. Available as scratch-pad. Note: In test modes this address accesses one of the test registers. M+080h/42ECh D(R/W): Test_Reg0 bit 0-20 Test_Mem_Addr. Memory address for test mode 1, in units of 4 bytes Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 1. This register is only intended for testing. M+080h/42ECh D(R): Test_Reg2 bit 0-14 Dst_X_Lnth_Cntr. Horizontal destination length counter 16-30 Dst_Y_Lnth_Cntr. Vertical destination length counter Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 2. This register is only intended for testing. M+080h/42ECh D(R): Test_Reg4 bit 0-12 Src_Read_Lnth_Cntr. Source FIFO read length counter Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 3. This register is only intended for testing. M+080h/42ECh D(R): Test_Reg5 bit 0-7 Crtc_H_Char_Cntr. Horizontal CRTC character counter 8-18 Crtc_V_Line_Cntr. Vertical CRTC line counter 19-23 Crtc_H_Sync_Wid_Cntr. Horizontal CRTC Sync width counter 24-28 Crtc_V_Sync_Wid_Cntr. Vertical CRTC Sync width counter Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 4. This register is only intended for testing. M+080h/42ECh D(R): Test_Reg7 bit 0-23 Pixel_Data_Crc. CRC of the displayed pixel data, including overscan and cursor data. Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 5. This register is only intended for testing. M+084h/46ECh D(R/W): Scratch_Reg1 bit 0-31 Scratch_Reg1. Available as scratch-pad. Note: In test modes this address accesses one of the test registers. M+084h/46ECh D(R/W): Test_Reg1 bit 0-31 Test_Mem_Data. Data read or written to memory Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 1. This register is only intended for testing. M+084h/46ECh D(R): Test_Reg3 bit 0-12 Src_X_Lnth_Cntr. Horizontal source length counter 16-30 Src_Y_Lnth_Cntr. Vertical source length counter Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 2. This register is only intended for testing. M+084h/46ECh D(R): Test_Reg6 bit 0 Crtc_H_Total_Eq. Set if Horizontal Counter = Crtc_H_Total 1 Crtc_H_Total_Half_Eq. Set if Horizontal Counter = Crtc_H_Total/2 2 Crtc_H_Disp_Eq. Set if Horizontal Counter = Crtc_H_Disp 3 Crtc_H_Sync_Strt_Eq. Set if Horizontal Counter = Crtc_H_Sync_Strt 4 Crtc_H_Sync_Wid_Eq. Set if Horizontal Sync Counter = Crtc_H_Sync_Wid 5 Crtc_V_Total_Eq. Set if Vertical Counter = Crtc_V_Total. 6 Crtc_V_Disp_Eq. Set if Vertical Counter = Crtc_V_Disp. 7 Crtc_V_Sync_Strt_Eq. Set if Vertical Counter = Crtc_V_Sync_Strt. 8 Crtc_V_Sync_Wid_Eq. Set if Vertical Sync Counter = Crtc_V_Sync_Wid. 9 Crtc_V_Line_Eq. Set if Vertical Counter = Crtc_V_Line. 10 Crtc_H_Disp_En. Horizontal Display Enable. 11 Crtc_V_Disp_En. Vertical Display Enable. 12 Crtc_Disp_En. Display Enable. 13 Crtc_Blank. Display Blank. 14 Crtc_H_Sync. Horizontal Sync. 15 Crtc_V_Sync. Vertical Sync. 16 Crtc_Frame. Odd/Even Frame. Changes when the line counter reaches the bottom (bit 5 of this register set) 17 Crtc_Frame_X. Odd/Even Frame. Changes when the line counter reaches the end of display (bit 6 of this register set) 18 Ovr_Left_Eq. Set if Horizontal Counter = Crtc_H_Total-Ovr_Wid_Left 19 Ovr_Right_Eq. Set if Horizontal Counter = Crtc_H_Disp+Ovr_Wid_Right 20 Ovr_Top_Eq. Set if Vertical Counter = Crtc_V_Total - Ovr_Wid_Top 21 Ovr_Bottom_Eq. Set if Vertical Counter = Crtc_V_Total + Ovr_Wid_Bottom 22 Ovr_Left_En. Left overscan enable 23 Ovr_Right_En. Right overscan enable 24 Ovr_Top_En. Top overscan enable 25 Ovr_Bottom_En. Bottom overscan enable 26 Ovr_En. Overscan Enable Note: This register is only accessible if Gen_Test_Cntl (M+0D0h/66ECh) bit 20- 22 = 4. This register is only intended for testing. M+090h/4AECh D(R/W): Clock_Cntl bit 0-3 Clock_Sel. Clock select bit 0-3. Output to the clock chip 4-5 Clock_Div. Internal clock divider. 0: no div, 1: /2, 2: /4 6 (W) Clock_Strobe. Connected to the strobe or clk input on programmable clock chips 7 Clock_Serial_Data. Data I/O for programmable clock chips M+0A0h/4EECh D(R/W): Bus_Cntl bit 0-3 Bus_Ws. Bus wait states. Default = 15. 4-7 Bus_Rom_Ws. ROM wait states. Default = 15 8-11 Bus_Rom_Page. ROM page select. 12 Bus_Rom_Dis. ROM Disabled if set 13 Bus_IO_16_En. 16bit I/O enabled if set, 8bit if clear 14 Bus_DAC_Snoop_En. DAC snooping enable 16-19 Bus_Fifo_Ws. Max number of wait states the FIFO can generate when full before setting Buys_Fifo_Err_Int 20 Bus_Fifo_Err_Int_En. Command FIFO error interrupt enable 21 Bus_Fifo_Err_Int. When reading indicates whether a Command FIFO data error interrupt occoured (if set ?), when writing acknowledges (and clears?) the interrupt (if set ?). 22 Bus_Host_Err_Int_En. Enable Command FIFO host data error interrupt 23 Bus_Host_Err_Int. When reading indicates whether a Command FIFO host data error interrupt occoured (if set ?), when writing acknowledges (and clears?) the interrupt (if set ?). 24-26 Bus_PCI_DAC_Ws. DAC wait states. Only valid for PCI bus systems. 27 Bus_PCI_DAC_Dly. DAC access delayed. Only valid for PCI bus systems. 28 Bus_PCI_Memw_Ws. If set use one wait state for memory writes, none if clear. Only valid for PCI bus systems. 29 Bus_PCI_Burst_Dec. Inc/Decrement address for burst memory writes (only valid for PCI bus). 0: Increment, 1: Decrement 30-31 Bus_Rdy_Read_Dly. Bus RDY delay for memory reads. 0: RDY early by one memory clock cycle 1: No RDY delay 2: RDY delayed by one memory clock cycle 3: RDY delayed by two memory clock cycles M+0B0h/52ECh D(R/W): Mem_Cntl bit 0-2 Mem_Size. Video Memory Size. 0: 512K, 1: 1MB, 2: 2MB, 3: 4MB, 4: 6MB, 5: 8MB 4 Mem_Rd_Latch_En. Enables latching on RAM port data 5 Mem_Rd_Latch_Dly. Delays latching of RAM port data by 1/2 memory clock period 6 Mem_Sd_Latch_En. Enables latching of data on serial port data 7 Mem_Sd_Latch_Dly. Delays latching of serial port data by 1/2 memory clock period 8 Mem_Fill_Pls. One memory clock period set for width of data latch pulse 9-10 Mem_Cyc_Lnth. memory cycle length for non-paged access: 0: 5 mem clock periods, 1: 6 mem clks, 2: 7 mem clks 16-17 Mem_Bndry. VGA/Mach Memory boundary. If the memory boundary is enabled (bit 18 is set) defines the amount of memory reserved for the VGA. 0: 0K, 1: 256K, 2: 512K, 3: 1M 18 Mem_Bndry_En. If set the video memory is divided between the VGA engine and the Mach engine, with the low part reserved for the VGA engine, if clear they share the video memory M+0B4h/56ECh D(R/W): Mem_VGA_Wp_Sel bit 0-7 Mem_VGA_Wps0. Selects the 32K block mapped for writing in the 1st half of the small aperture at A000h in units of 32K. 16-23 Mem_VGA_Wps1. Selects the 32K block mapped for writing in the 2nd half of the small aperture at A800h in units of 32K. Note: The small aperture is only available in accelerated modes and only if bit 2 of the Config_Cntl (6AECh) register is set. M+0B8h/5AECh D(R/W): Mem_VGA_Rp_Sel bit 0-7 Mem_VGA_Rps0. Selects the 32K block mapped for reading in the 1st half of the small aperture at A000h in units of 32K. 16-23 Mem_VGA_Rps1. Selects the 32K block mapped for reading in the 2nd half of the small aperture at A800h in units of 32K. Note: The small aperture is only available in accelerated modes and only if bit 2 of the Config_Cntl (6AECh) register is set. M+0C0h/5EECh D(R/W): Dac_Regs bit 0-7 Dac_W_Index. Accesses the same register as VGA I/O address 3C8h 8-15 Dac_Data. Accesses the same register as VGA I/O address 3C9h 16-23 Dac_Mask. Accesses the same register as VGA I/O address 3C6h 24-31 Dac_R_Index. Accesses the same register as VGA I/O address 3C7h Note: This is really 4 8bit registers corresponding to the VGA registers 3C6h- 3C9h. Each byte accesses one of the 4 DAC registers. See VGA description of the registers 3C6h-3C9h, or the data on the specific DAC type, for details. Note that Dac_Cntl (M+0C4h/62ECh) bits 0-1 can be used in combination with this register to access up to 16 DAC registers. M+0C4h/62ECh D(R/W): Dac_Cntl bit 0-1 Dac_Ext_Sel. Connected to the RS2 and RS3 inputs on the DAC. 8 Dac_8bit_En. Enables 8bit DAC mode (256colors of 16M) if set 9-10 Dac_Pix_Dly. Setup and hold time on pixel data. 0: None, 1: 2ns - 4ns delay, 2: 4ns - 8ns delay 11-12 Dac_Blank_Adj. Blank Delay in number of pixel clock periods. 0: None, 1: 1 pixel clock, 2: 2 pixel clocks 13 Dac_VGA_Adr_En. When bit 24 of Crtc_Gen_Cntl (M+01Ch/1EECh) is set, this bit enables access to the VGA DAC I/O addresses (3C6h-3C9h). 16-18 Dac_Type. The DAC type - initialised from configuration straps on power-up. See Config_Stat0 (M+0E4h/72ECh) bits 9-11 for details M+0D0h/66ECh D(R/W): Gen_Test_Cntl bit 0 Gen_EE_Data_Out. EEPROM data output 1 Gen_EE_Clock. EEPROM clock output 2 Gen_EE_Chip_Sel. EEPROM Chip Select. 3 (R) Gen_EE_Data_In. Data input from the EEPROM 4 Gen_EE_En. Enables EEPROM access 5 Gen_Ovr_Output_En. Enables output of Overscan signal for external DAC 6 Gen_Ovr_Polarity. Polarity of the external Overscan signal. 0: Active high, 1: Active low 7 Gen_Cur_En. Enables the Hardware Cursor if set 8 Gen_Gui_En. Enables the drawing engine if set, resets it if clear 9 Gen_Block_Wr_En. Enables Block Write Memory cycle 16 Gen_Test_Fifo_En. Enables Draw engine testing of the Command FIFO 17 Gen_Test_Gui_Regs_En. Enables loading of the drawing engine registers without triggering drawing operations or context switches 18 Gen_Test_Vect_En. Enables the Bi-directional buses for 1 clock turn-around when switching from input to output. 19 Gen_Test_Crc_Str. Pixel data CRC initialization strobe. Write 1 to reset the CRC accumulator, which will then calculate the CRC for the next frame displayed. The CRC value calculated includes Overscan and Hardware Cursor data. 20-22 Gen_Test_Mode. Test Mode. 0: Disabled, 1: Memory Read/Write test, 2: Draw engine dest/source length counter test, 3: Draw engine source read length counter test, 4: CRTC test, 5: Pixel data CRC test 24 Gen_Test_Mem_Wr. Test Mode 1 (bits 20-22) cycle type: 0: Read cycle, 1: Write cycle 25 Gen_Test_Mem_Strobe. Writing a 1 will initiate a memory cycle if bits 20-22 = 1 26 Gen_Test_Dst_Ss_En. Enables Destination trajectory controller single stepping if set. The engine processes multiple pixels in single steps for rectangular draw operations, while Bresenham line draw operations works on single pixels at a time. 27 (W) Gen_Test_Dst_Ss_Strobe. Writing a 1 to this bit while bit 26 is set advances the drawing engine one step. 28 Gen_Test_Src_Ss_En. Enables Source trajectory controller single stepping if set 29 (W) Gen_Test_Src_Ss_Strobe. Writing a 1 to this bit while bit 28 is set advances the drawing engine one step. 30 Gen_Test_Cc_En. Enables CRTC single stepping 31 (W) Gen_Test_Cc_Strobe. Writing a 1 to this bit while bit 30 is set advances the CRTC one character clock. M+0E0h/6EECh D(R): Config_Chip_ID. bit 0-15 Cfg_Chip_Type. Product Type Code. 0D7h for the 88800GX, 57h for the 88800CX (guess) 16-23 Cfg_Chip_Class. Class code 24-31 Cfg_Chip_Rev. Revision code M+0E4h/72ECh D(R): Config_Stat0 bit 0-2 Cfg_Bus_Type. Host Bus type. 0: ISA, 1: EISA, 6: VLB, 7: PCI 3-5 Cfg_Mem_Type. Memory Type. 0: DRAM (256Kx4), 1: VRAM (256Kx4, x8, x16), 2: VRAM (256Kx16 short shift reg), 3: DRAM (256Kx16), 4: Graphics DRAM (256Kx16), 5: Enh VRAM (256Kx4, x8, x16), 6: Enh VRAM (256Kx16 short shift reg) 6 Cfg_Dual_CAS_En. Dual CAS support enabled if set 7-8 Cfg_Local_Bus_Option. Local Bus Option. 1: Local option 1, 2: Local option 2, 3: Local option 3 9-11 Cfg_Init_DAC_Type. DAC type. 2: ATI68875/TI 34075, 3: Bt476/Bt478, 4: Bt481, 5: ATI68860/ATI68880, 6: STG1700, 7: SC15021 12-14 Cfg_Init_Card_ID. Card ID. 0-6: Card ID 0-6, 7: Disable Card ID 15 Cfg_Tri_Buf_Dis. Tri-stating of output buffers during reset disabled if set 16-21 Cfg_Ext_ROM_Addr. Extended Mode ROM Base Address. Bits 12-17 of the ROM base address, 0: C0000h, 1: C1000h ... 3Fh: FE000h 22 Cfg_ROM_Dis. Disables ROM if set 23 Cfg_VGA_Enm. Enables VGA Controller 24 Cfg_Local_Bus_Cfg. 0: Local Bus configuration 2, 1: configuration 1 25 Cfg_Chip_En. Enables chip if set 26 Cfg_Local_Read_Dly_Dis. If clear delays read cycle termination by 1 bus clock, no delay if set 27 Cfg_ROM_Option. ROM Address. 0: E0000h, 1: C0000h 28 Cfg_Bus_option. EISA bus: Enables POS registers if set, disables POS registers and enables chip if clear. VESA Local Bus: Enables decode of I/O address 102h if clear, disables if set 29 Cfg_Local_DAC_Wr_En. Enables local bus DAC writes if set 30 Cfg_VLB_Rdy_Dis. Disables VESA local bus compliant RDY if set 31 Cfg_Ap_4Gbyte_Dis. Disables 4GB Aperture Addressing if set M+0E8h/76ECh D(R): Config_Stat1 bit 0 Cfg_PCI_DAC_Cfg. If clear the DAC data bus is connected directly to the DAC, if set it is connected through a latch. Only valid for PCI bus systems. M+100h D(R/W): Dst_Off_Pitch bit 0-19 Dst_Offset. Address of the Destination area in units of 8 bytes. 22-31 Dst_Pitch. Destination Pitch in units of 8 pixels. In mono modes must be a multiplum of 64 pixels, in 4bpp modes a multiplum of 16 pixels. M+104h D(R/W): Dst_X bit 0-12 Dst_X. Destination X coordinate M+108h D(R/W): Dst_Y bit 0-14 Dst_Y. Destination Y coordinate M+10Ch D(W): Dst_Y_X bit 0-14 Dst_Y. Destination Y coordinate 16-28 Dst_X. Destination X coordinate M+110h D(R/W): Dst_Width bit 0-12 Dst_Width. Width of the destination area in pixels. 31 Dst_Wid_Fill_Dis. If clear the bitblt operation is started by writing to this register, if set draw is not started. M+114h D(R/W): Dst_Height bit 0-14 Dst_Height. Height of the destination area in lines. M+118h D(W): Dst_Height_Width bit 0-14 Dst_Height. Height of the destination area in lines. 16-28 Dst_Width. Width of the destination area in pixels. Note: Writing to this register initiates a rectangle fill M+11Ch D(W): Dst_X_Width bit 0-12 Dst_X. Destination X coordinate 16-28 Dst_Width. Destination width M+120h D(R/W): Dst_Bres_Lnth bit 0-14 Dst_Bres_Lnth. Line length in pixels. 31 Dst_Bres_Lnth_Line_Dis. If clear the line draw operation is started by writing to this register, if set draw is not started. Note: Writing to this register starts the line draw, unless bit 31 is set. M+124h D(R/W): Dst_Bres_Err bit 0-17 Dst_Bres_Err. Bresenham Error Term. Should be set to: 2*min(abs(dX),abs(dY))-max(abs(dX),abs(dY)), where dX is the horizontal difference (in pixels) between the start and end point and dY the vertical difference. M+128h D(R/W): Dst_Bres_Inc bit 0-17 Dst_Bres_Inc. Bresenham increment registers. Should be set to: 2*min(abs(dX),abs(dY)), where dX is the horizontal difference (in pixels) between the start and end point and dY the vertical diff. M+12Ch D(R/W): Dst_Bres_Dec bit 0-17 Dst_Bres_Dec. Bresenham decrement registers. Calculated as: 2*(min(abs(dX),abs(dY))-max(abs(dX),abs(dY))), where dX is the horizontal difference (in pixels) between the start and end point and dY the vertical difference. Should be negative. M+130h D(R/W): Dst_Cntl bit 0 Dst_X_Dir. Destination X dir. 0: Right to left, 1: Left to right 1 Dst_Y_Dir. Destination Y dir. 0: Bottom to top, 1: Top to bottom. 2 Dst_Y_Major. Destination Y Major axis (Bresenham linedraw). 0: X is major axis, 1: Y is major axis 3 Dst_X_Tile. Enable Rectangular tiling in the X direction if set. For rectangular destinations setting this bit causes the Dst_X register to have the value (Dst_X + Dst_Width) after the blit. 4 Dst_Y_Tile. Enable Rectangular tiling in the Y direction if set. For rectangular destinations setting this bit causes the Dst_Y register to have the value (Dst_Y + Dst_Height) after the blit. 5 Dst_Last_Pel. Enable Destination last Pel. If set the last pixel in the line is drawn, if clear it is not drawn 6 Dst_Polygon_En. Enables Polygon Outline & Fill. 7 Dst_24_Rot_En. Enables 24bpp Rotation. 8-10 Dst_24_Rot. Initial foreground color, background color, write mask and pattern rotation when drawing in 24bit packed mode. 11 Dst_Bres_Sign. When the Dst_Bres_Err (M+124h) register is 0, it should be considered as: 0: Positive, 1: Negative M+180h D(R/W): Src_Off_Pitch bit 0-19 Src_Offset. Start address of the source area in units of 8 bytes 22-31 Src_Pitch. Width of the source area in units of 8 pixels. In mono modes the source width must be a multipla of 64 pixels and in 4bpp modes a multipla of 16 pixels. M+184h D(R/W): Src_X bit 0-12 Src_X. Starting X-coordinate of the blit source Note: this register can also be written at M+18Ch M+188h D(R/W): Src_Y bit 0-14 Src_Y. Starting Y-coordinate of the blit source Note: this register can also be written at M+18Ch M+18Ch D(W): Src_Y_X bit 0-14 Src_Y. Starting Y-coordinate of the blit source 16-28 Src_X. Starting X-coordinate of the blit source M+190h D(R/W): Src_Width1 bit 0-12 Src_Width1. Width of the pattern in scan lines. For rotated patterns this is the width from the startpoint (inside the pattern) to the end of the pattern. Src_Width2 (M+1A8h) defines the total pattern width. Only used if patterns are enabled (M+1B4h bit 0 is set) Note: this register can also be written at M+198h M+194h D(R/W): Src_Height1 bit 0-14 Src_Height1. Height of the pattern in scan lines. For rotated patterns this is the height from the startpoint (inside the pattern) to the end of the pattern. Src_Height2 (M+1ACh) defines the total pattern height. Only used if patterns are enabled (M+1B4h bit 0 is set) Note: this register can also be written at M+198h M+198h D(W): Src_Height1_Width1 bit 0-14 Src_Height1. Source Pattern Height. See Src_Height1 (M+194h) 16-28 Src_Width1. Source Pattern Width. See Src_Width1 (M+190h) M+19Ch D(R/W): Src_X_Start bit 0-12 Src_X_Start. For pattern with rotation selects the left edge of the pattern. Note: this register can also be written at M+1A4h M+1A0h D(R/W): Src_Y_Start bit 0-14 Src_Y_Start. For pattern with rotation selects the top edge of the pattern. Note: this register can also be written at M+1A4h M+1A4h D(W): Src_Y_X_Start bit 0-14 Src_Y_Start. For pattern with rotation selects the top edge of the pattern. 16-28 Src_X_Start. For pattern with rotation selects the left edge of the pattern. M+1A8h D(R/W): Src_Width2 bit 0-12 Src_Width2. For Pattern with rotation blits defines the total width of the pattern in pixels. Src_Width1 (M+190h) defines the distance from the starting point to the end of the pattern. Only used if patterns with rotation are enabled (M+1B4h bit 0 and 1 both set). Note: this register can also be written at M+1B0h M+1ACh D(R/W): Src_Height2 bit 0-14 Src_Height2. For Pattern with rotation blits defines the total height of the pattern in scanlines. Src_Height1 (M+194h) defines the distance from the starting point to the end of the pattern. Only used if patterns with rotation are enabled (M+1B4h bit 0 and 1 both set). Note: this register can also be written at M+1B0h M+1B0h D(W): Src_Height2_Width2 bit 0-14 Src_Height2. Source Pattern Height. See Src_Height1 (M+1ACh) 16-28 Src_Width2. Source Pattern Width. See Src_Width2 (M+1A8h). M+1B4h D(R/W): Src_Cntl bit 0 Src_Patt_En. Enables the use of patterns if set. Src_Y_End is only used if this bit is set. 1 Src_Patt_Rot_En. Enables rotated patterns if set (and bit 0 set). Src_X_Start (M+19Ch) and Src_Y_Start (M+188h) are only used if this bit is set. 2 Src_Linear_En. Enables Linear Source, where the source data starts at Src_Offset (M+180h) and advances left-to-right. Dst_X_Dir (M+130h bit 0) should be set. All other source registers are ignored, except Src_Byte_Align (bit 3) 3 Src_Byte_Align. If set the source pointer advances to the nearest byte boundary when the destination moves to the next line. Only valid in 1bpp and 4bbp modes with rectangular destination and Linear Source (bit 2) is set. 4 Src_Line_X_Dir. Source X direction for Bresenham linedraw M+200h - M+23Ch D(W): Host_Data[] bit 0-31 Host_Data. This register is used for transfering Host Source data. There are 16 DWORD addresses mapped to the same register to allow transfer via REP MOVSD. If too little host data is transfered (another drawing engine register is written while the engine still expects host data) the engine panics and completes the operation with garbage data. Any excess data transfered is discarded. M+240h D(R/W): Host_Cntl bit 0 Host_Byte_Align. Enables Host Data Byte alignment if set M+280h D(R/W): Pat_Reg0 bit 0-31 Pat_Reg0. 1st half of the pattern. The other half is in M+284h M+284h D(R/W): Pat_Reg1 bit 0-31 Pat_Reg1. 2nd half of the pattern. The other half is in M+280h M+288h D(R/W): Pat_Cntl bit 0 Pat_Mono_En. Enables mono pattern 1 Pat_Clr_4x2_En. Enables 4x2 color pattern 2 Pat_Clr_8x1_En. Enables 8x1 color pattern M+2A0h D(R/W): Sc_Left bit 0-12 Sc_Left. Left edge of the scissor rectangle. No pixels are drawn to the left of this line. M+2A4h D(R/W): Sc_Right bit 0-12 Sc_Right. Right edge of the scissor rectangle. No pixels are drawn to the right of this line. M+2A8h D(W): Sc_Left_Right bit 0-12 Sc_Left. Left edge of the scissor rectangle. No pixels are drawn to the left of this line. 16-27 Sc_Right. Right edge of the scissor rectangle. No pixels are drawn to the right of this line. Note: These registers are also present at M+2A0h and M+2A4h M+2ACh D(R/W): Sc_Top bit 0-14 Sc_Top. Top edge of the scissor rectangle. No pixels are drawn above this line. M+2B0h D(R/W): Sc_Bottom bit 0-14 Sc_Bottom. Bottom edge of the scissor rectangle. No pixels are drawn below this line. M+2B4h D(W): Sc_Top_Bottom bit 0-14 Sc_Top. Top edge of the scissor rectangle. No pixels are drawn above this line. 16-30 Sc_Bottom. Bottom edge of the scissor rectangle. No pixels are drawn below this line. Note: These registers are also present at M+2ACh and M+2B0h M+2C0h D(R/W): Dp_Bkgd_Clr bit 0-31 Dp_Bkgd_Clr. Background color. Only the 1/4/8/16/24/32 lowest bits used depending on the current pixel depth. M+2C4h D(R/W): Dp_Frgd_Clr bit 0-31 Dp_Frgd_Clr. Foreground color. The bits needed for the current pixel depth are taken from the low end. I.e. in 4bpp mode only the low 4 birts are used. M+2C8h D(R/W): Dp_Write_Msk bit 0-31 Dp_Write_Msk. Write mask. Each 0 bit prevents writing to the corresponding bit in each pixel. M+2CCh D(R/W): Dp_Chain_Mask bit 0-14 Dp_Chain_Msk. Defines the breaks between pixels and color blocks. Each set bit prevents the propagation of the corresponding carry bit in the ALU. Only used if the fore- or background mix is set to 17h. Should be programmed to the folowing values, depending of the pixel depth: 1bpp: N/A, 4bpp: 8888h, 7bpp (RGB 2:3:2): D2D2h, 8bpp: 8080h, 8bpp (RGB 3:3:2): 9292h, 15bpp: 4210h, 16bpp: 8410h, 24bpp: 8080h, 32bpp: 8080h M+2D0h D(R/W): Dp_Pix_Width bit 0-2 Dp_Dst_Pix_Width. Destination pixel width. 0: Mono, 1: 4bpp, 2: 8bpp, 3: 15bpp, 4: 16bpp, 6: 32bpp 8-10 Dp_Src_Pix_Width. Source Pixel Width. See above 16-18 Dp_Host_Pix_Width. Host Data Pixel Width. See above 24 Dp_Byte_Pix_Order. Pixel order within each byte in 1bpp and 4bpp modes. 0: 1st pixel at MSB, 1: 1st pixel at LSB Note: The pixel widths should either be the same for all three fields, or for monochrome to color expansion (Src or Host set to mono). M+2D4h D(R/W): Dp_Mix bit 0-4 Dp_Bkgd_Mix. Background Mix (see below) 16-20 Dp_Fore_Mix. Foreground Mix: 00h: not DST 01h: 0 (always false) 02h: 1 (always true) 03h: DST 04h: not SRC 05h: DST xor SRC 06h: (not DST) xor SRC 07h: SRC 08h: (not DST) or (not SRC) 09h: DST or (not SRC) 0Ah: (not DST) or SRC 0Bh: DST or SRC 0Ch: DST and SRC 0Dh: (not DST) and SRC 0Eh: DST and (not SRC) 0Fh: (not DST) and (not SRC) 17h: (DST+SRC)/2 M+2D8h D(R/W): Dp_Src bit 0-2 Dp_Bkgd_Src. Background Source. 0: Background color, 1: Foreground color, 2: Host data, 3: Blit source, 4: Pattern registers 8-10 Dp_Frgd_Src. Foreground Source. See above 16-17 Dp_Mono_Src. Monochrome Source. 0: Always 1, 1: Pattern registers, 2: Host Data, 3: Blit Source M+300h D(R/W): Clr_Cmp_Clr bit 0-31 Clr_Cmp_Clr. Color used for color comparison. M+304h D(R/W): Clr_Cmp_Msk. bit 0-31 Clr_Cmp_Msk. Color comparison mask M+308h D(R/W): Clr_Cmp_Cntl bit 0-2 Clr_Cmp_Fn. Color Comparison function: 0: False, 1: True, 4: Diff from Clr_Cmp_Clr, 5: Equal to Clr_Cmp_Clr. If the comparison is false the source data is written to the destination, if true the destination is left untouched. 24 Clr_Cmp_Src. Set to compare against the source data, clear to compare against destination data. M+310h D(R): Fifo_Stat bit 0-15 Fifo_Stat. FIFO State. Each bit set indicates a filled slot in the command FIFO. Note that only registers from M+100h - M+3FFh use the Command FIFO 31 Fifo_Err. FIFO Overrun Error occoured if set. If set the drawing engine is locked until reset through the Gen_Test_Cntl register M+320h D(R/W): Context_Mask bit 0-31 Context_Mask. Each bit mask the loading of one DWORD in the context structure. Offset 00h and 70h are loaded regardless of the state of bits 0 and 28 of this register. Context Structure: Bit: Offset: Reg Offset: Register Name: - 00h 320h Context_Mask 2 08h 100h Dst_Off_Pitch 3 0Ch 10Ch Dst_Y_X 4 10h 118h Dst_Height_Width 5 14h 124h Dst_Bres_Err 6 18h 128h Dst_Bres_Inc 7 1Ch 12Ch Dst_Bres_Dec 8 20h 180h Src_Off_Pitch 9 24h 18Ch Src_Y_X 10 28h 198h Src_Height1_Width1 11 2Ch 1A4h Src_Y_X_Start 12 30h 1B0h Src_Height2_Width2 13 34h 280h Pat_Reg0 14 38h 284h Pat_Reg1 15 3Ch 2A8h Sc_Left_Right 16 40h 2B4h Sc_Top_Bottom 17 44h 2C0h Dp_Bkgd_Clr 18 48h 2C4h Dp_Frgd_Clr 19 4Ch 2C8h Dp_Write_Mask 20 50h 2CCh Dp_Chain_Mask 21 54h 2D0h Dp_Pix_Width 22 58h 2D4h Dp_Mix 23 5Ch 2D8h Dp_Src 24 60h 300h Clr_Cmp_Clr 25 64h 304h Clr_Cmp_Mask 26 68h 308h Clr_Cmp_Cntl 27 6Ch 330h Gui_Traj_Cntl - 70h 32Ch Context_Load_Cntl Offset 04h-07h and 74h-FFh Reserved M+32Ch D(R/W): Context_Load_Cntl bit 0-14 Context_Load_Ptr. Context Load Pointer in units of 256 bytes from the top of video memory 16-17 Context_Load_Cmd. 0. No context load, 1: load from Context_Load_Ptr 2: Load from Context_Load_Ptr and start rectangular fill, 3: Load from Context_Load_Ptr and start Bresenham line 31 Context_Load_Dis. Execute context if set, do not execute if clear M+330h D(R/W): Gui_Traj_Cntl bit 0 Dst_X_Dir. Destination X dir. 0: Right to left, 1: Left to right 1 Dst_Y_Dir. Destination Y dir. 0: Bottom to top, 1: Top to bottom. 2 Dst_Y_Major. Destination Y Major axis (Bresenham linedraw). 0: X is major axis, 1: Y is major axis 3 Dst_X_Tile. Enable Rectangular tiling in the X direction if set. For rectangular destinations setting this bit causes the Dst_X register to have the value (Dst_X + Dst_Width) after the blit. 4 Dst_Y_Tile. Enable Rectangular tiling in the Y direction if set. For rectangular destinations setting this bit causes the Dst_Y register to have the value (Dst_Y + Dst_Height) after the blit. 5 Dst_Last_Pel. Enable Destination last Pel. If set the last pixel in the line is drawn, if clear it is not drawn 6 Dst_Polygon_En. Enables Polygon Outline & Fill. 7 Dst_24_Rot_En. Enables 24bpp Rotation. 8-10 Dst_24_Rot. Initial fg color, Bk color, write mask and pattern rotation when drawing in 24bit packed mode. 11 Dst_Bres_Sign. When the Dst_Bres_Err (M+124h) register is 0, it should be considered as: 0: Positive, 1: Negative 16 Src_Patt_En. Enables Pattern source - Src_Y_End is only used if this bit is ?set? 17 Src_Patt_Rot_En. Enables Pattern Source rotation - Src_X_Start and Src_Y_Start are only used if this bit ?set? 18 Src_Linear_En. Enables Linear Source Addressing where the source data starts at Src_Offset and continues left to right as a pixel stream. All other source registers and bits are ignored, except bit 19. Dst_X_Dir (bit 0 should be set for proper operation. 19 Src_Byte_Align. If bit 18 is set, controls whether the source advances to the byte when the destination advances in the Y direction 20 Src_Line_X_Dir. Source X direction when for Bresenham Linedraw 24 Pat_Mono_En. Enables Monochrome 8x8 Pattern 25 Pat_Clr_4x2_En. Enables Color 4x2 Pattern 26 Pat_Clr_8x1_En. Enables Color 8x1 Pattern 28 Host_Byte_Align. Enables Host Data byte alignment if set Note: This register is a combination of the Dst_Cntl (M+130h), Src_Cntl (M+1B4h), Pat_Cntl (M+288h) and Host_Cntl (M+240h) registers. M+338h D(R): Gui_Stat bit 0 Gui_Active. Set if the Draing engine is busy 8 Dstx_Lt_Scissor_Left. Set if DstX is left of the left scissor 9 Dstx_Gt_Scissor_Right. Set if DstX is right of the right scissor 10 Dsty_Lt_Scissor_Top. Set if DstX is above the top scissor 11 Dsty_Gt_Scissor_Bottom. Set if DstX is below the bottom scissor Reserved locations in the ROM (typically starting at C000h:0): $31 9 bytes '761295520' ID's ATI product $40 2 bytes '31' = ATI VGA Wonder/Mach series $43 1 byte Gate revision. ' ' (20h) = Mach64 (Not documented ??) $64 4 bytes Far jump to Mach64 BIOS function. AL is the function code, and the error code is returned in AH (0: Ok, 1: Error, 2: Function not supported). AL = 00h Load coprocessor CRTC parameters CL bit 0-3 Color depth. 1: 4bpp, 2: 8bpp, 3: 15bpp, 4: 16bpp, 5: 24bp, 6: 32bpp 4 If set enables gamma correction in direct color modes (15bpp and above), enables 8bit DAC width in 8bpp modes (256 of 16M colors). 6-7 Pitch. 0: 1024, 1: Don't change, 2: Same as displayed CH Resolution. 12h: 640x480 6Ah: 800x600 55h: 1024x768 80h: Load from table at offset BX in EEPROM 81h: Load from table at DS:BX 82h: OEM mode 83h: 1280x1024 84h: 1600x1200 AL = 01h Set display mode. CL bit 0 Clear for VGA mode with 6bit DAC, set for coprocessort mode 7 Set for 8bit DAC (8bpp modes) or Gamma correction (direct color modes). OR'd with bit 4 from the AL=00h function. AL = 02h Load coprocessor CRTC parameters and set mode Same parameters as AL = 00h AL = 03h Read EEPROM data BX Index into the EEPROM Returns data in DX AL = 04h Write EEPROM data BX Index into the EEPROM DX Data AL = 05h Memory aperture services CL bit 0 Set to enable Memory Aperture, clear to disable AL = 06h Short query function Returns configuration data: AL bit 0-5 Aperture configuration 0: disable, 1: 4M, 2: 8M 6 Aperture address is predefined or hardcoded in BIOS if set, user defined if clear 7 Aperture address is in 4GB range if set, in 128MB range if clear BX Aperture address CL Memory Size CH Color Depth support bit 0 Set if 15bpp (5-5-5) supported 1 Set if 16bpp (5-6-5) supported 2 Set if 24bpp RGB supported 3 Set if 24bpp BGR supported 4 Set if 32bpp BGR supported 5 Set if 32bpp RGBx supported DX ASIC identification. bit 0-7 Revision 8-15 Type AL = 07h Return hardware capability list Returns ?? AL = 08h Return query device data structure in bytes CL bit 0 Set to return size of header and mode tables, clear to return size of header Returns size (number of bytes) in CX AL = 09h Query device DX:BX Pointer to buffer to receive data. The buffer is filled with first a Query structure and then a number of Mode Table structures. CL bit 0 Set to return header and mode tables, clear to return header only AL = 0Ah Return clock chip frequency table Returns: AL Clock chip type DX:BX Pointer to 16 WORD table of the preprogrammed frequencies. Each WORD holds one clock in units of 10KHz DX:CX Pointer clock chip,info structure: Offset Type: 00h BYTE Clock chip type 01h BYTE Frequency table id. 02h WORD Min freq in units of 10KHz WORD Max freq in units of 10KHz 06h BYTE User programmable entry number (if <> FFh) 07h BYTE Reserved 08h WORD Hardware dependant AL = 0Bh Program a specified clock entry CH Entry in clock table (0-15) BX New clock value in units of 10KHz Returns: AL = Clock chip type BX = Programming word (chip dependant) AL = 0Ch DPMS service, set DPMS mode CL New mode. 0: Active, 1: Standby, 2: Suspend, 3. Off, 4: Blanking display AL = 0Dh Return current DPMS state in CL. Returns CL = state. 0: Active, 1: Standby, 2: Suspend, 3. Off, 4: Blanking display AL = 0Eh Set graphics controller's power management state CL New state. 0: Active, 1: Standby, 2: Suspend, 3. Off AL = 0Fh Return graphics controller's current power management state in CL. Returns CL = state. 0: Active, 1: Standby, 2: Suspend, 3. Off AL = 10h Set RAMDAC to different states CL bit 0 Set to switch RAMDAC to sleep mode, clear to switch it to normal mode Note: CL = 80h is reserved. AL = 11h Return external storage device information CL bit 0-3 Device type 4-6 External data access mode. 0: Read- and writable 1: Readable, not writable 3: Neither readable or writable 4: Read- and writable. Access must by handled according to the ?? 7 If set all of external storage is used, if clear there is space Returns: CL Last readable and writable entries in the storage device CH Number of (read only) 16bit entries in the storage device BL Offset into the CRTC parameter table BH Size of the CRTC parameter table AL = 12h Short Query. Returns: DX I/O base address AX,BX,CX reserved Query structure (returnde by AL = 09h): Offset Size Description 00h WORD Size of structure in bytes 02h BYTE Revision 03h BYTE Number of mode tables 04h WORD Offset of mode tables in bytes 06h BYTE Size of each mode table 07h BYTE VGA type. 0: Disabled, 1: enabled 08h WORD ASIC revision 0Ah BYTE VGA Boundary. 0: full access, 1: 256K, 2: 512K, 3: 768, 4: 1MB 0Bh BYTE Memory Size. 0: 512K, 1: 1MB, 2: 2MB, 3: 4MB, 4: 6MB, 5: 8MB, 6: 12MB, 7: 8MB 0Ch BYTE Bits 0-3 DAC Type. 2: TI 34075/ATI68875, 3: Bt476/478, 4: Bt481, AT&T20c490/491, 5: ATI68860, 6: STG1700, 7: STG1702, SC15021, AT&T20c498 0Dh BYTE Memory Type. 0: DRAM 256Kx16, 1: VRAM 256Kx4, 2: VRAM 256Kx16, 3: DRAM 256Kx4, 5: VRAM 256Kx4 special, 6: VRAM 256Kx16 special 0Eh BYTE Bus Type. 0: ISA, 1: EISA, 6: VLB, 7: PCI 0Fh BYTE Bit 6 Enable sync on green 7 Enable composite sync 10h WORD Aperture address in megabytes (0-4095) 12h BYTE Aperture configuration. bit 0-5 0: Disable, 1: 4MB, 2: 8MB 6 Aperture address is predefined or hardcoded in BIOS if set, user defined if clear 7 Aperture address is in 4GB range if set, in 128MB range if clear 13h BYTE Color Depth Support. Bit 0 16bpp (5-6-5) modes supported if set 1 15bpp (5-5-5) modes supported if set 2 24bpp (RGB) modes supported if set 3 24bpp (BGR) modes supported if set 4 32bpp (BGR) modes supported if set 5 32bpp (RGBx) modes supported if set 14h BYTE RAMDAC support feature Bit 4 Supports sleep mode if set 5 Supports 256 grey scale if set 6 Supports gamma correction if set 7 Supports sync on green if set 16h WORD Offset into current mode table if non-zero 18h WORD I/O base address 1Ah 6BYTEs Reserved Mode Table Structure (returned by AL = 09h after the Query structure). Offset Size Description 00h WORD Horizontal Display Resolution in pixels 02h WORD Vertical Display Resolution in scanlines 04h BYTE Maximum pixel depth. 1: 4bpp, 2: 8bpp, 3: 15bpp, 4: 16bpp, 5: 24bp, 6: 32bpp 05h BYTE Mode number. 12h: 640x480, 6Ah: 800x600, 55h: 1024x768, 82h: OEM mode, 83h: 1280x1024, 84h: 1600x1200 06h WORD Offset into EEPROM. Table generated from CRTC parameters if = 0, else this is an index into the EEPROM. 0Ch WORD Bit 8 Enable doubel scan 9 Enable interlace 10 Enable MUX mode 0Eh BYTE Crtc_H_Total 0Fh BYTE Crtc_H_Disp 10h BYTE Crtc_H_Sync_Strt 11h BYTE Crtc_H_Sync_Wid 12h WORD Crtc_V_Total 14h WORD Crtc_V_Disp 16h WORD Crtc_V_Sync_Strt 18h BYTE Crtc_V_Sync_Wid 19h BYTE Clock_Cntl 1Ah WORD Dot Clock for coprocessor mode (programmable clock chip) 1Ch WORD Bits 0-3 Ovr_Wid_Left 4-7 Ovr_Wid_Right 8-11 Crtc_H_Sync_Dly 12-15 Crtc_H_Total_Dly 1Eh WORD Ovr_Wid_Top, Ovr_Wid_Bottom 20h WORD Ovr_Clr_B, Ovr_Clr_8 22h WORD Ovr_Clr_G, Ovr_Clr_R EEPROM Data structure. All offsets are in WORDs (16bits). Offset Bits Description 00h 0-15 EEPROM write counter 01h 0-7 EEPROM checksum. The (byte) sum of the EEPROM must be 0. 02h 0-15 Reserved(0) 03h 0-3 EEPROM table revision 04h 0-15 Custom monitor indices 05h 0 Enable composite sync 1 Enable sync on green 6 Enable 640x480 at 72Hz if set 7 Use stored 640x480 parameters for coprocessor mode if set 8-15 1280x1024 refresh rate information 06h 0 Select 800x600 at 85Hz interlaced if set 1 Select 800x600 at 89Hz interlaced if set 2 Select 800x600 at 56Hz if set 3 Select 800x600 at 60Hz if set 4 Select 800x600 at 70Hz if set 5 Select 800x600 at 72Hz if set 7 Use stored 800x600 parameters for coprocessor mode if set 07h 0 Select 1024x768 at 87Hz interlaced if set 1 Select 1024x768 at 60Hz if set 2 Select 1024x768 at 70Hz if set 3 Select 1024x768 at 72Hz if set 7 Use stored 1024x768 parameters for coprocessor mode if set 08h 0 16bit ROM enabled if set 1 Zero Wait State ROM enabled if set 2 Zero Wait State RAM enabled if set 3 VGA bus I/O is 16bit if set, 8 bit if clear 4 Font selected at power-up. 0: 8x14 or 9x14, 1: 8x16 or 9x16 5 Dual monitor enable 6-7 Monochrome Mode Color Select. 0: White, 1: Green, 2: Amber 8-15 Power-Up Video Mode. 3: VGA color (secondary), 5: VGA mono (secondary), 9: VGA color (primary), 0Bh: VGA mono (primary). 09h 0-2 Monitor Alias 3 Monitor alias enable 4-5 VGA boundary. 0: Full access, 1: 512K, 2: 1MB 8-13 Monitor code 14-15 Host data transfer width. 0: Auto select, 1: 16 bit, 2: 8bit, 3: 8bit (host), 16bit (others) 0Ah 0-3 Aperture Size (only used Aperture Location is 0) 4-15 Aperture Location in Mbytes 0Bh 0-7 Interrupt level. 20h: IRQ 5, 28h: IRQ 4, 30h: IRQ 3, 38h: IRQ 2 8-15 Mouse address. 0: Mouse disabled, 8: Secondary mouse address, 18h: Primary mouse address 0Ch - 16h Reserved. The (upto) 7 CRTC parameter tables start at offset 17h, 26h, 35h, 44h, 53h, 62h and 71h respectively CRTC Parameter Table (in EEPROM). All offsets are in WORDs (16bits). The tables are different for VGA modes and accelerator modes. Each table is 30 (1Eh) bytes long Offset Bits Description (VGA version) 00h 0-7 Video mode select 1 8-15 Video mode select 2 01h 0-7 CRT refresh rate bit mask 8-15 Video mode select 3 02h 4 CRT usage. 0: Use sync polarities, 1: use all CRT parameters 6 Horizontal sync polarity 7 Vertical sync polarity 8 Double scan enable 9 Interlace enable 13 MUX mode enable 03h 0-7 H_Total (3d4h index 0) 8-15 Max_Scan_Line (3d4h index 9) 04h 0-7 Retrace_Strt (3d4h index 4) 8-15 H_Retrace_End (3d4h index 5) 05h 0-7 V_Retrace_Strt (3d4h index 10h) 8-15 V_Retrace_End (3d4h index 11h) 06h 0-7 H_Blank_Strt (3d4h index 2) 8-15 H_Blank_End (3d4h index 3) 07h 0-7 V_Blank_Strt (3d4h index 15h) 8-15 V_Blank_End (3d4h index 16h) 08h 0-7 V_Total (3d4h index 6) 8-15 Crtc_Overflow (3d4h index 7) 09h 0-7 CRT_Mode (3d4h index 17h) 8-15 V_Disp_End (3d4h index 12h) 0Ah 0-3 Ovr_Wid_Left 4-7 Ovr_Wid_Right 8-11 Crtc_H_Sync_Dly 0Bh 0-15 Ovr_Wid_Top, Ovr_Wid_Bottom 0Ch 0-15 Ovr_Clr_8, Ovr_Clr_B 0Dh 0-15 Ovr_Clr_G, Ovr_Clr_R 0Eh 0-15 Reserved Offset Bits Description (Accelerator version) 01h 0-7 80h for coprocessor mode 8-15 Video mode select 02h 8 Double scan enable 9 Interlace enable 13 MUX mode enable 03h 0-7 Crtc_H_Total (M+000h/02ECh bit 0-7) 8-15 Crtc_H_Disp (M+000h/02ECh bit 16-23) 04h 0-7 Crtc_H_Sync_Strt (M+004h/06ECh bit 0-7) 8-15 Crtc_H_Sync_Wid (M+004h/06ECh bit 16-21) 05h 0-15 Crtc_V_Total (M+008h/0AECh bit 0-10) 06h 0-15 Crtc_V_Disp (M+008h/0AECh bit 16-26) 07h 0-15 Crtc_V_Sync_Strt (M+00Ch/0EECh bit 0-10) 08h 0-7 Crtc_V_Sync_Width (M+00Ch/0EECh bit 16-21) 8-15 Clock_Cntl (M+090h/4AECh bit 0-7) 09h 0-15 Dot clock 0Ah 0-3 Ovr_Wid_Left (M+044h/26ECh bit 0-3) 4-7 Ovr_Wid_Right (M+044h/26ECh bit 16-19) 8-11 Crtc_H_Sync_Dly (M+004h/06ECh bit 8-10) 0Bh 0-15 Ovr_Wid_Top (M+048h/2AECh bit 0-7), Ovr_Wid_Bottom (M+048h/2AECh bit 16-23) 0Ch 0-15 Ovr_Clr_8 (M+040h/22ECh bit 0-7), Ovr_Clr_B (M+040h/22ECh bit 8-15) 0Dh 0-15 Ovr_Clr_G (M+040h/22ECh bit 16-23), Ovr_Clr_R (M+040h/22ECh bit 24-31) 0Eh 0-15 Reserved ID ATI Super VGA Chip Set if (getbios($31,9)='761295520') and (getbios($40,2)='31') then begin {ATI_Super_VGA} case mem[$C000:$43] of $31: ATI 18800; $32: ATI 18800-1; $33: ATI 28800-2; $34: ATI 28800-4; $35: ATI 28800-5; $36: ATI 28800-6; $61,$63: ATI Graphics Ultra Pro/+; else unknown_ATI end end; Video Modes: 23h T 132 25 16 (8x14) 27h T 132 25 2 (8x14) 33h T 132 44 16 (8x8) 37h T 132 44 2 (8x8) 51h G 640 480 16 PL4 ATI EGA Wonder only 52h G 752 410 16 PL4 ATI EGA Wonder only 53h G 800 560 16 PL4 54h G 800 600 16 PL4 55h G 1024 768 16 PL4 (V4 or later) 58h T 80 33 16 (8x8) 5Bh T 80 30 (8x16) 61h G 640 400 256 P8 62h G 640 480 256 P8 63h G 800 600 256 P8 64h G 1024 768 256 P8 V6 (VGA Wonder +) or later 65h G 1024 768 16 P4 **** See note 67h G 1024 768 4 PL2E **** See note 6Ah G 800 600 16 PL4 Undocumented ?? 72h G 640 480 32k P15 V7 (XL) only 73h G 800 600 32k P15 V7 (XL) only 75h G 640 480 16m P24 XL24 only Note: ATI Prism Elite uses a Trident chip and Trident mode numbers. ATI enhanced Graphics modes do NOT support INT 10h with AH= 01h..0Eh or 11h or 13h. Mode 65h 1024x768 16 color 4 bits per pixel packed mode Even pixel is in bits 0-3 of the byte, odd in bits 4-7. The desired 16 colors are in palette registers 00h-0Fh and palette register 10h must match register 01h, 20h must match 02h etc. Mode 67h 1024x768 4 color 2 bits per pixel planar mode Even pixels are in plane 2&3, odd pixels in plane 0&1. BIOS extensions: ----------1012--BH55------------------------- INT 10 - VIDEO - ALTERNATE FUNC SELECT (ATI,Tatung,Taxan) - ENHANCED FEATURES AH = 12h BH = 55h BL = subfunction 00h disabled enhanced features 01h enable enhanced features 02h get status Return: AL = status flags bit 3 set if enhanced features enabled bits 7-5 monitor type 000 PS/2 mono 001 PS/2 color 010 multi-sync 011 Taxan 650 25kHz 100 RGB 101 mono 110 EGA 111 Compaq internal 03h disable register trapping (CGA emulation) 04h enable register trapping 05h program mode described by table at ES:BP 06h get mode table AL = video mode BP = FFFFh (Known illegal value). SI = 0000h (Known illegal value). Return: ES:BP -> table suitable for mode AL (and subfnc BL=05h) BP = FFFFh on error Note: The support for this function on the Mach64 appears to be very limited. Subfunction 06h only supports a few modes, subfunction 02h is not implemented. Format of ATI VGA Wonder video mode table: Offset Size Description 00h BYTE number of columns 01h BYTE maximum row (number of rows - 1) 02h BYTE scan lines per row 03h WORD video buffer size in bytes 05h 4 BYTEs values for Sequencer registers 1-4 09h BYTE value for Miscellaneous Output register 0Ah 25 BYTEs values for CRTC registers 00h-18h 00h horizontal total size (chars) 01h horizontal displayed (chars) 02h horizontal sync position (chars) 03h horizontal sync width (chars) 04h vertical total size (char rows) 05h vertical total adjust (scan lines) 06h vertical displayed (char rows) 07h vertical sync position (char rows) 08h interlace mode 09h max scan line in row 0Ah cursor start scan line 0Bh cursor end scan line 0Ch screen memory start (high) 0Dh screen memory start (low) 0Eh cursor address (high) 0Fh cursor address (low) 10h light pen (high) 11h light pen (low) 23h 20 BYTEs default palette (values for Attribute Controller regs 00h-13h) 37h 9 BYTEs values for Graphics Controller registers 00h-08h ----------10A0----------------------------------- INT 10 - VIDEO - Mach64 AH = A0h