📄 main.cpp
字号:
//main function
#include "FlashInf.h"
#include "Chipset.h"
#include "SelectRM.h"
#include "Memory.h"
#include "FlashDet.h"
#include "ROMType.h"
#include "Tools.h"
#include "file.h"
#include "profile.h"
#include <string.h>
#include <stdio.h>
#include <dos.h>
int main()
{
char Buffer[128];
CHIPSETINFO MyChipSet;
XMSINFO XMSInfo;
FLASHCHIPINFO FlashInfo;
LONGINT ROMBase = 0;
LONGINT FlashSize, FlashBase, MaxBlock, OldBIOS, NewBIOS;
LONGINT TempBuf;
LONGINT X;
BYTE BIOSBlk[32768];
if(GetChipSetInfo(&MyChipSet))
{
printf("\nNorth Info: %04X %04X %04X : %s" , MyChipSet.NorthId,MyChipSet.NorthMan ,MyChipSet.NorthRev, MyChipSet.NorthInfo);
printf("\nSouth Info: %04X %04X %04X : %s" , MyChipSet.SouthId,MyChipSet.SouthMan ,MyChipSet.SouthRev, MyChipSet.SouthInfo);
printf("\nChipInfo is: %s\n", MyChipSet.ChipInfo);
}
else
{
printf("Get PCI info Error");
return 0;
}
if(!InitializeMem(&XMSInfo))
{
printf("Initialize Memory Error\n");
return 0;
}
if(!FlatRealOn())
{
printf("Enter Flat Real Mode Error \n");
return 0;
}
else
{
printf("Enter Flat Real Mode ok \n");
}
if(XMSInfo.XMSBlockLeft == -2)
{
printf("Can't Find XMS Manager , Allocate Mem in High\n");
}
if(!AllocateHiMem(&XMSInfo))
{
printf("Allocate HiMem Error \n");
return 0;
}
{
printf("Memory Information: \n");
sprintf(Buffer , "Mem Pos:%08lX ,Left:%08lX\n" ,
XMSInfo.XMSBlockPos , XMSInfo.XMSBlockLeft);
printf(Buffer);
}
printf("Enable Rom with ChipSet Information\n");
ROMEnable(&MyChipSet , TRUE);
FlashDetect(&FlashInfo, &ROMBase);
{
printf("Flash ROM Chip: %s %s\n", FlashInfo.Manuf, FlashInfo.Name);
printf("Organisation: ");
sprintf(Buffer, "ROMBase: %08lX\n", ROMBase);
printf(Buffer);
}
ROMType( &FlashInfo, ROMBase, &(XMSInfo.XMSBlockLeft) , &(XMSInfo.XMSBlockPos), &FlashSize, &FlashBase, &MaxBlock, &OldBIOS, &NewBIOS, &TempBuf);
{
printf("FlashSize: %08lX\n", FlashSize);
printf("FlashBase: %08lX\n", FlashBase);
printf("MaxBlock: %08lX\n", MaxBlock);
printf("NewBIOS: %08lX\n", NewBIOS);
printf("OldBIOS: %08lX\n", OldBIOS);
// printf("TempBuf: %08lX\n", TempBuf);
}
//Backup BIOS Image
LONGINT OldSeg, OldOfs;
OldSeg = LONGINT( FP_SEG( &FlashBase ) );
OldOfs = LONGINT( FP_OFF( &FlashBase ) );
MoveLinBlockD( FlashBase, OldBIOS, FlashSize );
//Save BIOS to file: \backup.bin
FILE *fBIOS;
fBIOS = fopen(BIOS_FILE_NAME, "wb");
if ( fBIOS == NULL )
{
printf("Cannot open file: backup.bin.\n");
return 1;
}
X = 0;
while( X < FlashSize )
{
LONGINT Block, BlockSeg, BlockOfs;
BlockSeg = LONGINT( FP_SEG( BIOSBlk ) );
BlockOfs = LONGINT( FP_OFF( BIOSBlk ) );
Block = (BlockSeg << 4) + BlockOfs;
// MoveLinBlockD( X + OldBIOS, LONGINT( Seg( BIOSblk ) ) << 4 + LONGINT( Ofs( BIOSBlk ) ), 32768 );
MoveLinBlockD( X + OldBIOS, Block, 32768 );
// BlockWrite( BIOS_FILE_NAME, BIOSBlk, 32768 );
fwrite( &BIOSBlk, sizeof(BIOSBlk), 1, fBIOS );
X += 32768;
}
fclose(fBIOS);
printf("Closing ...");
///debug Code
FlatRealOff();
CloseXMSMemory(&XMSInfo);
///debug Code
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -