⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stdpciparams.cpp

📁 The PCI Local bus concept was developed to break the PC data I/O bottleneck and clearly opens the d
💻 CPP
📖 第 1 页 / 共 3 页
字号:
				}
			}
		}
		else {

			if( !m_Radio_BADDR_0.GetCheck() ) {
				m_Combo_NVRAM_LOCATION.EnableWindow( TRUE );
				m_Combo_NVRAM_PREFETCH.EnableWindow( TRUE );
			}

			data = data & 0x3FFFFFFC;
			for( i=0 ; i < NUMBER_MEM_BASE_ADDR ; i++ ) {
				if( ((membase_vals[i] ^ 0x3FFFFFFC) & data) != 0 ) {
					if( i != 0 )
						j = i - 1;
					break;
				}
//				if( membase_vals[i] == data ) {
//					j = i;
//					break;
//				}
			}
		}

		m_Combo_NVRAM_SIZE.SetCurSel( j );

	}
	else {

		m_Combo_NVRAM_LOCATION.EnableWindow( FALSE );
		m_Combo_NVRAM_PREFETCH.EnableWindow( FALSE );
		m_Combo_NVRAM_LOCATION.EnableWindow( FALSE );
		m_Combo_NVRAM_PREFETCH.EnableWindow( FALSE );
		m_Combo_NVRAM_WIDTH.EnableWindow( FALSE );
		m_Combo_NVRAM_SIZE.EnableWindow( FALSE );

		//m_Combo_NVRAM_LOCATION.EnableWindow( TRUE );
		//m_Combo_NVRAM_PREFETCH.EnableWindow( TRUE );

		m_Combo_NVRAM_TYPE.SetCurSel( 2 );
		//m_Combo_NVRAM_LOCATION.SetCurSel( 4 );
		//m_Combo_NVRAM_PREFETCH.SetCurSel( 2 );
		//m_Combo_NVRAM_WIDTH.SetCurSel( 4 );
		//m_Combo_NVRAM_SIZE.SetCurSel( last_size_index );
	}


}

UINT32 CStdPCIParams::GetCurrentBADDRIndex( void )
{

	UINT32 index;

	index = 0;

//	if( m_Radio_BADDR_0.GetCheck() )
//		index = 0x50;
	if( m_Radio_BADDR_1.GetCheck() )
		index = 1;
	if( m_Radio_BADDR_2.GetCheck() )
		index = 2;
	if( m_Radio_BADDR_3.GetCheck() )
		index = 3;
	if( m_Radio_BADDR_4.GetCheck() )
		index = 4;
	if( m_Radio_BADDR_5.GetCheck() )
		index = 5;

	return index;

}

UINT32 CStdPCIParams::GetCurrentBADDRData( void )
{

	UINT32 index,data;

	index = GetCurrentBADDRIndex();
	data = cur_data[index];

	return data;

}

void CStdPCIParams::SetCurrentBADDRData( UINT32  data )
{

	UINT32 index;

	index = GetCurrentBADDRIndex();
	cur_data[index] = data;

}

void CStdPCIParams::SetAllCurrentBADDRData( void )
{

	int i;
	char *cptr,*sptr;

	if( pbuffer ) {
		sptr = (char *) &pbuffer[0x50];
		for( i=0 ; i < 6 ; i++ ) {

			cptr = (char *) &cur_data[i];

			*cptr++ = *sptr++;
			*cptr++ = *sptr++;
			*cptr++ = *sptr++;
			*cptr = *sptr++;
		}
	}
	else {
		for( i=0 ; i < 6 ; i++ )
			cur_data[i] = 0;
	}
}

void CStdPCIParams::SetAllCurrentLOC45Data( void )
{

	if( pbuffer )
		loc45_cur_data = pbuffer[0x45];
	else
		loc45_cur_data = 0x01;

}

void CStdPCIParams::UpdateLOC45Data( void )
{

	// Update the display data based on nvRAM
	sprintf( (char *)&sztemp,"%02x", loc45_cur_data );
	m_Edit_LOC45_VALUE.SetWindowText( sztemp );

	m_Combo_NVRAM_RDRETRY.SetCurSel( (loc45_cur_data >> 1) & 0x01 );

	m_Combo_NVRAM_WRMODE.SetCurSel( (loc45_cur_data >> 2) & 0x01 );

	m_Combo_NVRAM_LAT_TIMER.SetCurSel( loc45_cur_data & 0x01 );

	if( loc45_cur_data & 0x080 )
		m_Check_BUS_MASTER.SetCheck( TRUE );
	else
		m_Check_BUS_MASTER.SetCheck( FALSE );
	
}

char CStdPCIParams::GetCurrentLOC45Data( void )
{

	return loc45_cur_data;

}

