1 接收启动信息(harib02a)
我们今天从哪儿开始讲呢?现在“纸娃娃操作系统”的外观已经有了很大的进步,所以下面做些内部工作吧。
到昨天为止,在bootpack.c里的,都是将0xa0000呀,320、200等数字直接写入程序,而本来这些值应该从asmhead.nas先前保存下来的值中取。如果不这样做的话,当画面模式改变时,系统就不能正确运行。
所以我们就试着用指针来取得这些值。顺便说一下,binfo是bootinfo的缩写,scrn是screen(画面)的缩写。
本次的HariMain节选
void HariMain(void)
{
char *vram;
int xsize, ysize;
short *binfo_scrnx, *binfo_scrny;
int *binfo_vram;
init_palette();
binfo_scrnx = (short *) 0x0ff4;
binfo_scrny = (short *) 0x0ff6;
binfo_vram = (int *) 0x0ff8;
xsize = *binfo_scrnx;
ysize = *binfo_scrny;
vram = (char *) *binfo_vram;
这里出现的0x0ff4之类的地址到底是从哪里来的呢?其实这些地址仅仅是为了与asmhead. nas保持一致才出现的。
另外,我们把显示画面背景的部分独立出来,单独做成一个函数init_screen。独立的功能做成独立的函数,这样程序读起来要容易一些。
好了,做完了。执行一下吧。……嗯,暂时好像没什么问题。只是没什么意思,因为画面显示内容没有变化。