windows-nt/Source/XPSP1/NT/drivers/video/matrox/mga/mini/defbind.h
2020-09-26 16:20:57 +08:00

434 lines
9.8 KiB
C
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*****************************************************************************
*
* file name: defbind.h
*
******************************************************************************/
#ifdef __HC303__
#ifdef __ANSI_C__
#define _REGS REGS
/*** Configuration for compatibility with ASM ***/
#pragma Off(Args_in_regs_for_locals);
#else
/*** Configuration for compatibility with ASM ***/
pragma Off(Args_in_regs_for_locals);
#endif /* __ANSI_C__ */
#endif /* __HC303__ */
#ifdef __HC173__
#ifdef __ANSI_C__
#define _REGS REGS
/*** Optimizations turned off ***/
#pragma Off(Optimize_xjmp);
#pragma Off(Optimize_fp);
#pragma Off(Auto_reg_alloc);
#pragma Off(Postpone_arg_pops);
#else
/*** Optimizations turned off ***/
pragma Off(Optimize_xjmp);
pragma Off(Optimize_fp);
pragma Off(Auto_reg_alloc);
pragma Off(Postpone_arg_pops);
#endif /* __ANSI_C__ */
#endif /* __HC173__ */
#ifdef HIGHC162
#define _itoa itoa
#define _strnicmp strnicmp
#define _REGS REGS
#define _int86 int86
#define _inp inp
#define _outp outp
#define _stat stat
#ifdef SCRAP
struct WORDREGS {
unsigned int ax;
unsigned int bx;
unsigned int cx;
unsigned int dx;
unsigned int si;
unsigned int di;
unsigned int cflag;
};
struct BYTEREGS {
unsigned char al, ah, xax[sizeof(int)-2];
unsigned char bl, bh, xbx[sizeof(int)-2];
unsigned char cl, ch, xcx[sizeof(int)-2];
unsigned char dl, dh, xdx[sizeof(int)-2];
};
union REGS {
struct WORDREGS x;
struct BYTEREGS h;
struct BYTEREGS l;
};
struct SREGS {
unsigned short int es;
unsigned short int cs;
unsigned short int ss;
unsigned short int ds;
};
#endif
typedef unsigned int size_t;
extern char * itoa(int, char *, int);
extern int strnicmp(const char *__s1, const char *__s2, size_t __n);
/* extern int int86(int ,union REGS *, union REGS *); */
extern int inp(unsigned int);
extern int outp(unsigned int ,int );
extern stat(char *, struct stat *);
#endif
#ifdef __WATCOMC__
#define _itoa itoa
#define _strnicmp strnicmp
#define _REGS REGS
#define _int86 int386
#define _inp inp
#define _outp outp
#define _stat stat
#define _Far _far
#endif
#ifdef __MICROSOFTC600__
#define _itoa itoa
#define _strnicmp strnicmp
#define _REGS REGS
#define _int86 int86
#define _inp inp
#define _outp outp
#define _stat stat
#define _Far far
#endif
#ifdef WINDOWS
#define _itoa itoa
#define _strnicmp strnicmp
#define _int86 int86
#define _inp inp
#define _outp outp
#define _stat stat
#define _REGS REGS
#define HANDLE word
#define WORD word
typedef char _Far *LPSTR;
#endif
#ifdef OS2
#define _itoa itoa
#define _strnicmp strnicmp
#define HANDLE word
#define WORD word
#endif
#ifdef WINDOWS_NT
#define _REGS REGS
struct EXTDREGS {
unsigned long reax;
unsigned long rebx;
unsigned long recx;
unsigned long redx;
unsigned long resi;
unsigned long redi;
unsigned long recflag;
};
struct WORDREGS {
unsigned short ax;
unsigned short axh;
unsigned short bx;
unsigned short bxh;
unsigned short cx;
unsigned short cxh;
unsigned short dx;
unsigned short dxh;
unsigned short si;
unsigned short sih;
unsigned short di;
unsigned short dih;
unsigned short cflag;
unsigned short cflagh;
};
struct BYTEREGS {
unsigned char al, ah, xax[sizeof(long)-2];
unsigned char bl, bh, xbx[sizeof(long)-2];
unsigned char cl, ch, xcx[sizeof(long)-2];
unsigned char dl, dh, xdx[sizeof(long)-2];
};
union REGS {
struct EXTDREGS e;
struct WORDREGS x;
struct BYTEREGS h;
};
#endif /* #ifdef WINDOWS_NT */
/* RAMDAC type definition */
/*** BEN a revoir ***/
#define BT482 0
#define BT484 90
#define BT485 2
#define SIERRA 92
#define CHAMELEON 93
#define VIEWPOINT 1
#define TVP3026 9
#define PX2085 7
#define TITAN_ID 0xA2681700
#define NB_BOARD_MAX 7
#define NB_CRTC_PARAM 34
#define BINDING_REV 1
#define TITAN_CHIP 0
#define ATLAS_CHIP 1
#define ATHENA_CHIP 2
/* Buffer between the binding and CADDI (400 dword) */
#define BUF_BIND_SIZE 400
#define BLOCK_SIZE 262144 /* 1M of memory (value in dword) */
#define MOUSE_PORT 1
// also in caddi.h
#define CHAR_S 1
#define SHORT_S 2
#define LONG_S 4
#define FLOAT_S 4
#define UINTPTR_S (sizeof(UINT_PTR))
/*** MGA PRODUCT ID ***/
#define MGA_ULT_1M 1
#define MGA_ULT_2M 2
#define MGA_IMP_3M 3
#define MGA_IMP_3M_Z 4
#define MGA_PRO_4M5 5
#define MGA_PRO_4M5_Z 6
#define MGA_PCI_2M 7
#define MGA_PCI_4M 8
/*******************************************************/
/*** DEFINITIONS FOR MGA.INF ***/
#define VERSION_NUMBER 102
#define BIT8 0
#define BIT16 1
#define BITNARROW16 2
#define MONITOR_NA -1
#define MONITOR_NI 0
#define MONITOR_I 1
#define NUMBER_BOARD_MAX 7
#define NUMBER_OF_RES 8
#define NUMBER_OF_ZOOM 3
#define RES640 0
#define RES800 1
#define RES1024 2
#define RES1152 3
#define RES1280 4
#define RES1600 5
#define RESNTSC 6
#define RESPAL 7
/* DISPLAY SUPPORT */
# define DISP_SUPPORT_I 0x01 /* interlace */
# define DISP_SUPPORT_NA 0xa0 /* monitor limited */
# define DISP_SUPPORT_HWL 0xc0 /* hardware limited */
# define DISP_NOT_SUPPORT 0x80
typedef struct
{
word FbPitch;
byte DispType;
byte NumOffScr;
OffScrData *pOffScr; /* pointer to off screen area information */
}HwModeInterlace;
#ifdef __HIGHC__
/** USE packed (i.e. non aligned struct members)
*** because in mvtovid.c we access the struct
*** as an array. Highc1.73 do not aligned members
*** by default but Highc3.03 DO !!!!!!
**/
typedef _packed struct{
char name[26];
unsigned long valeur;
}vid;
#else
typedef struct{
char name[26];
unsigned long valeur;
}vid;
#endif
/*******************************************************/
/* VGA REGISTERS */
#define VGA_SEQ_CLOCKING_MODE 0x1
#define VGA_CRTC_INDEX 0x3d4
#define VGA_CRTC_DATA 0x3d5
#define VGA_HORIZONTAL_DISPLAY_ENABLE_END 0x01
#define VGA_START_ADDRESS_LOW 0x0d
#define VGA_START_ADDRESS_HIGH 0x0c
#define VGA_AUXILIARY_INDEX 0x3de
#define VGA_AUXILIARY_DATA 0x3df
#define VGA_VERTICAL_RETRACE_END 0x11
#define VGA_CPU_PAGE_SELECT 0x09
#define VGA_CRTC_EXTENDED_ADDRESS 0x0a
#define VGA_32K_VIDEO_RAM_PAGE_SELECT 0x0c
#define VGA_INTERLACE_SUPPORT_REGISTER 0x0d
typedef struct
{
char IdString[32]; /* "Matrox MGA Setup file" */
short Revision; /* .inf file revision */
short BoardPtr[NUMBER_BOARD_MAX]; /* offset of board wrt start of file */
/* -1 = board not there */
}header;
typedef struct
{
dword MapAddress; /* board address */
short BitOperation8_16; /* BIT8, BIT16, BITNARROW16 */
char DmaEnable; /* 0 = enable ; 1 = disable */
char DmaChannel; /* channel number. 0 = disabled */
char DmaType; /* 0 = ISA, 1 = B, 2 = C */
char DmaXferWidth; /* 0 = 16, 1 = 32 */
char MonitorName[64]; /* as in MONITORM.DAT file */
short MonitorSupport[NUMBER_OF_RES]; /* NA, NI, I */
short NumVidparm; /* up to 24 vidparm structures */
}general_info;
/* vidparm VideoParam[]; */
typedef struct
{
long PixClock;
short HDisp;
short HFPorch;
short HSync;
short HBPorch;
short HOvscan;
short VDisp;
short VFPorch;
short VSync;
short VBPorch;
short VOvscan;
short OvscanEnable;
short InterlaceEnable;
short HsyncPol; /* 0 : Negative 1 : Positive */
short VsyncPol; /* 0 : Negative 1 : Positive */
}Vidset;
typedef struct
{
short Resolution; /* RES640, RES800 ... RESPAL */
short PixWidth; /* 8, 16, 32 */
Vidset VidsetPar[NUMBER_OF_ZOOM]; /* for zoom X1, X2, X4 */
}Vidparm;
typedef struct {
dword length;
dword hw_diagnostic_result;
dword sw_diagnostic_result;
dword shell_id;
dword shell_id_extension;
dword shell_version;
dword shell_version_extension;
dword shell_start_address;
dword shell_end_address;
dword comm_req_type;
dword comm_req_base_addr_offset;
dword comm_req_length;
dword comm_req_wrptr_addr_offset;
dword comm_req_rdptr_addr_offset;
dword comm_inq_type;
dword comm_inq_base_addr_offset;
dword comm_inq_length;
dword comm_inq_wrptr_addr_offset;
dword comm_inq_rdptr_addr_offset;
dword size_rc;
dword size_light_type_0;
dword size_light_type_1;
dword size_light_type_2;
dword size_light_type_3;
dword size_light_type_4;
dword high_resolution_visible_width;
dword high_resolution_visible_height;
dword ntsc_underscan_visible_width;
dword ntsc_underscan_visible_height;
dword pal_underscan_visible_width;
dword pal_underscan_visible_height;
dword ntsc_overscan_visible_width;
dword ntsc_overscan_visible_height;
dword pal_overscan_visible_width;
dword pal_overscan_visible_height;
byte *end_string;
} SYSPARMS;