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

📄 pci.cpp

📁 djgpp bt878 capture for DOS
💻 CPP
📖 第 1 页 / 共 2 页
字号:
BYTE PCI::GetBistReg(int funct_num, int bus_num)
{
    DWORD value;
        
    if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;
    
    return((value>>24) & 0xFF);
}

/////////////////////////////////////////////////////
BYTE PCI::GetHeaderType(int funct_num, int bus_num)
{
    DWORD value;
        
    if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;
    
    return((value>>16) & 0xFF);
}

/////////////////////////////////////////////////////
BYTE PCI::GetLatencyTimer(int funct_num, int bus_num)
{
    DWORD value;
        
    if(status != 0)
        return PCI_FAIL;

        
    if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;
    
    return((value>>8) & 0xFF);
}

/////////////////////////////////////////////////////
BYTE PCI::GetCacheLineSize(int funct_num, int bus_num)
{
    DWORD value;
        
    if(ReadConfigDWORD(12, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;
    
    return(value & 0xFF);
}

/////////////////////////////////////////////////////
DWORD PCI::GetBaseAddress(int address=0, int funct_num, int bus_num)
{
    DWORD value;

    if(address < 0 || address > 5)
        address = 0;

    if(ReadConfigDWORD(16+address*4, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00000000;

    return(value);
}

/////////////////////////////////////////////////////
DWORD PCI::GetCardBusCISPointerReg(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(40, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00000000;

    return(value);
}

/////////////////////////////////////////////////////
WORD PCI::GetSubsystemID(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(44, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x0000;

    return((value>>16) & 0xFFFF);
}

/////////////////////////////////////////////////////
WORD PCI::GetSubsystemVendorID(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(44, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x0000;

    return(value & 0xFFFF);
}

/////////////////////////////////////////////////////
DWORD PCI::GetROMBaseAddress(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(48, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00000000;

    return(value);
}

/////////////////////////////////////////////////////
BYTE PCI::GetMaxLat(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;

    return((value>>24) & 0xFF);
}

/////////////////////////////////////////////////////
BYTE PCI::GetMinGnt(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;

    return((value>>16) & 0xFF);
}

/////////////////////////////////////////////////////
BYTE PCI::GetInterruptPin(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;

    return((value>>8) & 0xFF);
}

/////////////////////////////////////////////////////
BYTE PCI::GetInterruptLine(int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(60, &value, funct_num, bus_num) == PCI_FAIL)
        return 0x00;

    return(value & 0xFF);
}

/////////////////////////////////////////////////////
void PCI::SetCommandReg(WORD set_value, int funct_num, int bus_num)
{
    DWORD value;

    if(ReadConfigDWORD(4, &value, funct_num, bus_num) == PCI_FAIL)
        return;

    value = (value & 0xFFFF0000) | set_value;
    
    WriteConfigDWORD(4, value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
BOOL PCI::IsIOAccess(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x001) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsMemoryAccess(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x002) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsMaster(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x004) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsSpecialCycle(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x008) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsMemoryWriteInval(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x010) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsVGAPaletteSnoop(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x020) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsParityError(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x040) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsWaitCycle(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x080) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsSystemError(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x100) ? TRUE : FALSE);
}

/////////////////////////////////////////////////////
BOOL PCI::IsFastBackToBack(int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    return((value & 0x200) ? TRUE : FALSE);
}


/////////////////////////////////////////////////////
void PCI::SetIOAccess(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFFFE;

    if(set_value != FALSE)
        value |= 0x001;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetMemoryAccess(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFFFD;

    if(set_value != FALSE)
        value |= 0x002;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetMaster(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFFFB;

    if(set_value != FALSE)
        value |= 0x004;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetSpecialCycle(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFFF7;

    if(set_value != FALSE)
        value |= 0x008;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetMemoryWriteInval(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFFEF;

    if(set_value != FALSE)
        value |= 0x010;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetVGAPaletteSnoop(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFFDF;

    if(set_value != FALSE)
        value |= 0x020;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetParityError(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFFBF;

    if(set_value != FALSE)
        value |= 0x040;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetWaitCycle(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFF7F;

    if(set_value != FALSE)
        value |= 0x080;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetSystemError(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFEFF;

    if(set_value != FALSE)
        value |= 0x100;

    SetCommandReg(value, funct_num, bus_num);
}

/////////////////////////////////////////////////////
void PCI::SetFastBackToBack(BOOL set_value, int funct_num, int bus_num)
{
    WORD value;

    value = GetCommandReg(funct_num, bus_num);

    value &= 0xFDFF;

    if(set_value != FALSE)
        value |= 0x200;

    SetCommandReg(value, funct_num, bus_num);
}

⌨️ 快捷键说明

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