?? csio.c
字號:
/************************************************************************/
/* */
/* MODULE: myfunc.c */
/* DATE: 12/1/2000 */
/* PURPOSE: Crystal Semiconductor CS8900 driver for pSOS/trimedia */
/* PROGRAMMER: fangpeng */
/*----------------------------------------------------------------------*/
/* */
/* Copyright 1996, fangpeng . */
/* ALL RIGHTS RESERVED */
/************************************************************************/
/************************************************************************/
/* This file defines some functions specific to Trimedia such as */
/* IO/MEM Byte/Word Read/Write and Interrupt service */
/************************************************************************/
#include "csio.h"
extern volatile int csInMemoryMode;
unsigned char inb(unsigned long PortAddr)
{ return myxioRead(PortAddr + CS_XIO_Read_IO_BASE);
}
unsigned short inw(unsigned long PortAddr)
{ volatile unsigned long tmpData;
tmpData = myxioRead(PortAddr+CS_XIO_Read_IO_BASE);
tmpData += (myxioRead(PortAddr+CS_XIO_Read_IO_BASE+1))<<8;
return tmpData;
}
void outw(unsigned long PortAddr,unsigned short value)
{ myxioWrite(PortAddr + CS_XIO_Write_IO_BASE+1 , value>>8);
myxioWrite(PortAddr + CS_XIO_Write_IO_BASE, value);
}
unsigned short inMEMw(unsigned short *MemAddr)
{ unsigned short tmpData;
unsigned long tmpAddr;
tmpAddr = (unsigned long)MemAddr + CS_XIO_Read_MEM_BASE;
tmpData = myxioRead(tmpAddr);
tmpData+= (myxioRead(tmpAddr+1))<<8;
return tmpData;
}
void outMEMw(unsigned short *MemAddr,unsigned short value)
{ unsigned long tmpAddr;
tmpAddr = (unsigned long)MemAddr + CS_XIO_Write_MEM_BASE;
myxioWrite(tmpAddr+1, value>>8);
myxioWrite(tmpAddr, value);
}
unsigned char inMEMb(unsigned short *MemAddr)
{ unsigned long tmpAddr;
unsigned short tmpData,lastbit;
if ( ((unsigned long )MemAddr)&1 == 0 )
lastbit = 0;
else
lastbit = 1;
tmpAddr = (unsigned long)MemAddr + CS_XIO_Read_MEM_BASE - lastbit;
tmpData = inMEMw((unsigned short *)tmpAddr);
return (lastbit ==0 )?(tmpData&0x00ff):(tmpData>>8);
}
void outMEMb(unsigned short *MemAddr,unsigned short value)
{ unsigned long tmpAddr;
unsigned short tmpData,lastbit;
if ( ((unsigned long )MemAddr)&1 == 0 )
lastbit = 0;
else
lastbit = 1;
tmpAddr = (unsigned long)MemAddr + CS_XIO_Write_MEM_BASE - lastbit;
tmpData = inMEMw((unsigned short *)tmpAddr);
outMEMw((unsigned short *)tmpAddr, (lastbit ==0 )?(tmpData&0xff00+value):(tmpData&0x00ff+value<<8) );
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -