亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? hal_indirect16.c

?? 是一個手機功能的模擬程序
?? C
?? 第 1 頁 / 共 3 頁
字號:
{
	UInt16 loword, hiword;

	halSetProcessExclusivity( TRUE );

	SetDisplayAddrSerial(addr);
	
	*HalIndInfo.pIndex8  = SER_READ;
	if (HalInfo.dwFlags & fINDIRECT_DATA16)
    {
	    loword = *HalIndInfo.pData16;
	    hiword = *HalIndInfo.pData16;
    }
	else
    {
	    loword  = *HalIndInfo.pData8;
	    loword |= (UInt16)((*HalIndInfo.pData8)<<8);
	    hiword  = *HalIndInfo.pData8;
	    hiword |= (UInt16)((*HalIndInfo.pData8)<<8);
    }
	halSetProcessExclusivity( FALSE );

	return MAKELONG(loword, hiword);
}




//---------------------------------------------------------------------------
// INDIRECT FUNCTION: halpSerReadData()
// WARNING: DO NOT USE ODD ADDRESSES FOR 16-bit or 32bit ACCESSES!
//---------------------------------------------------------------------------
void halpSerReadData( int Size, UInt32 Offset, void* pData, UInt32 Count )
{
	if ( Count && pData )
	{
		halSetProcessExclusivity( TRUE );

		if ( Size == sizeof(UInt8) )
		{
			pUInt8 pWrite = pData;
			SetDisplayAddrSerial( Offset );

			*HalIndInfo.pIndex8 = SER_READ;
			do
			{
				*pWrite++ = *HalIndInfo.pData8;
			} while ( --Count );
		}
		else if ( Size == sizeof(UInt16) )
		{
			pUInt16 pWrite  = pData;
            UInt16  wVal;
			SetDisplayAddrSerial( Offset );

			*HalIndInfo.pIndex8 = SER_READ;
			if (HalInfo.dwFlags & fINDIRECT_DATA16)
            {
			    do
			    {
				    *pWrite++ = *HalIndInfo.pData16;
			    } while ( --Count );
            } else
            {
			    do
			    {
				    wVal  = *HalIndInfo.pData8;
				    wVal |= (UInt16)((*HalIndInfo.pData8)<<8);
                    *pWrite++ = wVal;
			    } while ( --Count );
            }
		}
		else if ( Size == sizeof(UInt32) )
		{
			UInt16 loword, hiword;
			pUInt32 pWrite = pData;
			SetDisplayAddrSerial( Offset );

			*HalIndInfo.pIndex8 = SER_READ;
			if (HalInfo.dwFlags & fINDIRECT_DATA16)
            {
			    do
			    {
				    loword = *HalIndInfo.pData16;
				    hiword = *HalIndInfo.pData16;
				    *pWrite++ = MAKELONG(loword,hiword);
			    } while ( --Count );
            } else
            {
			    do
			    {
				    loword  = *HalIndInfo.pData8;
				    loword |= (UInt16)((*HalIndInfo.pData8)<<8);
				    hiword  = *HalIndInfo.pData8;
				    hiword |= (UInt16)((*HalIndInfo.pData8)<<8);
				    *pWrite++ = MAKELONG(loword,hiword);
			    } while ( --Count );
            }
		}

		halSetProcessExclusivity( FALSE );
	}
}




//---------------------------------------------------------------------------
// INDIRECT FUNCTION: halpParReadData()
// WARNING: DO NOT USE ODD ADDRESSES FOR 16-bit or 32bit ACCESSES!
//---------------------------------------------------------------------------
void halpParReadData( int Size, UInt32 Offset, void* pData, UInt32 Count )
{
	if ( Count && pData )
	{
		halSetProcessExclusivity( TRUE );

		if ( Size == sizeof(UInt8) )
		{
			pUInt8 pWrite = pData;
			SetDisplayAddrParallel( Offset );
			do
			{
				*pWrite++ = *HalIndInfo.pData8;
			} while ( --Count );
		}
		else if ( Size == sizeof(UInt16) )
		{
			pUInt16 pWrite = pData;
			SetDisplayAddrParallel( Offset );
			do
			{
				tmp = *HalIndInfo.pData16;
				//*pWrite++ = *HalIndInfo.pData16;
				*pWrite++ = tmp;
			} while ( --Count );
		}
		else if ( Size == sizeof(UInt32) )
		{
			UInt16 loword, hiword;
			pUInt32 pWrite = pData;
			SetDisplayAddrParallel( Offset );
			do
			{
				loword = *HalIndInfo.pData16;
				hiword = *HalIndInfo.pData16;

				*pWrite++ = MAKELONG(loword,hiword);
			} while ( --Count );
		}

		halSetProcessExclusivity( FALSE );
	}
}




