上一章的GDT/IDT内容结束的没头没尾的,这一章会接着介绍。
这一章做了这么两件事情,一是将目前略显冗余的源文件bootpack.c整理了一下,分成了几个具有不同功能的源文件。二是继续上一章节的内容,在初始化中断向量表之后,设置新的中断关联鼠标和键盘。
我觉得这一章的内容虽然短小,却还是挺重要的。
一 分割编译
目前的源文件内容已经比较多了,包含了GDT/IDT的配置初始化,调色板的初始化,屏幕(尺寸等)的初始化,还有绘制光标、显示字符等应用部分。
作者将bootpack.c分成了三个部分:
这边的分割不难,只是对应的Makefile也要对应进行修改,原先是直接编译bootpack.c的内容,现在要编译三个源文件的内容并整合成一个:
在这个过程中,使用通配符%来使得Makefile文件精简化:
%.gas : %.c Makefile
$(CC1) -o $*.gas $*.c
%.nas : %.gas Makefile
$(GAS2NASK) $*.gas $*.nas
%.obj : %.nas Makefile
$(NASK) $*.nas $*.obj $*.lst
二 中断处理
中断处理包含两个部分,一是初始化PIC、二是中断处理程序的制作。下面分别介绍:
【1】初始化PIC(programmable interrupt controller,可编程中断控制器)
在设计上,CPU只能单独处理一个中断,而PIC是将8个中断信号1集合成一个中断信号的装置。PIC监视着输入管脚 的8个中断信号,只要有一个中断信号进来,就将唯一的输出管脚信号变成ON,并通知给CPU:
上面的IRQ即中断请求,一个CPU有16个IRQ,一般都预分配给以下几个硬件使用:
中断请求 | 硬件设备 |
IRQ0 | 系统计时器 |
IRQ1 | 键盘 |
IRQ2 |