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

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

?? tmmon.cpp

?? PNX系列設備驅動 PNX系列設備驅動
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
/*
 *  Module name              : tmmon.cpp    1.16 
 *
 *  Last update              : 10:03:19 - 99/03/06
 *
 *  Description              :
 *		TriMedia Graphics Monitor (tmgmon)
 *
 *      tmmon.cpp : 
 *		This file contains the functions related to initialization, downloading
 *      and executing programs.
 *
 *  Revision                 :
 *      2/16/1999   Nadeem Masood
 *                  Removed bugs related to "Process Busy" message.
 *                  Added the function GetDisplayInfo to display
 *                  video physical address, stride & pixel depth.
 *
 */
#include "stdafx.h"
#include <ddraw.h>
#include "tmgmon.h"

#include "stdio.h"
#include "string.h"
#include "ctype.h"

#include "memview.h"
#include "tmgmon.h"
#include "tmmanapi.h"
#include "tmmanlib.h"
#include "tmcrt.h"
#include "verinfo.h"

#include "TMObj.h"

#include "tmmon.h"

#undef USE_RPCSERV

extern  CTmmon *pcTmmon;

#define PROG_STATE_NOTINIT  1
#define PROG_STATE_LOADED   2
#define PROG_STATE_STARTED  3
#define PROG_STATE_STOPPED  4

// DECLARATIONS 

CEdit* pTraceView;
BOOL traceEdit=FALSE;
DWORD dwDSPNumber=0;
char* traceBuffer;
int traceIndex;

DWORD   WINAPI ThreadFunction ( PVOID pContext );
DWORD   WINAPI CRTServiceThread ( PVOID pContext );

DisplayTrace(PVOID pBuffer, DWORD dwLength);

/* Direct draw stuff here */
BOOL	GetDisplayInfo( void );
		// add for Linear and physical address
DWORD	g_dwLinearAddress = 0;
DWORD	g_dwPhysicalAddress = 0;
DWORD	g_dwStride;
DWORD	g_dwPixelDepth;

///////////////////////////////////////////////////////////////////////////////////////////
CTmmon::CTmmon()
{
/*
	HKEY	RegistryHandle;
	DWORD	BytesXfered;

	// initialize default values
	if ( ERROR_SUCCESS == RegOpenKeyEx(  
		HKEY_LOCAL_MACHINE,
		constTMManRegistryPath,
		0,
		KEY_READ,
		&RegistryHandle ) )
	{
        BytesXfered = sizeof ( DWORD);

		if ( ERROR_SUCCESS != RegQueryValueEx(
			RegistryHandle,
			TEXT("TMRunWindowSize"),
			NULL,
			NULL,
			(BYTE*)&m_TMRunWindowSize,
			&BytesXfered ) )
        {
        	m_TMRunWindowSize = 0;  // Just to indicate that not found in registry
        }
		RegCloseKey ( RegistryHandle );
    }
    else
       	m_TMRunWindowSize = 0;  // Just to indicate that not found in registry

//	m_TMRunWindowSize   = 999;
*/

	m_dwBaud =  38400; //CBR_38400; avoid including windows.h, jobs get pissed off.
	m_dwWindowLines = 0;
	m_CurrentDSPNumber = 0;
	for ( int Idx = 0 ; Idx < constTMMANMaximumDeviceCount ; Idx ++ )
	{
		m_CRTHandleArray[Idx] = 0;
	}

	m_traceBuffer = NULL;
}

CTmmon::~CTmmon()
{
	if(m_traceBuffer)
		delete m_traceBuffer;
}


///////////////////////////////////////////////////////////////////////////////////////////
CMD_READMEMORY  CmdReadMemoryContext;
CMD_WRITEMEMORY CmdWriteMemoryContext;
CMD_LOADRUN     CmdLoadRunContext;
CMD_DEBUG       CmdDebugContext;
CMD_TRACEP      CmdTracePContext;
CMD_DSP         CmdDSPContext;
CMD_SET         CmdSetContext;


///////////////////////////////////////////////////////////////////////////////////////////