//---------------------------------------------------------------------------
// INDIRECT FUNCTION: halpSerWriteData()
// WARNING: DO NOT USE ODD ADDRESSES FOR 16-bit or 32bit ACCESSES!
//---------------------------------------------------------------------------
void halpSerWriteData( int Size, UInt32 Offset, const void* pData, UInt32 Count )
{
	if ( Count && pData )
	{
		halSetProcessExclusivity( TRUE );

		if ( Size == sizeof(UInt8) )
		{
			const UInt8* pRead = pData;
			SetDisplayAddrSerial( Offset );

			*HalIndInfo.pIndex8  = SER_WRITE;
			do
			{
				*HalIndInfo.pData8 = *pRead++;
			} while ( --Count );
		}
		else if ( Size == sizeof(UInt16) )
		{
			const UInt16* pRead = pData;
			SetDisplayAddrSerial( Offset );

			*HalIndInfo.pIndex8  = SER_WRITE;
			if (HalInfo.dwFlags & fINDIRECT_DATA16)
            {
			    do
			    {
				    *HalIndInfo.pData16 = LOWORD(*pRead);
				    pRead++;
			    } while ( --Count );
            } else
            {
                UInt16 wVal;
			    do
			    {
                    wVal = LOWORD(*pRead);
				    *HalIndInfo.pData8 = LOBYTE(wVal);
				    *HalIndInfo.pData8 = HIBYTE(wVal);
				    pRead++;
			    } while ( --Count );
            }
		}
		else if ( Size == sizeof(UInt32) )
		{
			const UInt32* pRead = pData;
			SetDisplayAddrSerial( Offset );

			*HalIndInfo.pIndex8  = SER_WRITE;
			if (HalInfo.dwFlags & fINDIRECT_DATA16)
            {
			    do
			    {
				    *HalIndInfo.pData16 = LOWORD(*pRead);
				    *HalIndInfo.pData16 = HIWORD(*pRead);
					pRead++;
			    } while ( --Count );
            } else
            {
                UInt32 dwVal;
                UInt16 wVal;
			    do
			    {
                    dwVal = *pRead++;
                    wVal = LOWORD(dwVal);
				    *HalIndInfo.pData8 = LOBYTE(wVal);
				    *HalIndInfo.pData8 = HIBYTE(wVal);
                    wVal = HIWORD(dwVal);
				    *HalIndInfo.pData8 = LOBYTE(wVal);
				    *HalIndInfo.pData8 = HIBYTE(wVal);
			    } while ( --Count );
            }
		}

		halSetProcessExclusivity( FALSE );
	}
}




//---------------------------------------------------------------------------
// INDIRECT FUNCTION: halpParWriteData()
// WARNING: DO NOT USE ODD ADDRESSES FOR 16-bit or 32bit ACCESSES!
//---------------------------------------------------------------------------
void halpParWriteData( int Size, UInt32 Offset, const void* pData, UInt32 Count )
{
	if ( Count && pData )
	{
		halSetProcessExclusivity( TRUE );

		if ( Size == sizeof(UInt8) )
		{
			const UInt8* pRead = pData;
			SetDisplayAddrParallel( Offset );
			do
			{
				*HalIndInfo.pData8 = *pRead++;
			} while ( --Count );
		}
		else if ( Size == sizeof(UInt16) )
		{
			const UInt16* pRead = pData;
			SetDisplayAddrParallel( Offset );
			do
			{
				//*HalIndInfo.pData16 = *pRead;
				
				//*HalIndInfo.pData16  = *( volatile unsigned short *)0x200c000;
				
				tmp =*pRead;
				*HalIndInfo.pData16 = tmp;
				pRead++;
			} while ( --Count );
			
			/*
			SetDisplayAddrParallel( Offset );
			do
			{	
				if (HalInfo.dwFlags & fINDIRECT_DATA16)
					*HalIndInfo.pData16 = *pRead;
				else
				{
					*HalIndInfo.pData8 = HIBYTE(*pRead);
					*HalIndInfo.pData8 = LOBYTE(*pRead);
					//*HalIndInfo.pData8 = HIBYTE(0xFFFF);
					//*HalIndInfo.pData8 = LOBYTE(0xFFFF);					
					 //pRead++;
				}
				
			} while ( --Count );
			*/
		}
		else if ( Size == sizeof(UInt32) )
		{
			const UInt32* pRead = pData;
			SetDisplayAddrParallel( Offset );
			do
			{
				*HalIndInfo.pData16 = LOWORD(*pRead);
				*HalIndInfo.pData16 = HIWORD(*pRead);
				pRead++;
			} while ( --Count );
		}

		halSetProcessExclusivity( FALSE );
	}
}




