663 lines
21 KiB
C
663 lines
21 KiB
C
|
//*************************************************************************
|
||
|
//** **
|
||
|
//** AMACH1.H **
|
||
|
//** **
|
||
|
//** Copyright (c) 1993, 1995 ATI Technologies Inc. **
|
||
|
//*************************************************************************
|
||
|
//
|
||
|
// Supplemental definitions and data structures which are independent
|
||
|
// of the ATI accelerator family being used. Mach 8/Mach32 specific
|
||
|
// definitions and structures are in AMACH.H, while Mach 64 specific
|
||
|
// definitions and structures are in AMACHCX.H.
|
||
|
//
|
||
|
// Created the 68800.inc file which includes equates, macros, etc
|
||
|
// from the following include files:
|
||
|
// 8514vesa.inc, vga1regs.inc, m32regs.inc, 8514.inc
|
||
|
//
|
||
|
// supplement structures and values to the 68800 Family.
|
||
|
//
|
||
|
// This is a "C" only file and is NOT derived from any Assembler INC files.
|
||
|
|
||
|
|
||
|
/********************** PolyTron RCS Utilities
|
||
|
|
||
|
$Revision: 1.14 $
|
||
|
$Date: 23 Apr 1996 17:15:20 $
|
||
|
$Author: RWolff $
|
||
|
$Log: S:/source/wnt/ms11/miniport/archive/amach1.h_v $
|
||
|
*
|
||
|
* Rev 1.14 23 Apr 1996 17:15:20 RWolff
|
||
|
* Added new memory types (used by ?T) to memory type enumeration.
|
||
|
*
|
||
|
* Rev 1.13 22 Dec 1995 14:51:10 RWolff
|
||
|
* Added support for Mach 64 GT internal DAC.
|
||
|
*
|
||
|
* Rev 1.12 08 Sep 1995 16:36:00 RWolff
|
||
|
* Added support for AT&T 408 DAC (STG1703 equivalent).
|
||
|
*
|
||
|
* Rev 1.11 28 Jul 1995 14:39:24 RWolff
|
||
|
* Added support for the Mach 64 VT (CT equivalent with video overlay).
|
||
|
*
|
||
|
* Rev 1.10 30 Jan 1995 11:56:54 RWOLFF
|
||
|
* Added support for CT internal DAC.
|
||
|
*
|
||
|
* Rev 1.9 18 Jan 1995 15:38:02 RWOLFF
|
||
|
* Added Chrontel CH8398 to DAC type enumeration.
|
||
|
*
|
||
|
* Rev 1.8 23 Dec 1994 10:48:40 ASHANMUG
|
||
|
* ALPHA/Chrontel-DAC
|
||
|
*
|
||
|
* Rev 1.7 18 Nov 1994 11:49:16 RWOLFF
|
||
|
* Added new DAC type DAC_STG1703. This DAC is equivalent to the STG1702,
|
||
|
* but has its own clock generator. The STG1702/1703 in native mode are
|
||
|
* programmed differently in 24BPP than when they are strapped for
|
||
|
* STG1700 emulation.
|
||
|
*
|
||
|
* Rev 1.6 14 Sep 1994 15:25:54 RWOLFF
|
||
|
* Added "most desirable colour ordering" field to query structure,
|
||
|
* changed RGB<depth>_<order> definitions from enumeration to flags
|
||
|
* that can be used in this field.
|
||
|
*
|
||
|
* Rev 1.5 31 Aug 1994 16:09:02 RWOLFF
|
||
|
* Added support for TVP3026 DAC and 1152x864, removed dead code.
|
||
|
*
|
||
|
* Rev 1.4 19 Aug 1994 17:03:30 RWOLFF
|
||
|
* Added support for Graphics Wonder, SC15026 DAC, and pixel clock
|
||
|
* generator independence.
|
||
|
*
|
||
|
* Rev 1.3 20 May 1994 13:56:42 RWOLFF
|
||
|
* Ajith's change: added field for bus type reported by NT to
|
||
|
* the query structure.
|
||
|
*
|
||
|
* Rev 1.2 12 May 1994 11:15:04 RWOLFF
|
||
|
* Removed redundant definition, added refresh rate to mode table structure.
|
||
|
*
|
||
|
* Rev 1.1 04 May 1994 19:22:58 RWOLFF
|
||
|
* Fix for block write test corrupting the screen when running display applet
|
||
|
*
|
||
|
* Rev 1.0 31 Jan 1994 11:26:48 RWOLFF
|
||
|
* Initial revision.
|
||
|
*
|
||
|
* Rev 1.5 14 Jan 1994 15:17:00 RWOLFF
|
||
|
* Added flag for 1600x1200 mode.
|
||
|
*
|
||
|
* Rev 1.4 15 Dec 1993 15:24:34 RWOLFF
|
||
|
* Added support for SC15021 DAC.
|
||
|
*
|
||
|
* Rev 1.3 30 Nov 1993 18:08:58 RWOLFF
|
||
|
* Renamed definition for Mach 64.
|
||
|
*
|
||
|
* Rev 1.2 05 Nov 1993 13:21:10 RWOLFF
|
||
|
* Added new DAC types and memory sizes.
|
||
|
*
|
||
|
* Rev 1.1 08 Oct 1993 10:59:28 RWOLFF
|
||
|
* Added colour ordering field to mode table.
|
||
|
*
|
||
|
* Rev 1.0 03 Sep 1993 14:26:18 RWOLFF
|
||
|
* Initial revision.
|
||
|
|
||
|
|
||
|
End of PolyTron RCS section *****************/
|
||
|
|
||
|
|
||
|
#ifndef BYTE
|
||
|
typedef unsigned char BYTE;
|
||
|
#endif /* BYTE */
|
||
|
|
||
|
#ifndef WORD
|
||
|
typedef unsigned short WORD;
|
||
|
#endif /* WORD */
|
||
|
|
||
|
#ifndef DWORD
|
||
|
typedef unsigned long DWORD;
|
||
|
#endif /* DWORD */
|
||
|
|
||
|
#ifndef UCHAR
|
||
|
typedef unsigned char UCHAR; /* At least 8 bits, unsigned */
|
||
|
#endif /* UCHAR */
|
||
|
|
||
|
#ifndef BOOL
|
||
|
typedef int BOOL; /* Most efficient Boolean,
|
||
|
compare against zero only! */
|
||
|
#endif /* BOOL */
|
||
|
|
||
|
#ifndef VOID
|
||
|
#define VOID void
|
||
|
#endif /* VOID */
|
||
|
|
||
|
#ifndef PVOID
|
||
|
typedef void *PVOID; /* Generic untyped pointer */
|
||
|
#endif /* PVOID */
|
||
|
|
||
|
// the eeprom i/o port bits are in different locations depending upon
|
||
|
// what bus and what class of accelerator. This does NOT cover VGA class.
|
||
|
struct st_eeprom_data {
|
||
|
WORD iop_out; // I/O port for output
|
||
|
WORD iop_in; // I/O port for input
|
||
|
WORD clock; // clock bit to send data
|
||
|
WORD select; // select eeprom
|
||
|
WORD chipselect; // chip select
|
||
|
WORD addr_size; // Address size (fudge for VGA style)
|
||
|
WORD data_out;
|
||
|
WORD data_in;
|
||
|
VOID (*EEcmd)(); // function to write command to eeprom
|
||
|
|
||
|
WORD (*EEread)(short); // function to read eeprom
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
struct st_crt_mach8_table { // CRT Parameter Tables 11 Words long
|
||
|
WORD control; // NOT in table, is 7,8,9, or 10
|
||
|
WORD info; // VGA or 8514 parm format, clock etc.
|
||
|
BYTE vmode_sel_2;
|
||
|
BYTE vmode_sel_1;
|
||
|
BYTE vmode_sel_4;
|
||
|
BYTE vmode_sel_3;
|
||
|
BYTE h_disp;
|
||
|
BYTE h_total;
|
||
|
BYTE h_sync_wid;
|
||
|
BYTE h_sync_strt;
|
||
|
WORD v_total;
|
||
|
WORD v_disp;
|
||
|
WORD v_sync_strt;
|
||
|
BYTE disp_cntl;
|
||
|
BYTE v_sync_wid;
|
||
|
WORD clock_sel;
|
||
|
WORD resvd;
|
||
|
};
|
||
|
|
||
|
|
||
|
// EEprom layout for the 8514/Ultra adapters. 64 words by 16 bits = 1K size
|
||
|
struct st_ee_8514Ultra {
|
||
|
WORD page_3_2;
|
||
|
WORD page_2_0;
|
||
|
WORD monitor;
|
||
|
WORD vfifo;
|
||
|
WORD clock;
|
||
|
WORD shadow;
|
||
|
WORD display_cntl; // shadow sets 1,2
|
||
|
WORD v_sync_width; // shadow sets 1,2
|
||
|
WORD v_sync_strt2;
|
||
|
WORD v_sync_strt1;
|
||
|
WORD v_display2;
|
||
|
WORD v_display1;
|
||
|
WORD v_total2;
|
||
|
WORD v_total1;
|
||
|
WORD h_sync_width; // shadow sets 1,2
|
||
|
WORD h_sync_strt;
|
||
|
WORD h_display;
|
||
|
WORD h_total;
|
||
|
WORD crc;
|
||
|
// Updated 8514/Ultra adds 800 and 1280 resolutions
|
||
|
WORD ext_vfifo; // 800 and 1280 resolutions
|
||
|
WORD ext_clock;
|
||
|
WORD ext_shadow;
|
||
|
WORD ext_display;
|
||
|
WORD ext_v_sync_width;
|
||
|
WORD v_sync_strt_800;
|
||
|
WORD v_display_800;
|
||
|
WORD v_total_800;
|
||
|
WORD ext_h_sync_width; // shadow sets for 800 and 1280
|
||
|
WORD ext_h_sync_strt;
|
||
|
WORD ext_h_display;
|
||
|
WORD ext_h_total;
|
||
|
WORD custom_mode;
|
||
|
WORD monitor_name[17]; // words 32-48
|
||
|
WORD v_sync_strt_1280; // word 49
|
||
|
WORD v_display_1280; // word 50
|
||
|
WORD v_total_1280; // word 51
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// EEprom layout for the Graphics Ultra adapters. 64 words by 16 bits = 1K size
|
||
|
// This is the brute forcing of the VGA Wonder and the 8514 chips
|
||
|
// both residing on the same board.
|
||
|
struct st_ee_GraphicsUltra {
|
||
|
WORD eeprom_counter;
|
||
|
WORD mouse;
|
||
|
WORD powerup_mode;
|
||
|
WORD resvd1[2]; // word 3,4
|
||
|
WORD monitor;
|
||
|
WORD resvd2; // word 6
|
||
|
WORD hz640_72;
|
||
|
WORD hz800; // word 8
|
||
|
WORD hz1024;
|
||
|
WORD hz1280;
|
||
|
WORD resvd3[2]; // word 11,12
|
||
|
|
||
|
struct st_crt_mach8_table r640; // CRT parm Table 0 - 640x480 mode
|
||
|
struct st_crt_mach8_table r800; // CRT parm Table 1 - 640x480 mode
|
||
|
struct st_crt_mach8_table r1024; // CRT parm Table 2 - 640x480 mode
|
||
|
struct st_crt_mach8_table r1280; // Table 3 - 1280 OR 132 column text mode
|
||
|
};
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
// EEprom layout for the 68800 adapters. 128 words by 16 bits = 2K size
|
||
|
|
||
|
struct st_crt_mach32_table { // CRT Parameter Tables 15 Words long
|
||
|
WORD info; // VGA or 8514 parm format, clock etc.
|
||
|
BYTE vmode_sel_2;
|
||
|
BYTE vmode_sel_1;
|
||
|
BYTE vmode_sel_4;
|
||
|
BYTE vmode_sel_3;
|
||
|
BYTE h_disp;
|
||
|
BYTE h_total;
|
||
|
BYTE h_sync_wid;
|
||
|
BYTE h_sync_strt;
|
||
|
WORD v_total;
|
||
|
WORD v_disp;
|
||
|
WORD v_sync_strt;
|
||
|
BYTE disp_cntl;
|
||
|
BYTE v_sync_wid;
|
||
|
WORD clock_sel; // same as st_crt_mach8 to here.
|
||
|
WORD mode_size; // word 10
|
||
|
WORD horz_ovscan;
|
||
|
WORD vert_ovscan;
|
||
|
WORD ov_col_blue; // word 13
|
||
|
WORD ov_col_grn_red; // word 14
|
||
|
};
|
||
|
|
||
|
|
||
|
struct st_ee_68800 {
|
||
|
WORD eeprom_counter;
|
||
|
WORD mouse;
|
||
|
WORD powerup_mode;
|
||
|
WORD ee_rev; // word 3
|
||
|
WORD cm_indices; // word 4
|
||
|
WORD monitor;
|
||
|
WORD aperture; // word 6
|
||
|
WORD hz640_72;
|
||
|
WORD hz800; // word 8
|
||
|
WORD hz1024;
|
||
|
WORD hz1280;
|
||
|
WORD hz1150; // word 11
|
||
|
WORD resvd3; // word 12
|
||
|
|
||
|
// example crt tables, there are many for each resolution
|
||
|
// struct st_crt_mach32_table r640; // CRT parm Table 0 - 640x480 mode
|
||
|
// struct st_crt_mach32_table r800; // CRT parm Table 1 - 640x480 mode
|
||
|
// struct st_crt_mach32_table r1024; // CRT parm Table 2 - 640x480 mode
|
||
|
// struct st_crt_mach32_table r1280; // Table 3 - 1280 OR 132 column text mode
|
||
|
};
|
||
|
|
||
|
|
||
|
|
||
|
//-----------------------------------------------------------------------
|
||
|
//--------------- as defined in \68800\test\services.asm
|
||
|
|
||
|
#define QUERY_GET_SIZE 0 // return query structure size (varying modes)
|
||
|
#define QUERY_LONG 1 // return query structure filled in
|
||
|
#define QUERY_SHORT 2 // return short query
|
||
|
|
||
|
struct query_structure {
|
||
|
|
||
|
short q_sizeof_struct; // size of structure in bytes (including mode tables)
|
||
|
UCHAR q_structure_rev; // structure revision number
|
||
|
UCHAR q_number_modes; // total number of installed modes
|
||
|
short q_mode_offset; // offset to 1st mode table
|
||
|
UCHAR q_sizeof_mode; // size of mode table in bytes
|
||
|
UCHAR q_asic_rev; // gate array revision number
|
||
|
UCHAR q_status_flags; // status flags
|
||
|
UCHAR q_VGA_type; // VGA type (enabled or disabled for now)
|
||
|
UCHAR q_VGA_boundary; // VGA boundary
|
||
|
UCHAR q_memory_size; // total memory size (VGA + accelerator)
|
||
|
UCHAR q_DAC_type; // DAC type
|
||
|
UCHAR q_memory_type; // memory type
|
||
|
UCHAR q_bus_type; // bus type
|
||
|
UCHAR q_monitor_alias; // monitor alias and monitor alias enable
|
||
|
short q_shadow_1; // shadow set 1 state
|
||
|
short q_shadow_2; // shadow set 2 state
|
||
|
short q_aperture_addr; // aperture address
|
||
|
UCHAR q_aperture_cfg; // aperture size
|
||
|
UCHAR q_mouse_cfg; // mouse configuration
|
||
|
UCHAR q_reserved;
|
||
|
short q_desire_x; // selected screen resolution X value
|
||
|
short q_desire_y;
|
||
|
short q_pix_depth; // selected bits per pixel
|
||
|
BYTE far *q_bios; // Base address of the BIOS
|
||
|
BOOL q_eeprom; // TRUE if eeprom present
|
||
|
BOOL q_ext_bios_fcn; // TRUE if ATI Extended BIOS fcns present
|
||
|
BOOL q_ignore1280; // TRUE if ignore 1280 table in Mach8 cards
|
||
|
BOOL q_m32_aper_calc; // TRUE if mach32 aperture addr needs Extra Bits.
|
||
|
BOOL q_GraphicsWonder; /* TRUE if this is a Graphics Wonder (restricted Mach 32) */
|
||
|
short q_screen_pitch; // Pixels per display line
|
||
|
UCHAR q_BlockWrite; /* Whether or not block write mode is available */
|
||
|
ULONG q_system_bus_type; // bus type reported by NT
|
||
|
USHORT q_HiColourSupport; /* Colour orders supported for non-paletted modes */
|
||
|
};
|
||
|
|
||
|
|
||
|
// Matches BIOS mode table query function up to and including m_overscan_gr
|
||
|
struct st_mode_table {
|
||
|
short m_x_size; // horizontal screen resolution
|
||
|
short m_y_size; // vertical screen resolution
|
||
|
UCHAR m_pixel_depth; // maximum pixel depth
|
||
|
UCHAR m_status_flags; // status flags
|
||
|
// bit 0: if set, non-linear Y addressing
|
||
|
// bit 1: if set, MUX mode
|
||
|
// bit 2: if set, PCLK/2
|
||
|
short m_reserved;
|
||
|
UCHAR m_vfifo_16; // 16 bpp vfifo depth
|
||
|
UCHAR m_vfifo_24; // 24 bpp vfifo depth
|
||
|
short m_clock_select; // clock select
|
||
|
UCHAR m_h_total; // horizontal total
|
||
|
UCHAR m_h_disp; // horizontal displayed
|
||
|
UCHAR m_h_sync_strt; // horizontal sync start
|
||
|
UCHAR m_disp_cntl; // display control
|
||
|
UCHAR m_h_sync_wid; // horizontal sync width
|
||
|
UCHAR m_v_sync_wid; // vertical sync width
|
||
|
short m_v_total; // vertical total
|
||
|
short m_v_disp; // vertical displayed
|
||
|
short m_v_sync_strt; // vertical sync start
|
||
|
short m_h_overscan; // horizontal overscan configuration
|
||
|
short m_v_overscan; // vertical overscan configuration
|
||
|
short m_overscan_8b; // overscan color for 8 bit and blue
|
||
|
short m_overscan_gr; // overscan color green and red
|
||
|
short enabled; // what frequency is enabled (eeprom 7,8,9,10 or 11)
|
||
|
short control; // clock and control values (CRT table 0)
|
||
|
ULONG ClockFreq; /* Clock frequency (in Hertz) */
|
||
|
short m_screen_pitch; // pixels per display line
|
||
|
WORD ColourDepthInfo; /* Information about colour depth being used */
|
||
|
short Refresh; /* Refresh rate, in hertz */
|
||
|
};
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Masks and flags for the m_clock_select field.
|
||
|
* All the flags will be stripped out when the field
|
||
|
* is ANDed with CLOCK_SEL_STRIP.
|
||
|
*/
|
||
|
#define CLOCK_SEL_STRIP 0xFF83 /* AND to remove clock selector/divisor */
|
||
|
#define CLOCK_SEL_MUX 0x0004 /* Use mux mode (2x 8bit pixels in 16 bit path) */
|
||
|
#define CLOCK_SEL_DIVIDED 0x0008 /* Clock frequency for mux mode already divided by 2 */
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Flags to put in query_structure.q_HiColourSupport to show that
|
||
|
* the corresponding colour order is supported.
|
||
|
*/
|
||
|
#define RGB16_555 0x0001
|
||
|
#define RGB16_565 0x0002
|
||
|
#define RGB16_655 0x0004
|
||
|
#define RGB16_664 0x0008
|
||
|
#define RGB24_RGB 0x0010
|
||
|
#define RGB24_BGR 0x0020
|
||
|
#define RGB32_RGBx 0x0040
|
||
|
#define RGB32_xRGB 0x0080
|
||
|
#define RGB32_BGRx 0x0100
|
||
|
#define RGB32_xBGR 0x0200
|
||
|
|
||
|
|
||
|
//----- Video Memory details
|
||
|
enum {
|
||
|
VMEM_DRAM_256Kx4 = 0,
|
||
|
VMEM_VRAM_256Kx4_SER512,
|
||
|
VMEM_VRAM_256Kx4_SER256, /* 68800-3 only */
|
||
|
VMEM_DRAM_256Kx16,
|
||
|
VMEM_DRAM_256Kx4_GRAP, /* This and following types on 68800-6 only */
|
||
|
VMEM_VRAM_256Kx4_SPLIT512,
|
||
|
VMEM_VRAM_256Kx16_SPLIT256,
|
||
|
VMEM_GENERIC_DRAM, /* This and following types are for Mach 64 ?T only */
|
||
|
VMEM_EDO_DRAM,
|
||
|
VMEM_BRRAM,
|
||
|
VMEM_SDRAM
|
||
|
};
|
||
|
|
||
|
#define VMEM_VRAM_256Kx16_SER256 VMEM_VRAM_256Kx4_SER256 /* 68800-6 only */
|
||
|
|
||
|
|
||
|
//----- BUS types matches the 68800 CONFIG_STATUS_1.BUS_TYPE
|
||
|
enum { BUS_ISA_16,
|
||
|
BUS_EISA,
|
||
|
BUS_MC_16,
|
||
|
BUS_MC_32,
|
||
|
BUS_LB_386SX,
|
||
|
BUS_LB_386DX,
|
||
|
BUS_LB_486,
|
||
|
BUS_PCI,
|
||
|
BUS_ISA_8
|
||
|
};
|
||
|
|
||
|
//----- RAM DAC details, matches CONFIG_STATUS_1.DACTYPE field
|
||
|
enum { DAC_ATI_68830,
|
||
|
DAC_SIERRA,
|
||
|
DAC_TI34075,
|
||
|
DAC_BT47x,
|
||
|
DAC_BT48x,
|
||
|
DAC_ATI_68860,
|
||
|
DAC_STG1700,
|
||
|
DAC_SC15021,
|
||
|
/*
|
||
|
* DAC types below are for cases where incompatible DAC types
|
||
|
* report the same code in CONFIG_STATUS_1. Since the DAC type
|
||
|
* field is 3 bits and can't grow (bits immediately above and
|
||
|
* below are already assigned), DAC types 8 and above will
|
||
|
* not conflict with reported DAC types but are still legal
|
||
|
* in the query structure's DAC type field (8 bit unsigned integer).
|
||
|
*/
|
||
|
DAC_ATT491,
|
||
|
DAC_ATT498,
|
||
|
DAC_SC15026,
|
||
|
|
||
|
/*
|
||
|
* DAC types below are not used on 8514/A-compatible accelerators.
|
||
|
* Subsequent additions must be made AFTER DAC_SC15026.
|
||
|
*/
|
||
|
DAC_TVP3026,
|
||
|
DAC_IBM514,
|
||
|
|
||
|
/*
|
||
|
* This DAC is more advanced than the STG1700.
|
||
|
*/
|
||
|
DAC_STG1702,
|
||
|
|
||
|
/*
|
||
|
* DAC is equivalent to STG1702, but it has its own clock
|
||
|
* generator which is programmed differently from the one
|
||
|
* normally used on the Mach 64.
|
||
|
*/
|
||
|
DAC_STG1703,
|
||
|
|
||
|
/*
|
||
|
* DAC with equivalent capabilities to STG1703, but not a
|
||
|
* drop-in replacement.
|
||
|
*/
|
||
|
DAC_CH8398,
|
||
|
|
||
|
/*
|
||
|
* Yet another DAC which is equivalent to STG1703 but which
|
||
|
* is not a drop-in replacement.
|
||
|
*/
|
||
|
DAC_ATT408,
|
||
|
|
||
|
/*
|
||
|
* Internal DAC on Mach 64 CT ASIC.
|
||
|
*/
|
||
|
DAC_INTERNAL_CT,
|
||
|
|
||
|
/*
|
||
|
* Internal DAC on Mach 64 GT ASIC. This is a CT equivalent
|
||
|
* with built-in multimedia and games functionality.
|
||
|
*/
|
||
|
DAC_INTERNAL_GT,
|
||
|
|
||
|
/*
|
||
|
* Internal DAC on Mach 64 VT ASIC. This is a CT equivalent
|
||
|
* with built-in video overlay circuitry.
|
||
|
*/
|
||
|
DAC_INTERNAL_VT,
|
||
|
|
||
|
/*
|
||
|
* Size definition for arrays indexed by DAC type (assumes enumerated
|
||
|
* types are zero-based). This must be the LAST entry in the
|
||
|
* DAC type enumeration.
|
||
|
*/
|
||
|
HOW_MANY_DACs
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Size definition for 8514/A-compatible accelerator arrays indexed by
|
||
|
* DAC type.
|
||
|
*/
|
||
|
#define MAX_OLD_DAC DAC_TVP3026
|
||
|
|
||
|
/*
|
||
|
* Possible knowledge states for block write capability.
|
||
|
*/
|
||
|
enum {BLOCK_WRITE_UNKNOWN,
|
||
|
BLOCK_WRITE_NO,
|
||
|
BLOCK_WRITE_YES
|
||
|
};
|
||
|
|
||
|
|
||
|
//Monitor Descriptions are in IBM style
|
||
|
#define MONITOR_ID_8514 0x000A
|
||
|
#define MONITOR_ID_8515 0x000B
|
||
|
#define MONITOR_ID_VGA8503 0x000D
|
||
|
#define MONITOR_ID_VGA8513 0x000E
|
||
|
#define MONITOR_ID_VGA8512 0x000E
|
||
|
#define MONITOR_ID_8604 0x0009
|
||
|
#define MONITOR_ID_8507 0x0009
|
||
|
#define MONITOR_ID_NOMON 0x000F
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Give identifiers for the different ATI 8514 Products,
|
||
|
* as used in the ModelNumber field of the HW_DEVICE_EXTENSION
|
||
|
* structure and returned by Mach8_detect().
|
||
|
*/
|
||
|
enum { _8514_ULTRA = 1,
|
||
|
GRAPHICS_ULTRA,
|
||
|
MACH32_ULTRA,
|
||
|
MACH64_ULTRA,
|
||
|
IBM_VGA,
|
||
|
WONDER,
|
||
|
IBM_8514,
|
||
|
IBM_XGA,
|
||
|
NO_ATI_ACCEL // No ATI accelerator available
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Number of ATI 8514 products available.
|
||
|
*/
|
||
|
#define HOW_MANY_8514_PRODS (NO_ATI_ACCEL - _8514_ULTRA) + 1
|
||
|
|
||
|
/*
|
||
|
* Amount of Video RAM installed. The q_memory_size
|
||
|
* field of the query_structure uses these definitions
|
||
|
* rather than holding a count of the number of bytes.
|
||
|
*/
|
||
|
enum { VRAM_256k=1,
|
||
|
VRAM_512k,
|
||
|
VRAM_768k,
|
||
|
VRAM_1mb,
|
||
|
VRAM_1_25mb,
|
||
|
VRAM_1_50mb,
|
||
|
VRAM_2mb=8,
|
||
|
VRAM_4mb=16,
|
||
|
VRAM_6mb=24,
|
||
|
VRAM_8mb=32,
|
||
|
VRAM_12mb=48,
|
||
|
VRAM_16mb=64
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Define bits for resolutions. The q_status_flags field
|
||
|
* of the query_structure uses these.
|
||
|
*/
|
||
|
#define VRES_640x480 0x0001
|
||
|
#define VRES_800x600 0x0002
|
||
|
#define VRES_1024x768 0x0004
|
||
|
#define VRES_1280x1024 0x0008
|
||
|
#define VRES_ALT_1 0x0010 /* Usually 1152x900, 1120x750 */
|
||
|
#define VRES_1152x864 VRES_ALT_1
|
||
|
#define VRES_RESERVED_6 0x0020
|
||
|
#define VRES_RESERVED_7 0x0040
|
||
|
#define VRES_RESERVED_8 0x0080
|
||
|
#define VRES_1600x1200 VRES_ALT_1
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Predefined Video Resolution Modes
|
||
|
*/
|
||
|
enum { VRES_UNDEFINED,
|
||
|
VRES_640x480x4,
|
||
|
VRES_640x480x8,
|
||
|
VRES_640x480x16,
|
||
|
VRES_640x480x24,
|
||
|
VRES_640x480x32,
|
||
|
|
||
|
VRES_800x600x4,
|
||
|
VRES_800x600x8,
|
||
|
VRES_800x600x16,
|
||
|
VRES_800x600x24,
|
||
|
VRES_800x600x32,
|
||
|
|
||
|
VRES_1024x768x4,
|
||
|
VRES_1024x768x8,
|
||
|
VRES_1024x768x16,
|
||
|
VRES_1024x768x24,
|
||
|
VRES_1024x768x32,
|
||
|
|
||
|
VRES_1280x1024x4,
|
||
|
VRES_1280x1024x8,
|
||
|
VRES_1280x1024x16,
|
||
|
VRES_1280x1024x24,
|
||
|
VRES_1280x1024x32,
|
||
|
|
||
|
VRES_ALTERNATEx4,
|
||
|
VRES_ALTERNATEx8,
|
||
|
VRES_ALTERNATEx16,
|
||
|
VRES_ALTERNATEx24,
|
||
|
VRES_ALTERNATEx32
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
* Number of predefined video resolution modes.
|
||
|
*/
|
||
|
#define HOW_MANY_RES_MODES (VRES_ALTERNATEx32 - VRES_UNDEFINED) + 1
|
||
|
|
||
|
/*
|
||
|
* Numbers used in memory calculations.
|
||
|
*/
|
||
|
#define ONE_MEG 1048576L
|
||
|
#define HALF_MEG 524288L
|
||
|
#define QUARTER_MEG 262144L
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Definitions with an underscore in their name will read or write
|
||
|
* a portion of a larger register other than the least significant
|
||
|
* byte or word. Due to limitations in the Lio<function> routines,
|
||
|
* it is not possible to do this by calling (for example) LioInp(port+1).
|
||
|
*
|
||
|
* _HBLW Access the high byte of the low word (16 and 32 bit registers)
|
||
|
* _LBHW Access the low byte of the high word (32 bit registers only)
|
||
|
* _HBHW Access the high byte of the high word (32 bit registers only)
|
||
|
* _HW Access the high word (32 bit registers only)
|
||
|
*/
|
||
|
#define INP(port) LioInp(port, 0)
|
||
|
#define INP_HBLW(port) LioInp(port, 1)
|
||
|
#define INP_LBHW(port) LioInp(port, 2)
|
||
|
#define INP_HBHW(port) LioInp(port, 3)
|
||
|
#define INPW(port) LioInpw(port, 0)
|
||
|
#define INPW_HW(port) LioInpw(port, 2)
|
||
|
#define INPD(port) LioInpd(port)
|
||
|
|
||
|
#define OUTP(port, val) LioOutp(port, val, 0)
|
||
|
#define OUTP_HBLW(port, val) LioOutp(port, val, 1)
|
||
|
#define OUTP_LBHW(port, val) LioOutp(port, val, 2)
|
||
|
#define OUTP_HBHW(port, val) LioOutp(port, val, 3)
|
||
|
#define OUTPW(port, val) LioOutpw(port, val, 0)
|
||
|
#define OUTPW_HW(port, val) LioOutpw(port, val, 2)
|
||
|
#define OUTPD(port, val) LioOutpd(port, val)
|
||
|
|
||
|
|
||
|
//********************** end of AMACH1.H ****************************
|
||
|
|