BOOL CTmmon::Initial()
{
	TMStatus TMMANStatus;

	m_DSPCount = tmmanDSPGetNum();

	for ( UInt32 DSPIdx = 0 ; DSPIdx < m_DSPCount ; DSPIdx++ )
	{
		UInt32  DSPHandle;
		tmmanDSPInfo    DSPInfo;
		if ( ( TMMANStatus = tmmanDSPOpen ( DSPIdx, &DSPHandle ) ) != statusSuccess )
		{
			MessageBox(NULL,
				"\r\nTMMon : ERROR : Cannot initialize TMMAN : Terminating ... ",
				"CTmmon Initial error",
				MB_OK);
			break;
		}

		if ( ( TMMANStatus = tmmanDSPGetInfo ( DSPHandle, &DSPInfo ) ) != statusSuccess )
		{
    		tmmanDSPClose(DSPHandle);
			break;
		}

		tmmanDSPClose(DSPHandle);

	}

extern DWORD dwDSPNumber;

	m_CurrentDSPNumber = dwDSPNumber;

	if ( ( TMMANStatus = tmmanDSPOpen (
		m_CurrentDSPNumber, 
		&(m_CurrentDSPHandle) ) ) != statusSuccess )
	{
		MessageBox(NULL,
			"\r\nTMMon : ERROR : Cannot initialize TMMAN : Terminating ... ",
			"CTmmon Initial error",
				MB_OK);
		goto mainEXIT3;
	}

	if ( ( TMMANStatus = tmmanDSPGetInfo ( 
		m_CurrentDSPHandle,
		&(m_CurrentDSPInfo) ) ) != statusSuccess )
	{
		goto mainEXIT4;
	}

	return TRUE;

mainEXIT4:
	tmmanDSPClose ( m_CurrentDSPHandle );

mainEXIT3 :

	return FALSE;
}       
		
void CTmmon::Exit()
{
	tmmanDSPClose ( m_CurrentDSPHandle );
}

CMD_STATUS_CODE CTmmon::halValidateAddress ( UINT wDataSize,
											DWORD dwAddress,
											PDWORD pLinear,
											PDWORD pSize,
											int *piMemtype)
{
	if ( tmmanValidateAddressAndLength (
		&(m_CurrentDSPInfo.SDRAM),
		dwAddress,
		wDataSize ) == True )
	{
		*piMemtype = 1;
		*pLinear =  tmmanPhysicalToMapped ( 
			&(m_CurrentDSPInfo.SDRAM),
			dwAddress);
		*pSize = m_CurrentDSPInfo.SDRAM.Size - 
			(dwAddress - m_CurrentDSPInfo.SDRAM.PhysicalAddress);

		return CMD_STATUS_OK;
	}
	// mmio accesses have to be of DWORD length
	if ( tmmanValidateAddressAndLength (
		&(m_CurrentDSPInfo.MMIO),
		dwAddress,
		4) == True )
	{
		*piMemtype = 2;
		*pLinear =  tmmanPhysicalToMapped ( 
			&(m_CurrentDSPInfo.MMIO),
			dwAddress);
		*pSize = m_CurrentDSPInfo.MMIO.Size -
			(dwAddress - m_CurrentDSPInfo.MMIO.PhysicalAddress);

		return CMD_STATUS_OK;
	}

	*piMemtype = -1;
	return CMD_STATUS_INADEQUATE;
}