//---------------------------------------------------------------------------
//	FUNCTION: IndirectSetDisplayAddr()
//
//	DESCRIPTION:
//		This routine sets the Host Interface Address registers to the address
//		specified by addr. For the Serial Interface, this routine also sets
//		the interface to read or write.
//
//	PARAMETERS:
//		addr	- a thirty-two bit value containing the offset to the desired
//				  memory addrsss.
//		SerialDir - for serial indirect I/O, set SerialDir to
//					either SER_WRITE or SER_READ.
//					For parallel indirect I/O, this parameter is ignored.
//---------------------------------------------------------------------------
void IndirectSetDisplayAddr( UInt32 addr, UInt8 SerialDir )
{
	halSetProcessExclusivity( TRUE );

	if (HalInfo.dwFlags & fINDIRECT_SERIAL)
	{
		SetDisplayAddrSerial(addr);

		if (HalInfo.dwFlags & fINDIRECT_ADDR16)
			*HalIndInfo.pIndex16 = SerialDir;
		else
			*HalIndInfo.pIndex8  = SerialDir;
	}
	else
		SetDisplayAddrParallel(addr);

	halSetProcessExclusivity( FALSE );
}


//---------------------------------------------------------------------------
//	FUNCTION: SetSerialAddrParallel()
//
//	DESCRIPTION:
//		This routine sets the Host Interface Address registers to the address
//		specified by addr.
//
//		Because we don't know the last register to be accessed we must write
//		the full address every time.
//
//		This function MUST be called within a process exclusive block!
//
//	PARAMETERS:
//		addr	- a thirty-two bit value containing the offset to the desired
//				  memory addrsss.
//---------------------------------------------------------------------------
static void SetDisplayAddrParallel( UInt32 addr )
{
	// Setup the address
	if (HalInfo.dwFlags & fINDIRECT_ADDR16)
	{
		*HalIndInfo.pIndex16 = 0x0020;
		*HalIndInfo.pData8   = LOBYTE(LOWORD(addr));
		*HalIndInfo.pIndex16 = 0x0021;
		*HalIndInfo.pData8   = HIBYTE(LOWORD(addr));
		*HalIndInfo.pIndex16 = 0x0022;
		*HalIndInfo.pData8   = LOBYTE(HIWORD(addr));
		
		*HalIndInfo.pIndex16 = 0x28;
	}
	else
	{
		*HalIndInfo.pIndex8 = 0x20;
		*HalIndInfo.pIndex8 = 0x00;
		*HalIndInfo.pData8  = LOBYTE(LOWORD(addr));
		*HalIndInfo.pIndex8 = 0x21;
		*HalIndInfo.pData8  = HIBYTE(LOWORD(addr));
		*HalIndInfo.pIndex8 = 0x22;
		*HalIndInfo.pData8  = LOBYTE(HIWORD(addr));
		
		*HalIndInfo.pIndex8 = 0x28;
	}
}

//---------------------------------------------------------------------------
//	FUNCTION: SetDisplayAddrSerial()
//
//	DESCRIPTION:
//		This routine sets the Host Interface Address registers to the address
//		specified by addr. After setting the address the routine points the
//		'register pointer' to the Host Interface Memory Access Port.
//
//		Because we don't know the last register to be accessed we must write
//		the full address every time.
//
//		This function MUST be called within a process exclusive block!
//
//	PARAMETERS:
//		addrs	- a thirty-two bit value containing the offset to the desired
//				  memory addrsss.
//---------------------------------------------------------------------------


