结构体声明
struct BOOTINFO
{
char cCyls;
char cLeds;
char cVmode;
char cReserve;
short sScrnx;
short sScrny;
unsigned char * pVram;
};
新增代码
void HariMain(void)
{
unsigned char *pAdd;
int nXsize ;
int nYsize;
struct BOOTINFO *pBootIf = (struct BOOTINFO *)0x0ff0;
init_palette(); //设定调色板
//从内存中获取规格
nXsize = pBootIf->sScrnx;
nYsize = pBootIf->sScrny;
pAdd = pBootIf->pVram;
Init_Screen(pAdd, nXsize, nYsize);
for (;;)
{
io_hlt();
}
}
把显示画面背景的部分 独立了出来
void Init_Screen(unsigned char *pAdd, int nXsize, int nYsize)
{
DrawBoxFillColor8(pAdd, nXsize, COL8_LightDarkBlue, 0, 0, nXsize - 1, nYsize - 29);
DrawBoxFillColor8(pAdd, nXsize, COL8_BigGrey, 0, nYsize - 28, nXsize - 1, nYsize - 28);
DrawBoxFillColor8(pAdd, nXsize, COL8_WHITE, 0, nYsize - 27, nXsize - 1, nYsize - 27);
DrawBoxFillColor8(pAdd, nXsize, COL8_BigGrey, 0, nYsize - 26, nXsize - 1, nYsize - 1);
DrawBoxFillColor8(pAdd, nXsize, COL8_WHITE, 3, nYsize - 24, 59, nYsize - 24);
DrawBoxFillColor8(pAdd, nXsize, COL8_WHITE, 2, nYsize - 24, 2, nYsize - 4);
DrawBoxFillColor8(pAdd, nXsize, COL8_DarkGrey, 3, nYsize - 4, 59, nYsize - 4);
DrawBoxFillColor8(pAdd, nXsize, COL8_DarkGrey, 59, nYsize - 23, 59, nYsize - 5);
DrawBoxFillColor8(pAdd, nXsize, COL8_BLACK, 2, nYsize - 3, 59, nYsize - 3);
DrawBoxFillColor8(pAdd, nXsize, COL8_BLACK, 60, nYsize - 24, 60, nYsize - 3);
DrawBoxFillColor8(pAdd, nXsize, COL8_DarkGrey, nXsize - 47, nYsize - 24, nXsize - 4, nYsize - 24);
DrawBoxFillColor8(pAdd, nXsize, COL8_DarkGrey, nXsize - 47, nYsize - 23, nXsize - 47, nYsize - 4);
DrawBoxFillColor8(pAdd, nXsize, COL8_WHITE, nXsize - 47, nYsize - 3, nXsize - 4, nYsize - 3);
DrawBoxFillColor8(pAdd, nXsize, COL8_WHITE, nXsize - 3, nYsize - 24, nXsize - 3, nYsize - 3);
}