void CTmmon::ShowProcessorInfo ( CTmgmonDlg* pTmgmonDlg)
{
	tmmanDSPInfo* pDSPCaps  = &(m_CurrentDSPInfo);

	tmmanMemoryBlock*       pSDRAM =  &pDSPCaps->SDRAM;
	tmmanMemoryBlock*       pMMIO =  &pDSPCaps->MMIO;
	Int8                   szTemp[constTMManStringLength];
	PCHAR					CPUType = "Unknown";
	PCHAR					FABType = "Unknown";
	PCHAR					BoardType = "Unknown";

	PCHAR CPUTypeTM1000[] = {
		"TM1000 \0",	//0
		"TM1000 S\0",	//1
		"TM1100 \0",	//2
	};

	PCHAR CPUTypeTM2000[] = {
		"TM2000 \0",	//0
	};

	PCHAR CPUTypeTM1300[] = {
		"TM1300 \0",	//0
	};

	PCHAR FabType[] = {
		"ST\0",			//0
		"MOS4\0",		//1
		"TSMC\0",		//2
		"Unknown\0"		//3
	};

	PCHAR BoardTypeTM1[] = {
		"TM1_DEBUG",			//0
		"TM1_IREF",				//1
		"UNKNOWN",				//2
		"TM1100_DEBUG_1_0"		//3
		"TM1100_DEBUG_BGA_1_0",	//4
		"UNKNOWN",				//5
		"TM2000_DEBUG_1_0",		//6
		"TM1300_DEBUG",			//7
		"TM1300_IREF",			//8
		"TM1_DEBUG",			//9
		"TM1_DEBUG",			//9
		"TM1_DEBUG",			//9
		"TM1_DEBUG",			//9
		"TM1_DEBUG",			//9
		"TM1_DEBUG",			//9

	};

	// Revision ID bit Field encoding
	// Bits[7:6] = FabType
	// Bits[5:4] = Layer Version
	// Bits[3:0] = Metal Layer Changes

	switch ( ( pDSPCaps->TMDeviceVendorID >> 16 ) & 0xffff )
	{
		case constTMMANTM1000DeviceID :
		// TM1 processor
		CPUType = CPUTypeTM1000[(( pDSPCaps->TMClassRevisionID & 0x00000030 ) >> 4)];
		FABType = FabType[(( pDSPCaps->TMClassRevisionID & 0x000000c0 ) >> 6)];
		break;

		case constTMMANTM2000DeviceID :
		CPUType = CPUTypeTM2000[(( pDSPCaps->TMClassRevisionID & 0x00000030 ) >> 4)];
		FABType = FabType[(( pDSPCaps->TMClassRevisionID & 0x000000c0 ) >> 6)];
		break;

		case constTMMANTM1300DeviceID :
		CPUType = CPUTypeTM1300[(( pDSPCaps->TMClassRevisionID & 0x00000030 ) >> 4)];
		FABType = FabType[(( pDSPCaps->TMClassRevisionID & 0x000000c0 ) >> 6)];
		break;

		default :
		break;
	}

	if ( ( pDSPCaps->TMSubSystemID & 0x0000ffff ) == 0x1131 )
	{
		switch ( pDSPCaps->TMSubSystemID >> 16 ) 
		{
			case 0 : BoardType = "TM1_DEBUG"; break;
			case 1 : BoardType = "TM1_IREF"; break;
			case 3 : BoardType = "TM1100_DEBUG_1_0"; break;
			case 4 : BoardType = "TM1100_DEBUG_BGA_1_0"; break;
			case 6 : BoardType = "TM2000_DEBUG_1_0"; break;
			case 7 : BoardType = "TM1300_DEBUG"; break;
			case 8 : BoardType = "TM1300_IREF"; break;
			case 0xa : BoardType = "TM1_VCREF"; break;
			case 0x14 : BoardType = "TRICODEC"; break;
			case 0x1e : BoardType = "DTV_REF1"; break;
			case 0x1f : BoardType = "DTV_C1_1"; break;
			case 0x20 : BoardType = "DTV_REF2"; break;
			case 0x21 : BoardType = "DTV_REF3"; break;
			case 0x22 : BoardType = "DTV_TTR"; break;
			case 0x23 : BoardType = "DTV_TR"; break;
			case 0x24 : BoardType = "DTV_REF4"; break;

			default : BoardType = "UNKNOWN"; break;

		}
		
	}
	else
	{
		BoardType = "THIRD_PARTY";
	}

	sprintf((char *)szTemp,"%x",m_CurrentDSPNumber);        // To be changed to variable
	pTmgmonDlg->SetDlgItemText(IDC_NUM,(const char *)szTemp);


	sprintf( (char *)szTemp,"%s 1.%d %s",
		CPUType,
		pDSPCaps->TMClassRevisionID & 0x0000000f,
		FABType );

	pTmgmonDlg->SetDlgItemText(IDC_TYPE,(const char *)szTemp);

	sprintf((char *)szTemp,"0x%08x",
						pSDRAM->PhysicalAddress);
	pTmgmonDlg->SetDlgItemText(IDC_SDRAM,(const char *)szTemp);
	sprintf((char *)szTemp,"0x%08x",
						pSDRAM->Size);
	pTmgmonDlg->SetDlgItemText(IDC_SDRAM2,(const char *)szTemp);
	sprintf((char *)szTemp,"0x%08x",
						pSDRAM->MappedAddress);
	pTmgmonDlg->SetDlgItemText(IDC_SDRAM3,(const char *)szTemp);

	sprintf((char *)szTemp,"0x%08x",
						pMMIO->PhysicalAddress);
	pTmgmonDlg->SetDlgItemText(IDC_MMIO,(const char *)szTemp);
	sprintf((char *)szTemp,"0x%08x",
						pMMIO->Size);
	pTmgmonDlg->SetDlgItemText(IDC_MMIO2,(const char *)szTemp);
	sprintf((char *)szTemp,"0x%08x",
						pMMIO->MappedAddress);
	pTmgmonDlg->SetDlgItemText(IDC_MMIO3,(const char *)szTemp);
/* Add direct draw stuff here */
    	if(GetDisplayInfo())
        {
		    sprintf((char *)szTemp,"0x%08x",g_dwPhysicalAddress);
		    pTmgmonDlg->SetDlgItemText(IDC_VIDEOPHYSICALADDRESS,(const char *)szTemp);
		    sprintf((char *)szTemp,"%08u",g_dwStride);
		    pTmgmonDlg->SetDlgItemText(IDC_STRIDE,(const char *)szTemp);
		    sprintf((char *)szTemp,"%08u",g_dwPixelDepth);
		    pTmgmonDlg->SetDlgItemText(IDC_PIXELDEPTH,(const char *)szTemp);
        }
        else
        {
		    pTmgmonDlg->SetDlgItemText(IDC_VIDEOPHYSICALADDRESS,"Unknown");
		    pTmgmonDlg->SetDlgItemText(IDC_STRIDE,"Unknown");
		    pTmgmonDlg->SetDlgItemText(IDC_PIXELDEPTH,"Unknown");
        }

}

