📄 hal_mem.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 + -