434 lines
9.8 KiB
C
434 lines
9.8 KiB
C
|
/*****************************************************************************
|
|||
|
*
|
|||
|
* 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;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|