hal_mem.c

来自「epson公司的一个关于s1d13706的低层驱动程序」· C语言 代码 · 共 132 行

C
132
字号
/*
**===========================================================================
** HAL_MEM.C - This module contains the memory access funtions for the HAL.
**---------------------------------------------------------------------------
** Copyright (c) 2000, 2001 Epson Research and Development, Inc.
** All Rights Reserved.
**===========================================================================
*/

#include "hal.h"
#include "assert.h"
#include "nonsefns.h"

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

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

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

/*
**	seReadDisplayByte()
*/
unsigned seReadDisplayByte(DWORD offset)
{
#ifdef LINEAR_ADDRESSES_SUPPORTED
	return *((BYTE *) _DispLinearAddress + offset);
#else
   return _READXB(_DispLinearAddress + offset);
#endif
}

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

/*
**	seWriteDisplayBytes()
*/
void seWriteDisplayBytes(DWORD offset, unsigned val, DWORD count)
{
#ifdef LINEAR_ADDRESSES_SUPPORTED
   BYTE *bpt;

	bpt = (BYTE *) (_DispLinearAddress + offset);

	while (count > 0)
	{
		*bpt = (BYTE) val;
		bpt++;
		count--;
	}
#else
   _asmWriteBytes(_DispLinearAddress + offset, val, count);
#endif
}

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

/*
** seReadDisplayWord()
*/
unsigned seReadDisplayWord(DWORD offset)
{
#ifdef LINEAR_ADDRESSES_SUPPORTED
	return *((WORD *) (_DispLinearAddress + offset));
#else
   return _READXW(_DispLinearAddress + offset);
#endif
}

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

/*
** seWriteDisplayWords()
*/
void seWriteDisplayWords(DWORD offset, unsigned val, DWORD count)
{
#ifdef LINEAR_ADDRESSES_SUPPORTED
   WORD *wpt;

	wpt = (WORD *) (_DispLinearAddress + offset);

	while (count > 0)
	{
		*wpt = (WORD) val;
		wpt++;
		count--;
	}
#else
   _asmWriteWords(_DispLinearAddress + offset, val, count);
#endif
}

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

/*
** seReadDisplayDword()
*/
DWORD seReadDisplayDword(DWORD offset)
{
#ifdef LINEAR_ADDRESSES_SUPPORTED
	return *((DWORD *) (_DispLinearAddress + offset));
#else
   return _asmReadDword(_DispLinearAddress + offset);
#endif
}

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

/*
** seWriteDisplayDwords()
*/
void seWriteDisplayDwords(DWORD offset, DWORD val, DWORD count)
{
#ifdef LINEAR_ADDRESSES_SUPPORTED
   DWORD *dwpt;

	dwpt = (DWORD *) (_DispLinearAddress + offset);

	while (count > 0)
	{
		*dwpt = val;
		dwpt++;
		count--;
	}
#else
   _asmWriteDwords(_DispLinearAddress + offset, val, count);
#endif
}

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


⌨️ 快捷键说明

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