水到渠成:写一个扩展ROM程序
有了这么多理论知识,自己动手写一个可以启动的扩展ROM程序就不怎么难了(源代码ROM.ASM和TROM.ASM见附件)。
ROM.ASM程序分成两部分:前一部分编译后便是ROM映像;后一部分是则是将前面部分烧写到27C256(ROM)中去。
ROM映像分成3部分:
1) ROM头标和PCI数据结构
2) 初始化后继续保留在RAM中的代码。这段代码主要是中断98H的服务代码。
3) INIT初始化代码,这部分代码完成4项工作:显示一段字符串,以表示初始化代码运行正常;修改IVT中断向量表98H,将地址指向上面的正确位置;修改初始化代码长度,以便保留一定大小的代码在RAM中;进行计算和的重新计算。
系统启动后进入DOS,然后可以运行TROM——该程序仅仅调用中断98H——来检查保留在RAM中的代码是否正常。