📄 hal.h
字号:
/*
**===========================================================================
** HAL.H
**---------------------------------------------------------------------------
** Copyright (c) 1997, 2001 Epson Research and Development, Inc.
** All Rights Reserved.
**===========================================================================
*/
#ifndef _HAL_H_
#define _HAL_H_
#ifdef __GNUC__
#include "gnu.h"
#else
#pragma warning(disable:4001) // Disable the 'single line comment' warning.
#endif
#include "hal_regs.h"
#if !defined(SE_NODEFMAIN) && !defined(INTEL_W32) && !defined(INTEL_DOS)
#define main seMain
#define exit seExit
void seExit(int status);
#endif
#if defined(__GNUC__) && defined(INTEL_DOS)
int getch(void);
#endif
#if defined(LCEVBSH3)
#define getch getchar
int siprintf(char *, const char *, ...);
#endif
#ifdef IDP68K
int getch(void);
int siprintf(char *, const char *, ...);
#endif
#ifdef MPC8xx
#ifdef getchar
#undef getchar
#endif
int getch(void);
int siprintf(char *, const char *, ...);
#endif
// embedded targets use non-float printf to reduce program size
#if defined(__GNUC__) && !defined(INTEL_DOS) && !defined(INTEL_W32)
#define printf iprintf
#define fprintf fiprintf
#define sprintf siprintf
#define vprintf viprintf
#define vfprintf vfiprintf
#define vsprintf vsiprintf
#endif
/*-------------------------------------------------------------------------*/
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned int UINT;
typedef int BOOL;
#ifdef INTEL_DOS
typedef BYTE far *LPBYTE;
typedef WORD far *LPWORD;
typedef DWORD far *LPDWORD;
#else
typedef BYTE *LPBYTE;
typedef WORD *LPWORD;
typedef DWORD *LPDWORD;
#endif
#ifndef LOBYTE
#define LOBYTE(w) ((BYTE)(w))
#endif
#ifndef HIBYTE
#define HIBYTE(w) ((BYTE)(((UINT)(w) >> 8) & 0xFF))
#endif
#ifndef LOWORD
#define LOWORD(l) ((WORD)(DWORD)(l))
#endif
#ifndef HIWORD
#define HIWORD(l) ((WORD)((((DWORD)(l)) >> 16) & 0xFFFF))
#endif
#ifndef MAKEWORD
#define MAKEWORD(lo, hi) ((WORD)(((WORD)(lo)) | (((WORD)(hi)) << 8)) )
#endif
#ifndef MAKELONG
#define MAKELONG(lo, hi) ((long)(((WORD)(lo)) | (((DWORD)((WORD)(hi))) << 16)))
#endif
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *)0)
#endif
#endif
/*-------------------------------------------------------------------------*/
/*
** SIZE_VERSION is the size of the version string (eg. "1.00")
** SIZE_STATUS is the size of the status string (eg. "b" for beta)
** SIZE_REVISION is the size of the status revision string (eg. "00")
*/
#define SIZE_VERSION 5
#define SIZE_STATUS 2
#define SIZE_REVISION 5
#ifdef __GNUC__
#define PACKED __attribute__((packed))
#else
#define PACKED
#endif
#ifdef ENABLE_DPF /* Debug_printf() */
#define DPF(exp) printf(#exp "\n")
#define DPF1(exp) printf(#exp " = %d\n", exp)
#define DPF2(exp1, exp2) printf(#exp1 "=%d " #exp2 "=%d\n", exp1, exp2)
#define DPFL(exp) printf(#exp " = %x\n", exp)
#else
#define DPF(exp) ((void)0)
#define DPF1(exp) ((void)0)
#define DPFL(exp) ((void)0)
#endif
/*-------------------------------------------------------------------------*/
enum
{
ERR_OK = 0, /* No error, call was successful. */
ERR_FAILED, /* General purpose failure. */
ERR_UNKNOWN_DEVICE,
ERR_INVALID_PARAMETER, /* Function was called with invalid parameter. */
ERR_HAL_BAD_ARG,
ERR_INVALID_STD_DEVICE,
ERR_PCI_DRIVER_NOT_FOUND,
ERR_PCI_BRIDGE_ADAPTER_NOT_FOUND,
ERR_CLKI_NOT_IN_TABLE,
ERR_CLKI2_NOT_IN_TABLE,
ERR_DISPLAY_NOT_ENABLED,
ERR_NOT_ENOUGH_MEMORY
};
/*******************************************
* Definitions for seGetId()
*******************************************/
enum
{
ID_S1D13506_REV0,
ID_S1D13506_REV1,
ID_UNKNOWN = 0xff,
};
/*
** DetectEndian is used to determine whether the most significant
** and least significant bytes are reversed by the given compiler.
*/
#define ENDIAN 0x1234
#define REV_ENDIAN 0x3412
enum
{
HAL_RED,
HAL_GREEN,
HAL_BLUE
};
/*************************************************************************/
/*
** Definitions for HAL_STRUCT.dwFlags
*/
#define fVALID_LCD 0x00000001
#define fVALID_CRT 0x00000002
#define fVALID_TV 0x00000004
#define fFIXED_CLKI 0x00000008
#define fFIXED_CLKI2 0x00000010
#define fFIXED_DIVLCDPCLK 0x00000020
#define fFIXED_DIVCRTPCLK 0x00000040
#define fBUSCLK2 0x00000080
#define fMEMORY_512K 0x00000100
#define fMEMORY_1M 0x00000200
/*************************************************************************/
/*
** Definitions for "regDisplayMode" in seInitReg(),
** for "display" in seInitCursor(), and for "display" in seInitCursor().
*/
#define LCD 0x01
#define CRT 0x02
#define TV 0x04
/*
** The S1D13506 cannot show more than 2 separate images.
*/
#define MAX_DISP_SURFACE 2
/*
** Definitions for seGetLcdOrientation()
*/
#define LANDSCAPE 0x00
#define ROTATE90 0x01
#define ROTATE180 0x02
#define ROTATE270 (ROTATE90 | ROTATE180)
/*************************************************************************/
#pragma pack(1)
typedef struct
{
WORD index;
WORD val; /* It is easier for the compiler to pack words instead of bytes. */
} PACKED defReg;
typedef struct tagHalStruct
{
char szIdString[16];
WORD wDetectEndian;
WORD wSize;
DWORD dwFlags;
defReg Regs[MAX_REG];
DWORD dwClkI; /* Input Clock Frequency (in kHz) */
DWORD dwClkI2; /* Input Clock 2 Frequency (in kHz) */
DWORD dwBusClk; /* Bus Clock Frequency (in kHz) */
DWORD dwRegisterAddress; /* Starting address of registers */
DWORD dwDisplayMemoryAddress; /* Starting address of display buffer memory */
WORD wPanelFrameRate; /* Desired panel frame rate */
WORD wCrtTvFrameRate; /* Desired CRT rate */
WORD wMemorySpeed; /* Memory speed in ns */
WORD wRefreshTime; /* DRAM refresh Time in us */
WORD wTrc; /* Ras to Cas Delay in ns */
WORD wTrp; /* Ras Precharge time in ns */
WORD wTras; /* Ras Pulse Width time in ns */
WORD wTrac; /* Ras Access Charge time in ns */
WORD wTVFlickerFilter; /* Enable TV flicker filter */
} PACKED HAL_STRUCT;
#pragma pack()
typedef HAL_STRUCT * PHAL_STRUCT;
#ifdef INTEL_DOS
typedef HAL_STRUCT far * LPHAL_STRUCT;
#else
typedef HAL_STRUCT * LPHAL_STRUCT;
#endif
/*=========================================================================*/
/* FUNCTION PROTO-TYPES */
/*=========================================================================*/
/*---------------------------- HAL Support --------------------------------*/
int seRegisterDevice(const LPHAL_STRUCT lpHalInfo);
DWORD seGetInstalledMemorySize(void);
/*
** Definitions for flags in seInitReg()
*/
#define CLEAR_MEM 0x0001
#define DISP_BLANK 0x0002
int seInitReg(unsigned DisplayMode, unsigned flags);
int seGetId( int *pId );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -