⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_mem.c

📁 一个图形显示芯片s1d13505的应用程序
💻 C
字号:
/*
**===========================================================================
**	HAL_MEM.C - This module contains the memory access funtions for the HAL.
**---------------------------------------------------------------------------
** Copyright (c) 1997, 1998 Epson Research and Development, Inc.
** All Rights Reserved.
**===========================================================================
*/

/*
**	NOTES
**
**	- The seReadxxx() routines all return one item of the respective size.
**
**	- The seWritexxx() routines can write one or more items of their
**		respective sizes.
*/
#include "hal.h"
#include "assert.h"
#include "nonsefns.h"

/*-------------------------------------------------------------------------*/

static const char Revision[] = "HAL_MEM.C=$Revision: 4 $";

extern LPHAL_STRUCT HalInfoArray[MAX_DEVICE];

/*-------------------------------------------------------------------------*/

/*
**	seReadDisplayByte()
*/
int seReadDisplayByte( int seReserved1, DWORD offset, BYTE *pByte )
{
	ASSERT( 0 == seReserved1 );
//	ASSERT( MemSize[seReserved1] >= offset );

	if (offset >= MemSize[seReserved1])
		return ERR_HAL_BAD_ARG;

	*pByte = *((BYTE *) HalInfoArray[seReserved1]->dwDispMemAddr + offset);

	return ERR_OK;
}

/*-------------------------------------------------------------------------*/

/*
**	seWriteDisplayBytes()
*/
int seWriteDisplayBytes( int seReserved1, DWORD offset, BYTE val, DWORD count )
{
   BYTE *bpt;

	ASSERT( 0 == seReserved1 );
//	ASSERT( MemSize[seReserved1] >= offset );
//	ASSERT( MemSize[seReserved1] >= offset + count );

	if (offset >= MemSize[seReserved1])
		return ERR_HAL_BAD_ARG;

	if (offset + count >= MemSize[seReserved1])
		count = MemSize[seReserved1] - offset;

	bpt = (BYTE *) (HalInfoArray[seReserved1]->dwDispMemAddr + offset);

	while (count > 0)
	{
		*bpt = val;
		bpt++;
		count--;
	}

	return ERR_OK;
}

/*-------------------------------------------------------------------------*/

/*
** seReadDisplayWord()
*/
int seReadDisplayWord( int seReserved1, DWORD offset, WORD *pWord )
{
	ASSERT( 0 == seReserved1 );
//	ASSERT( MemSize[seReserved1] >= offset );

	if (offset >= MemSize[seReserved1])
		return ERR_HAL_BAD_ARG;

	*pWord = *((WORD *) (HalInfoArray[seReserved1]->dwDispMemAddr + offset));

	return ERR_OK;
}

/*-------------------------------------------------------------------------*/

/*
** seWriteDisplayWords()
*/
int seWriteDisplayWords( int seReserved1, DWORD offset, WORD val, DWORD count )
{
   WORD *wpt;

	ASSERT( 0 == seReserved1 );
//	ASSERT( MemSize[seReserved1] >= offset );
//	ASSERT( MemSize[seReserved1] >= offset + count * 2 );

	if (offset >= MemSize[seReserved1])
		return ERR_HAL_BAD_ARG;

	if (offset + count * 2 >= MemSize[seReserved1])
		count = ((MemSize[seReserved1] - (offset & ~1)) / 2);

	wpt = (WORD *) (HalInfoArray[seReserved1]->dwDispMemAddr + offset);

	while (count > 0)
	{
		*wpt = val;
		wpt++;
		count--;
	}
	return ERR_OK;
}

/*-------------------------------------------------------------------------*/

/*
** seReadDisplayDword()
*/
int seReadDisplayDword( int seReserved1, DWORD offset, DWORD *pDword )
{
	ASSERT( 0 == seReserved1 );
//	ASSERT( MemSize[seReserved1] >= offset );

	if (offset >= MemSize[seReserved1])
		return ERR_HAL_BAD_ARG;

	*pDword = *((DWORD *) (HalInfoArray[seReserved1]->dwDispMemAddr + offset));

	return ERR_OK;
}

/*-------------------------------------------------------------------------*/

/*
** seWriteDisplayDwords()
*/
int seWriteDisplayDwords( int seReserved1, DWORD offset, DWORD val, DWORD count)
{
   DWORD *dwpt;

	ASSERT( 0 == seReserved1 );
//	ASSERT( MemSize[seReserved1] >= offset );
//	ASSERT( MemSize[seReserved1] >= offset + count * 4 );

	if (offset > MemSize[seReserved1])
		return ERR_HAL_BAD_ARG;

	if (offset + count * 4 > MemSize[seReserved1])
		count = ((MemSize[seReserved1] - (offset & ~3)) / 4);

	dwpt = (DWORD *) (HalInfoArray[seReserved1]->dwDispMemAddr + offset);

	while (count > 0)
	{
		*dwpt = val;
		dwpt++;
		count--;
	}

	return ERR_OK;
}

/*-------------------------------------------------------------------------*/


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -