|
|
/*****************************************************************************
* * file name: bind.h * ******************************************************************************/
#ifndef BIND_H /* useful for header inclusion check, used by DDK */
#define BIND_H
#if 0 /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
/* BDL should be enabled by __HC303__ only & not by High C 1.73 ???
* __HIGHC__ is not automatically enabled by HIGH C3.03 * Verify if this is correct. */
#ifdef __HIGHC__
pragma Off(Args_in_regs_for_locals);
#endif
#else
#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__ */
#endif /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
#ifdef WINDOWS_NT
#include "video.h"
#define _itoa itoa
#define _strnicmp strnicmp
#define _inp(a) VideoPortReadPortUchar((PUCHAR)(a))
#define _outp(a, d) VideoPortWritePortUchar((PUCHAR)(a), (d))
#define _stat stat
#define inpw(a) VideoPortReadPortUshort((PUSHORT)(a))
#define outpw(a, d) VideoPortWritePortUshort((PUSHORT)(a), (d))
#define indw(a) VideoPortReadPortUlong((PULONG)(a))
#define outdw(a, d) VideoPortWritePortUlong((PULONG)(a), (d))
#define HANDLE word
#define WORD word
#endif /* #ifdef WINDOWS_NT */
#ifndef XGXENV_H /*
* Avoids multiple redefinitions, bind.h should always * be placed above xgxenv.h */
/* data type */
typedef int bool; /* boolean */ typedef unsigned char byte; /* 8-bit datum */ typedef unsigned short word; /* 16-bit datum */ typedef short sword; /* 16-bit datum */ typedef unsigned long dword; /* 32-bit datum */ typedef long sdword; /* 32-bit datum */
#endif /* XGXENV_H */
/*** RGB color ***/ typedef dword mtxRGB; /* red 0-7, green 8-15, blue 16-23 */
/*** RGB color mask ***/ typedef dword mtxRGBMASK; /* red 0-7, green 8-15, blue 16-23 */
#define PUBLIC
#define PRIVATE static
#define FALSE 0
#define TRUE 1
#define DONT_CARE 0
#define ZOOMx1 0x00010001 /* no zoom */
#define SIZDW_BUFFER 8100 /* size of posting buffer */
#define mtxVGA 0
#define mtxADV_MODE 1
#define mtxRES_NTSC 2
#define mtxRES_PAL 3
#define mtxFAIL 0
#define mtxOK 1
#define MAXCLIPRECT 10
/*** MGA PRODUCT TYPE ***/
#define MGA_ULTIMA 1
#define MGA_ULTIMA_VAFC 2
#define MGA_ULTIMA_PLUS 3
#define MGA_ULTIMA_PLUS_200 4
#define MGA_IMPRESSION_PLUS 5
#define MGA_IMPRESSION_PLUS_200 6
#define MGA_IMPRESSION 7
#define MGA_IMPRESSION_PRO 8
#define MGA_IMPRESSION_LTE 9
typedef dword mtxCL; /* CL I.D. */ typedef dword mtxRC; /* RC I.D. */ typedef dword mtxLSDB; /* LSDB I.D. */
/*
* Cursor definition */ typedef struct { word Width; word Height; word Pitch; word Format; dword *Data; } PixMap;
/*
* CursorInfo */ typedef struct { word MaxWidth; word MaxHeight; word MaxDepth; word MaxColors; word CurWidth; word CurHeight; sword cHotSX; sword cHotSY; sword HotSX; sword HotSY; } CursorInfo;
/*
* Offscreen memory */ typedef struct { word Type; /* bit 0 : 0 = normal off screen memory */ /* 1 = z-buffer memory */ /* bit 1 : 0 = vram */ /* 1 = dram */ /* bit 2 : 0 = supports block mode */ /* 1 = no block mode */ /* bit 3 - 15 : reserved */ word XStart; /* x origin of off screen memory area in pixels */ word YStart; /* y origin of off screen memory area in pixels */ word Width; /* off screen width in pixels */ word Height; /* off screen height in pixels */ dword SafePlanes; /* off screen safe memory planes */ word ZXStart; /* precise z-buffer start offset in pixels on YStart. */ /* Valid only for z-buffer memory type offscreens ... */ /* useful for direct z-buffer access manipulations. */ } OffScrData;
/*
* HwModeData */ typedef struct { word DispWidth; /* maximum display width in pixels */ word DispHeight; /* maximum display height in pixels */ byte DispType; /* bit 0 : 0 = non interlaced, 1 = interlaced */ /* bit 1 : 0 = normal operation, 1 = TV_MODE */ /* bit 2 : 0 = normal operation, 1 = LUT mode */ /* bit 3 : 0 = normal operation, 1 = 565 mode */ /* bit 4 : 0 = normal operation, 1 = DB mode */ /* bit 5 : 0 = normal operation, 1 = monitor limited */ /* bit 6 : 0 = normal operation, 1 = hw limited */ /* bit 7 : 0 = normal operation, 1 = not displayable */ byte ZBuffer; /* z-buffer available in this mode */ word PixWidth; /* pixel width */ dword NumColors; /* number of simultaneously displayable colors */ word FbPitch; /* frame buffer pitch in pixels */ byte NumOffScr; /* number of off screen areas */ OffScrData *pOffScr; /* pointer to off screen area information */ } HwModeData;
/*
* HwData */ typedef struct { dword MapAddress; /* Memory map address */ dword ProductType; /* 0 - 15 : Product platform */ /* 11xx: ISA bus */ /* 101x: VL bus */ /* 100x: MCA bus */ /* 011x: PCI bus */ /* 16 - 31: Product ID */ /* 0001: MGA_ULTIMA */ /* 0010: MGA_ULTIMA_VAFC */ /* 0011: MGA_ULTIMA_PLUS */ /* 0100: MGA_ULTIMA_PLUS_200 */ /* 0101: MGA_IMPRESSION_PLUS */ /* 0110: MGA_IMPRESSION_PLUS_200 */ /* 0111: MGA_IMPRESSION */ /* 1000: MGA_IMPRESSION_PRO */ /* 1001: MGA_IMPRESSION_LTE */ dword ProductRev; /* 4 bit revision codes as follows */ /* 0 - 3 : pcb revision */ /* 4 - 7 : Titan revision */ /* (0=TITAN, 1=ATLAS, 2=ATHENA) */ /* 8 - 11 : Dubic revision */ /* 12 : VideoPro board 0=absent 1=present */ /* 13 - 31 : all 1's indicating no other device
present */ dword ShellRev; /* Shell revision */ dword BindingRev; /* Binding revision */
byte VGAEnable; /* 0 = vga disabled, 1 = vga enabled */ byte Sync; /* relects the hardware straps */ byte Device8_16; /* relects the hardware straps */
byte PortCfg; /* 0-Disabled, 1-Mouse Port, 2-Laser Port */ byte PortIRQ; /* IRQ level number, -1 = interrupts disabled */ word MouseMap; /* Mouse I/O map base if PortCfg = Mouse Port */ /* else don't care */ byte MouseIRate; /* Mouse interrupt rate in Hz */ byte DacType; /* 0 = BT482 */ /* 1 = VIEWPOINT */ /* 2 = BT485 */ /* 7 = PX2085 */ /* 9 = TVP3026 */ /* 92 = SIERRA */ /* 93 = CHAMELEON */ HwModeData *pCurrentHwMode; /* Pointer to HwMode */ HwModeData *pCurrentDisplayMode; /* Pointer to display mode */ CursorInfo cursorInfo; dword VramAvail; /* VRAM memory available on board in bytes */ dword DramAvail; /* DRAM memory available on board in bytes */ word CurrentOverScanX; /* Left overscan in pixels */ word CurrentOverScanY; /* Top overscan in pixels */ dword YDstOrg; /* Offset physique de la memoire */ dword CurrentZoomFactor; dword CurrentXStart; dword CurrentYStart;
#ifdef WINDOWS_NT
HwModeData *pHwMode; /* Pointer to HwMode */ UCHAR *BaseAddress; /* Board base address */ word ConfigSpace; /* Board config space */ UCHAR *ConfigSpaceAddress; #endif
} HwData;
/*** Prototypes ***/
#ifndef _WATCOM_DLL32
HwData *mtxCheckHwAll(void); bool mtxSelectHw(HwData *pHardware); HwModeData *mtxGetHwModes(void); word mtxGetRefreshRates(HwModeData *pHwModeSelect); word ConvBitToFreq (word BitFreq); bool mtxSelectHwMode(HwModeData *pHwMode); bool mtxSetDisplayMode(HwModeData *pHwMode, dword Zoom); void mtxSetDisplayStart(dword x, dword y); dword mtxGetMgaSel(void); void mtxGetInfo(HwModeData **_pCurHwMode, HwModeData **_pCurDispMode, byte **_InitBuffer, byte **_VideoBuffer); bool mtxSetLUT(word index, mtxRGB color); void mtxClose(void); #endif
/*----------------------------------------------------*/ /* XG3 products : support declarations for sxciio.h */ /*----------------------------------------------------*/
#define mtxPBWAIT 1 /* Wait flag */
typedef struct { dword Left; dword Top; dword Right; dword Bottom; } mtxRect;
#define MAXCLIPRECT 10
typedef struct { dword Count; /* number of clipping rectangles */ dword Reserved; /* reserved field, set to 0x0 */ dword Reserved1; /* origin of clip list, set to 0x0 */ dword Reserved2; /* origin of clip list, set to 0x0 */ mtxRect Rects[MAXCLIPRECT]; /* max. clip rects */ mtxRect Bounds; /* bounding rectangle */ } mtxClipList;
/*** Prototypes ***/
#ifndef _WATCOM_DLL32
dword mtxAllocCL (word Nb_Rect); dword mtxAllocLSDB (word Nb_Light); dword mtxAllocRC (dword *Reserved); dword *mtxAllocBuffer (dword Nb_dword); bool mtxFreeBuffer (dword *ptr); bool mtxFreeCL (dword ptr); bool mtxFreeLSDB (dword ptr); bool mtxFreeRC (dword ptr); dword mtxGetBlockSize (void); bool mtxPostBuffer (dword *ptr, dword length, dword flags); bool mtxSyncBuffer (dword *ptr); bool mtxSetCL(dword RCid, dword CLid, mtxClipList *CL); void mtxSetRC (dword RCid); bool mtxCursorSetShape(PixMap *); void mtxCursorSetColors(mtxRGB, mtxRGB, mtxRGB, mtxRGB); void mtxCursorEnable(word); void mtxCursorSetHotSpot(word, word); void mtxCursorMove(word, word); CursorInfo *mtxCursorGetInfo(); #endif
/*----------------------------------------------------*/ /* XG3 products : support declarations for graphics.h */ /*----------------------------------------------------*/
#define mtxRES_1280 0 /* 1280 x 1024 Resolution */
#define mtxRES_1024 1 /* 1024 x 768 Resolution */
#define mtxRES_VIDEO 2 /* 640 x 480 Interlaced Resolution */
#define mtxRES_MAX -1 /* Find largest resolution */
#define NTSC_UNDER 1 /* screen type */
#define PAL_UNDER 2
#define NTSC_OVER 3
#define PAL_OVER 4
#define mtxPASSTHRU 0 /* Passthru mode ; mtxPASSTHRU = mtxVGA */
#define mtxADV_MODE 1 /* Advanced mode */
/*** Raster operation ***/ typedef dword mtxROP; #define mtxCLEAR ((mtxROP)0x00000000) /* 0 */
#define mtxNOR ((mtxROP)0x11111111) /* NOT src AND NOT dst */
#define mtxANDINVERTED ((mtxROP)0x22222222) /* NOT src AND dst */
#define mtxREPLACEINVERTED ((mtxROP)0x33333333) /* NOT src */
#define mtxANDREVERSE ((mtxROP)0x44444444) /* src AND NOT dst */
#define mtxINVERT ((mtxROP)0x55555555) /* NOT dst */
#define mtxXOR ((mtxROP)0x66666666) /* src XOR dst */
#define mtxNAND ((mtxROP)0x77777777) /* NOT src OR NOT dst */
#define mtxAND ((mtxROP)0x88888888) /* src AND dst */
#define mtxEQUIV ((mtxROP)0x99999999) /* NOT src XOR dst */
#define mtxNOOP ((mtxROP)0xAAAAAAAA) /* dst */
#define mtxORINVERTED ((mtxROP)0xBBBBBBBB) /* NOT src OR dst */
#define mtxREPLACE ((mtxROP)0xCCCCCCCC) /* src */
#define mtxORREVERSE ((mtxROP)0xDDDDDDDD) /* src OR NOT dst */
#define mtxOR ((mtxROP)0xEEEEEEEE) /* src OR dst */
#define mtxSET ((mtxROP)0xFFFFFFFF) /* 1 */
typedef struct { /* Configuration structure */ word Width; /* screen width */ word Height; /* screen height */ dword Colors; /* # of colors */ word PhysPixelSize; /* number of bits needed per pixel */ byte DacSize; /* dac size */ byte Luts; /* # of lut on board */ word FbWidth; /* frame buffer width */ word FbHeight; /* frame buffer height */ word FbPitch; /* size of scan line */ word OffScreenX; /* offscreen x location */ word OffScreenY; /* offscreen y location */ word OffScreenWidth; /* offscreen width */ word OffScreenHeight; /* offscreen height */ dword OffScreenPlanes; /* safe planes to write to mask */ byte Name[32]; /* Board name */ byte BindingId[32]; /* binding id */ byte ShellId[32]; /* shell id */ } mtxCONFIG;
/*** prototypes ***/
#ifndef _WATCOM_DLL32
#ifndef __DDK_SRC__ /* - - - - - - - - - - - - - - - - - - - - - - - - - - */
word mtxGetVideoMode (void); void mtxSetFgColor (mtxRGB color); mtxRGB mtxGetFgColor (void); void mtxSetOp (dword Op); dword mtxGetOp (void); void mtxScLine (sword x1, sword y1, sword x2, sword y2); void mtxScPixel (sword s, sword y); bool mtxScClip (word left, word top, word right, word bottom); void mtxScFilledRect (sword left, sword top, sword right, sword bottom); bool mtxCheckHw (void); bool mtxInit(bool dualscreen,short resolution_id,bool clear_flag, mtxCONFIG *config); bool mtxReset (void); void mtxSetVideoMode (word mode); extern void mtxMemScBitBlt(word dstx, word dsty, word width, word height, word plane, dword *src); extern void mtxScMemBitBlt(word srcx, word srcy, word width, word height, word plane, dword *dst); extern void mtxScScBitBlt (sword srcx, sword srcy, sword dstx, sword dsty, word width, word height, sword plane);
#else /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
/* this will be cleaned up, quick and dirty solution for now */
void mtxSetVideoMode (word mode); word mtxGetVideoMode (void);
#ifndef GRPROTO_H
void mtxSetFgColor (mtxRGB color); mtxRGB mtxGetFgColor (void); void mtxSetOp (dword Op); dword mtxGetOp (void); void mtxScLine (sword x1, sword y1, sword x2, sword y2); void mtxScPixel (sword s, sword y);
/*** bool mtxScClip (word left, word top, word right, word bottom); ***/ /*** for DDK compatibility ***/ void mtxSetClipRect ( word xLeft, word yTop, word xRight, word yBottom );
/*** macro for mtxScClip calls to mtxSetClipRect and evaluates to mtxOK ***/ #define mtxScClip( x, t, y, b ) ( \
mtxSetClipRect( (x), (t), (y), (b) ), \ mtxOK \ )
/*** NOTE: underscores will be removed in final DDK version from common
*** SDK and DDK function names ***/ #define _mtxScClip( x, t, y, b ) ( \
mtxSetClipRect( (x), (t), (y), (b) ), \ mtxOK \ )
void mtxScFilledRect (sword left, sword top, sword right, sword bottom); #endif /* GRPROTO_H */
bool mtxCheckHw (void); bool mtxInit(bool dualscreen,short resolution_id,bool clear_flag, mtxCONFIG *config); bool mtxReset (void);
#ifndef BLTPROTO_H
extern void mtxMemScBitBlt(word dstx, word dsty, word width, word height, word plane, dword *src); extern void mtxScMemBitBlt(word srcx, word srcy, word width, word height, word plane, dword *dst); extern void mtxScScBitBlt (sword srcx, sword srcy, sword dstx, sword dsty, word width, word height, sword plane); #endif /* BLTPROTO_H */
#endif /* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
#endif
#endif /* BIND_H */
|