void CStdPCIParams::SetCurrentLOC45Data( char  data )
{

	loc45_cur_data = data;

}


void CStdPCIParams::SetAllCurrentGeneralData( void )
{

	int i;
	UINT32 data;
	char *cptr,*sptr;
	unsigned short *wptr;
	unsigned int *dwptr;

	if( pbuffer ) {
		dwptr = (unsigned int *) &pbuffer[0x40];
		wptr = (unsigned short *) &pbuffer[0x40];
		cptr = (char *) &pbuffer[0x40];

		sprintf( sztemp,"%04x",wptr[0x00/2] & 0x0ffff );
		m_Edit_VID.SetWindowText( sztemp );
		sprintf( sztemp,"%04x",wptr[0x02/2] & 0x0ffff );
		m_Edit_DID.SetWindowText( sztemp );



//		sprintf( sztemp,"%04x",wptr[0x04/2] & 0x0ffff );
//		m_Edit_PCICMD.SetWindowText( sztemp );
//
//		if( wptr[0x04/2] & 0x0100 )
//			m_Check_SERR_ENABLE.SetCheck( TRUE );
//		else
//			m_Check_SERR_ENABLE.SetCheck( FALSE );
//
//		if( wptr[0x04/2] & 0x040 )
//			m_Check_PERR_ENABLE.SetCheck( TRUE );
//		else
//			m_Check_PERR_ENABLE.SetCheck( FALSE );
//
//		if( wptr[0x04/2] & 0x02 )
//			m_Check_MEM_ACCESS_ENABLE.SetCheck( TRUE );
//		else
//			m_Check_MEM_ACCESS_ENABLE.SetCheck( FALSE );
//
//		if( wptr[0x04/2] & 0x01 )
//			m_Check_IO_ACCESS_ENABLE.SetCheck( TRUE );
//		else
//			m_Check_IO_ACCESS_ENABLE.SetCheck( FALSE );
//
//
//
//		sprintf( sztemp,"%04x",wptr[0x06/2] & 0x0ffff );
//		m_Edit_PCISTS.SetWindowText( sztemp );
		
		sprintf( sztemp,"%02x",cptr[0x08] & 0x0ff );
		m_Edit_RID.SetWindowText( sztemp );


		data = cptr[0x0b] & 0x0ff;
		data = (data << 8) | (cptr[0x0a] & 0x0ff);
		data = (data << 8) | (cptr[0x09] & 0x0ff);
		sprintf( sztemp,"%06x",data );
		m_Edit_CLCD.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x09] & 0x0ff );
		m_Edit_CLCD_PROG_IF.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x0a] & 0x0ff );
		m_Edit_CLCD_SUB_CLASS.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x0b] & 0x0ff );
		m_Edit_CLCD_BASE_CLASS.SetWindowText( sztemp );


//		sprintf( sztemp,"%02x",cptr[0x0c] & 0x0ff );
//		m_Edit_CALN.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x0d] & 0x0ff );
		m_Edit_LAT.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x0e] & 0x0ff );
		m_Edit_HDR.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x0f] & 0x0ff );
		m_Edit_BIST.SetWindowText( sztemp );


		sprintf( sztemp,"%04x",wptr[0x2c/2] & 0x0ffff );
		m_Edit_SVID.SetWindowText( sztemp );
		sprintf( sztemp,"%04x",wptr[0x2e/2] & 0x0ffff );
		m_Edit_SDID.SetWindowText( sztemp );

		
		sprintf( sztemp,"%04x",dwptr[0x30/4] );
		m_Edit_XROM.SetWindowText( sztemp );
		if( dwptr[0x30/4] & 1 )
			m_Check_ADDR_DECODE_ENABLE.SetCheck( TRUE );
		else
			m_Check_ADDR_DECODE_ENABLE.SetCheck( FALSE );


		sprintf( sztemp,"%02x",cptr[0x3c] & 0x0ff );
		m_Edit_INTLN.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x3d] & 0x0ff );
		m_Edit_INTPIN.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x3e] & 0x0ff );
		m_Edit_MINGNT.SetWindowText( sztemp );

		sprintf( sztemp,"%02x",cptr[0x3f] & 0x0ffff );
		m_Edit_MAXLAT.SetWindowText( sztemp );

	}
	else {
	}

}

void CStdPCIParams::SetCurrentGeneralData( char  data )
{


}

void CStdPCIParams::UpdateGeneralData( void )
{

}


/////////////////////////////////////////////////////////////////////////////
// CStdPCIParams message handlers

void CStdPCIParams::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	if( pMain ) {
		pMain->KillWindow( IDD_DIALOG_PCI_PARAMETERS );
		pMain->m_Button_PCI_PARAMETERS.EnableWindow(TRUE);
	}

	CDialog::OnCancel();
}