////////////////////////////////////////////////////////////////////////////////////
// new function
BOOL CTmmon::ExeLoad(char *filename,char *arguments)
{
	CWaitCursor wait;   // display wait cursor
	BOOL bReturn = TRUE;
	UInt32              ImageType,ImageEndian;


	wState = LD_PROCESS;

	strcpy(szInputString,filename);
	strcat(szInputString,arguments);

	// process
	UInt32  DSPStatus;
	TMStatus TMMANStatus;
	Int8    szErrorString[constTMManStringLength];

	tmmanDSPGetStatus ( m_CurrentDSPHandle, &DSPStatus );

	switch ( DSPStatus )
	{
		case constTMManDSPStatusRunning :
			tmmanDSPStop( m_CurrentDSPHandle );
			// signal the event that whacks tmrun
			HANDLE  hServerEvent;
			CHAR    szEventName[80];
			wsprintf( szEventName, "TMRunExitEvent%x", m_CurrentDSPNumber );

			if ( ( hServerEvent = OpenEvent ( EVENT_MODIFY_STATE, TRUE,
				szEventName ) ) != NULL )
			{
				SetEvent ( hServerEvent );
				CloseHandle (  hServerEvent );
			}
		break;

		default:
		break;

	}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲天堂av老司机| 欧美国产日韩精品免费观看| 天天射综合影视| 欧美色综合影院| 日韩影院精彩在线| 欧美大片日本大片免费观看| 经典三级一区二区| 亚洲国产经典视频| 在线免费观看视频一区| 亚洲午夜久久久久中文字幕久| 欧美乱妇20p| 狠狠色综合色综合网络| 国产精品污网站| 色久优优欧美色久优优| 日日摸夜夜添夜夜添亚洲女人| 日韩精品在线看片z| 床上的激情91.| 亚洲国产va精品久久久不卡综合 | 在线视频亚洲一区| 日韩av一区二区在线影视| 日韩视频免费观看高清完整版 | 久久综合九色综合97_久久久| 国产91富婆露脸刺激对白| 亚洲欧美另类综合偷拍| 51午夜精品国产| 成人黄色网址在线观看| 奇米精品一区二区三区在线观看一| 欧美www视频| 日本精品视频一区二区三区| 蜜臀av亚洲一区中文字幕| 欧美韩日一区二区三区四区| 欧美日韩成人一区| 粗大黑人巨茎大战欧美成人| 日韩电影一区二区三区四区| 国产精品系列在线| 欧美一级黄色录像| 99久久伊人精品| 麻豆高清免费国产一区| 亚洲精品中文在线| 久久亚洲一级片| 欧美日韩在线免费视频| 丁香六月综合激情| 免费人成在线不卡| 一区二区三区精品在线观看| 久久蜜桃av一区二区天堂| 99久久精品国产毛片| 亚洲愉拍自拍另类高清精品| 国产人妖乱国产精品人妖| 欧美日韩成人一区| 91国产视频在线观看| 国产精品一区二区免费不卡| 日本午夜精品一区二区三区电影 | 国产激情一区二区三区四区| 香港成人在线视频| 亚洲精品欧美综合四区| 国产清纯美女被跳蛋高潮一区二区久久w| 欧美日韩一级片在线观看| 丁香六月综合激情| 国产一区二区三区精品欧美日韩一区二区三区 | 国产视频一区二区在线| 欧美福利视频一区| 在线欧美日韩精品| 色综合天天做天天爱| 国产iv一区二区三区| 久久99国产精品尤物| 免费一级欧美片在线观看| 天天影视色香欲综合网老头| 亚洲一区在线观看免费| 一区二区三区精品在线| 亚洲成人中文在线| 国产精品久久久久久一区二区三区 | 偷窥国产亚洲免费视频| 亚洲欧美日韩精品久久久久| 国产精品萝li| 一区在线播放视频| 中文字幕一区不卡| 最新高清无码专区| 亚洲视频在线一区| 亚洲精品免费看| 亚洲欧美另类综合偷拍| 夜夜嗨av一区二区三区| 亚洲综合av网| 午夜久久电影网| 青椒成人免费视频| 久久精品国产精品亚洲综合| 久久99国产精品久久99| 国产乱人伦偷精品视频免下载| 亚洲色图视频网| 一区二区三区在线不卡| 亚洲国产va精品久久久不卡综合| 亚洲综合在线免费观看| 亚洲成人免费在线| 裸体健美xxxx欧美裸体表演| 国产一区二区三区久久悠悠色av| 成人小视频免费观看| 99久久99久久综合| 欧美日韩中字一区| 日韩一区二区精品在线观看| 精品成人免费观看| 国产精品视频在线看| 亚洲一区二区视频在线观看| 免费成人性网站| 国产乱对白刺激视频不卡| 9i在线看片成人免费| 欧美丝袜丝交足nylons| 欧美videos中文字幕| 国产精品毛片久久久久久久| 亚洲黄色av一区| 六月婷婷色综合| av在线一区二区| 欧美色网站导航| 久久天堂av综合合色蜜桃网| 亚洲视频每日更新| 日韩精品乱码免费| av一区二区三区| 欧美电影在哪看比较好| 国产欧美一区二区在线观看| 一个色在线综合| 国产在线麻豆精品观看| 在线免费观看成人短视频| 精品国产3级a| 一区二区三区国产精品| 国产又粗又猛又爽又黄91精品| 色伊人久久综合中文字幕| 日韩三级.com| 一个色综合网站| 国产iv一区二区三区| 91精品国产综合久久久蜜臀图片 | 看片网站欧美日韩| 91免费视频网| 精品第一国产综合精品aⅴ| 亚洲精选视频在线| 国产东北露脸精品视频| 6080亚洲精品一区二区| 亚洲精品日日夜夜| 成人自拍视频在线观看| 欧美一级在线视频| 夜夜嗨av一区二区三区网页| www.欧美色图| 久久婷婷国产综合精品青草| 男女视频一区二区| 欧美日本精品一区二区三区| 国产精品国产三级国产普通话三级| 蜜臀av一级做a爰片久久| 欧美日韩综合在线| 亚洲欧美韩国综合色| 成人国产亚洲欧美成人综合网| 26uuu精品一区二区| 美女视频一区在线观看| 欧美影视一区在线| 亚洲乱码国产乱码精品精小说| 国产精品69久久久久水密桃| 日韩欧美成人一区| 日产精品久久久久久久性色| 在线日韩国产精品| 一区二区久久久久| 91老师国产黑色丝袜在线| 国产精品素人一区二区| 夫妻av一区二区| 国产精品日韩成人| 福利电影一区二区| 日本一区二区免费在线观看视频| 国产精品小仙女| 久久精品一区二区| 国产毛片精品国产一区二区三区| 日韩免费一区二区| 精品中文字幕一区二区| 精品久久一区二区三区| 精品在线免费观看| 精品不卡在线视频| 国产精品一区在线观看乱码| 欧美极品aⅴ影院| 床上的激情91.| 亚洲欧美日韩国产另类专区| 91行情网站电视在线观看高清版| 亚洲欧美日韩国产一区二区三区| 色婷婷久久久久swag精品| 亚洲国产欧美在线人成| 欧美日韩视频在线观看一区二区三区| 亚洲小少妇裸体bbw| 欧美日韩国产高清一区二区三区 | 久久99久久久欧美国产| 精品91自产拍在线观看一区| 国产一区二区成人久久免费影院 | 久久综合一区二区| 国产乱子轮精品视频| 欧美激情艳妇裸体舞| 色噜噜狠狠色综合欧洲selulu| 婷婷综合另类小说色区| 欧美电影免费观看高清完整版在 | 欧美成人在线直播| 国产激情视频一区二区三区欧美| 中文字幕一区二区三区四区不卡 | 一区二区久久久久久| 91精品国产综合久久国产大片| 国产一区视频在线看| 国产精品视频一区二区三区不卡| 91麻豆免费视频| 美腿丝袜在线亚洲一区| 中文字幕第一区第二区|