home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Hack-Phreak Scene Programs
/
cleanhpvac.zip
/
cleanhpvac
/
FAQSYS18.ZIP
/
FAQS.DAT
/
ATI.TXT
< prev
next >
Wrap
Text File
|
1996-01-04
|
137KB
|
2,708 lines
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
<Other xxE8h registers>
xFFEFC FEE8h
xFFF00 02EEh
xFFF04 06EEh
<Other xxEEh registers>
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