void CStdPCIParams::OnRadioBaddr0() 
{
	// TODO: Add your control notification handler code here
	m_Radio_BADDR_0.SetCheck( TRUE );
	m_Radio_BADDR_1.SetCheck( FALSE );
	m_Radio_BADDR_2.SetCheck( FALSE );
	m_Radio_BADDR_3.SetCheck( FALSE );
	m_Radio_BADDR_4.SetCheck( FALSE );
	m_Radio_BADDR_5.SetCheck( FALSE );

	UpdateBADDRData();


}

void CStdPCIParams::OnRadioBaddr1() 
{
	// TODO: Add your control notification handler code here
	m_Radio_BADDR_0.SetCheck( FALSE );
	m_Radio_BADDR_1.SetCheck( TRUE );
	m_Radio_BADDR_2.SetCheck( FALSE );
	m_Radio_BADDR_3.SetCheck( FALSE );
	m_Radio_BADDR_4.SetCheck( FALSE );
	m_Radio_BADDR_5.SetCheck( FALSE );
	
	UpdateBADDRData();

}

void CStdPCIParams::OnRadioBaddr2() 
{
	// TODO: Add your control notification handler code here
	m_Radio_BADDR_0.SetCheck( FALSE );
	m_Radio_BADDR_1.SetCheck( FALSE );
	m_Radio_BADDR_2.SetCheck( TRUE );
	m_Radio_BADDR_3.SetCheck( FALSE );
	m_Radio_BADDR_4.SetCheck( FALSE );
	m_Radio_BADDR_5.SetCheck( FALSE );
	
	UpdateBADDRData();
	
}

void CStdPCIParams::OnRadioBaddr3() 
{
	// TODO: Add your control notification handler code here
	m_Radio_BADDR_0.SetCheck( FALSE );
	m_Radio_BADDR_1.SetCheck( FALSE );
	m_Radio_BADDR_2.SetCheck( FALSE );
	m_Radio_BADDR_3.SetCheck( TRUE );
	m_Radio_BADDR_4.SetCheck( FALSE );
	m_Radio_BADDR_5.SetCheck( FALSE );
	
	UpdateBADDRData();
	
}

void CStdPCIParams::OnRadioBaddr4() 
{
	// TODO: Add your control notification handler code here
	m_Radio_BADDR_0.SetCheck( FALSE );
	m_Radio_BADDR_1.SetCheck( FALSE );
	m_Radio_BADDR_2.SetCheck( FALSE );
	m_Radio_BADDR_3.SetCheck( FALSE );
	m_Radio_BADDR_4.SetCheck( TRUE );
	m_Radio_BADDR_5.SetCheck( FALSE );
	
	UpdateBADDRData();
	
}

void CStdPCIParams::OnRadioBaddr5() 
{
	// TODO: Add your control notification handler code here
	m_Radio_BADDR_0.SetCheck( FALSE );
	m_Radio_BADDR_1.SetCheck( FALSE );
	m_Radio_BADDR_2.SetCheck( FALSE );
	m_Radio_BADDR_3.SetCheck( FALSE );
	m_Radio_BADDR_4.SetCheck( FALSE );
	m_Radio_BADDR_5.SetCheck( TRUE );
	
	UpdateBADDRData();
	
}

void CStdPCIParams::OnButtonWriteBaddr() 
{
	// TODO: Add your control notification handler code here
	UINT32 data,index;
	char *dptr,*sptr;

	m_Edit_BADDRT_VALUE.GetWindowText( sztemp, sizeof( sztemp ) - 1 );
	data = pmMain->atoh( sztemp );

	SetCurrentBADDRData( data );

	if( pbuffer ) {
		index = GetCurrentBADDRIndex();
		dptr = (char *)&pbuffer[0x50 + (index * 4)];
		sptr = (char *)&cur_data[index];

		*dptr++ = *sptr++;
		*dptr++ = *sptr++;
		*dptr++ = *sptr++;
		*dptr = *sptr;

		pMain->data_dirty = TRUE;

	}

	pMain->DisplayData();
	UpdateBADDRData();

}

void CStdPCIParams::OnSelchangeComboNvramType() 
{
	// TODO: Add your control notification handler code here
	UINT32 index,data;

	index = m_Combo_NVRAM_TYPE.GetCurSel();
	//if( index > 1 )	// Disabled (index 2)
	//	index = 0;

	if( index == 2 ) {
		index = 0;
		data = 0;
	}
	else {
		data = GetCurrentBADDRData();
		if( data == 0 ) {
			if( index == 0 )
				data = 0xfffffff0;
			else
				data = 0xfffffffc;
		}
	}

	data = (data & 0xfffffffe) | index;

	SetCurrentBADDRData( data );

	SetSizeByType();

	UpdateBADDRData();

⌨️ 快捷键说明

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