static void SetDisplayAddrSerial( UInt32 addr )
{
	// Setup the register address of the Host Interface Memory Address register
	if (HalInfo.dwFlags & fINDIRECT_ADDR16)
	{
		*HalIndInfo.pIndex16 = SER_SET_ADDR;
		*HalIndInfo.pData16   = 0x2000;
		
		// Set the LSB of 'addr'
		*HalIndInfo.pIndex16 = SER_WRITE;
		*HalIndInfo.pData8   = LOBYTE(LOWORD(addr));
		
		// Point to the next Host Interface Memory Address register
		*HalIndInfo.pIndex16 = SER_SET_ADDR;
		*HalIndInfo.pData8   = 0x21;
		
		// Set the next byte of 'addr'
		*HalIndInfo.pIndex16 = SER_WRITE;
		*HalIndInfo.pData8   = HIBYTE(LOWORD(addr));
		
		// Point to the last Host Interface Memory Address register
		*HalIndInfo.pIndex16 = SER_SET_ADDR;
		*HalIndInfo.pData8   = 0x22;
		
		// Set the MSB byte of 'addr'
		*HalIndInfo.pIndex16 = SER_WRITE;
		*HalIndInfo.pData8   = LOBYTE(HIWORD(addr));
		
		// Point to the Host Interface Memory Access Port
		*HalIndInfo.pIndex16 = SER_SET_ADDR;
		*HalIndInfo.pData8   = 0x28;
	}
	else
	{
		*HalIndInfo.pIndex8  = SER_SET_ADDR;
		*HalIndInfo.pData8   = 0x20;		// REG0020_HOSTMEMADDR0
		*HalIndInfo.pData8   = 0x00;		// MSB of 0x0020 = 0x00
		
		// Set the LSB of 'addr'
		*HalIndInfo.pIndex8  = SER_WRITE;
		*HalIndInfo.pData8   = LOBYTE(LOWORD(addr));
		
		// Point to the next Host Interface Memory Address register
		*HalIndInfo.pIndex8  = SER_SET_ADDR;
		*HalIndInfo.pData8   = 0x21;
		
		// Set the next byte of 'addr'
		*HalIndInfo.pIndex8  = SER_WRITE;
		*HalIndInfo.pData8   = HIBYTE(LOWORD(addr));
		
		// Point to the last Host Interface Memory Address register
		*HalIndInfo.pIndex8  = SER_SET_ADDR;
		*HalIndInfo.pData8   = 0x22;
		
		// Set the MSB byte of 'addr'
		*HalIndInfo.pIndex8  = SER_WRITE;
		*HalIndInfo.pData8   = LOBYTE(HIWORD(addr));
		
		// Point to the Host Interface Memory Access Port
		*HalIndInfo.pIndex8  = SER_SET_ADDR;
		*HalIndInfo.pData8   = 0x28;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品国产麻豆不卡| 666欧美在线视频| 欧美午夜片在线观看| 欧美成人猛片aaaaaaa| 1024亚洲合集| 国产最新精品精品你懂的| 欧美色图一区二区三区| 日本一区二区三区国色天香| 日本欧美一区二区在线观看| 91视频www| 欧美激情在线一区二区三区| 久久国产剧场电影| 欧美丝袜丝交足nylons| 国产精品美女一区二区在线观看| 日韩福利电影在线观看| 欧美午夜精品免费| 亚洲丝袜制服诱惑| 成人精品亚洲人成在线| 久久先锋资源网| 久久成人免费电影| 欧美一区中文字幕| 亚洲成人av一区| 在线视频欧美精品| 亚洲视频一区二区在线| 成人h动漫精品一区二| 久久久久国产精品厨房| 韩国视频一区二区| 欧美xxxxxxxxx| 免费成人av资源网| 欧美日韩国产高清一区二区| 亚洲影视资源网| 欧美性受极品xxxx喷水| 亚洲一区二区成人在线观看| 日本丰满少妇一区二区三区| 亚洲视频网在线直播| 91一区二区三区在线播放| 日韩伦理av电影| 91高清在线观看| 亚洲国产视频直播| 在线播放日韩导航| 青青草97国产精品免费观看 | 国产精品电影一区二区三区| 国产成人高清在线| 国产精品国产三级国产aⅴ原创| 成人国产精品免费网站| 亚洲欧美综合在线精品| 欧美亚洲综合色| 欧美a一区二区| 国产亚洲午夜高清国产拍精品| 成人一级片网址| 麻豆国产欧美日韩综合精品二区| 欧美浪妇xxxx高跟鞋交| 久久国产精品99久久人人澡| 久久久久青草大香线综合精品| 高清国产一区二区三区| 樱桃国产成人精品视频| 欧美一区二区成人6969| 国产精品羞羞答答xxdd| 亚洲视频网在线直播| 欧美撒尿777hd撒尿| 韩日精品视频一区| 亚洲欧美色一区| 91精品国产综合久久小美女| 国产福利一区二区| 夜夜嗨av一区二区三区| 日韩精品最新网址| 99久久久久久99| 日韩精品色哟哟| 中文在线一区二区 | 国产精品乱子久久久久| 欧美日韩久久久久久| 精品亚洲免费视频| 亚洲精品中文在线观看| 欧美电视剧在线看免费| 99国产精品久久久| 麻豆成人av在线| 亚洲欧美日韩一区二区三区在线观看| 欧洲国产伦久久久久久久| 精品一区免费av| 一区二区三区在线视频观看| 欧美v日韩v国产v| 在线国产亚洲欧美| 国产jizzjizz一区二区| 日韩 欧美一区二区三区| 国产精品视频第一区| 日韩免费一区二区三区在线播放| 色综合久久中文字幕| 国产一区二区视频在线| 婷婷综合在线观看| 亚洲乱码日产精品bd| 国产农村妇女精品| 日韩一区二区三区在线视频| 91精品福利在线| 成人av在线一区二区| 韩国三级中文字幕hd久久精品| 亚洲香肠在线观看| 亚洲日本在线视频观看| 日本一区二区三区dvd视频在线| 日韩一区二区免费高清| 欧美日韩性生活| 日本韩国欧美一区| 91亚洲男人天堂| av亚洲产国偷v产偷v自拍| 国产精品自拍一区| 精品夜夜嗨av一区二区三区| 日本不卡的三区四区五区| 午夜精品久久久久久久久久久| 亚洲男同性视频| 亚洲免费看黄网站| 亚洲欧美另类久久久精品2019 | 欧美日韩国产片| 欧美在线不卡视频| 91国产成人在线| 欧美性欧美巨大黑白大战| 色欧美片视频在线观看| 91猫先生在线| 在线观看日韩一区| 欧美亚洲综合一区| 欧美猛男gaygay网站| 欧美肥妇free| 欧美一区二区三区思思人| 欧美一区二区三区免费视频| 91麻豆精品91久久久久同性| 在线播放国产精品二区一二区四区| 欧美色爱综合网| 国产成人丝袜美腿| www.视频一区| 91丨九色丨尤物| 欧美无砖专区一中文字| 欧美肥妇free| 久久精品一区八戒影视| 国产精品网站一区| 亚洲男人的天堂av| 午夜视黄欧洲亚洲| 捆绑调教一区二区三区| 国产一区二三区| yourporn久久国产精品| 色香色香欲天天天影视综合网| 欧美日韩在线一区二区| 日韩片之四级片| 国产精品三级在线观看| 一区二区三区四区在线播放| 日韩电影免费在线| 国产91精品一区二区麻豆亚洲| 91亚洲男人天堂| 欧美一区中文字幕| 国产精品婷婷午夜在线观看| 亚洲综合丁香婷婷六月香| 视频一区免费在线观看| 国产精品99久久久久久似苏梦涵| 91在线观看美女| 日韩午夜小视频| 国产精品久久久久久久久快鸭| 亚洲大片免费看| 国产成人在线电影| 欧美网站一区二区| 久久精品视频在线免费观看 | 色一情一伦一子一伦一区| 91精品国产入口在线| 中文字幕亚洲成人| 美腿丝袜亚洲色图| 色偷偷成人一区二区三区91| 日韩一级二级三级精品视频| 国产精品免费av| 国产在线精品一区二区不卡了| 日本精品一区二区三区高清| 久久亚洲私人国产精品va媚药| 亚洲午夜久久久久久久久电影网| 国产高清不卡二三区| 欧美日本乱大交xxxxx| 国产精品欧美久久久久一区二区| 亚洲国产精品尤物yw在线观看| 成人免费高清视频在线观看| 日韩午夜在线观看视频| 亚洲高清在线精品| av一区二区三区在线| 久久奇米777| 蜜桃一区二区三区在线观看| 在线免费观看日本欧美| 欧美国产综合一区二区| 精品亚洲国内自在自线福利| 欧美久久久久久久久中文字幕| 国产精品二三区| 成人精品高清在线| 国产亚洲自拍一区| 麻豆精品一区二区av白丝在线| 欧美亚洲日本国产| 亚洲精品v日韩精品| eeuss鲁片一区二区三区在线观看| 久久一区二区视频| 国内精品嫩模私拍在线| 日韩欧美激情四射| 麻豆精品在线视频| 日韩午夜精品视频| 久久精品99久久久| 欧美α欧美αv大片| 久久97超碰国产精品超碰| 日韩欧美激情一区| 精品一区二区三区免费视频| 欧美成人a∨高清免费观看|