2708 lines
132 KiB
Plaintext
2708 lines
132 KiB
Plaintext
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
|