MSTR是《自己动手写嵌入式操作系统》的源码,又名"Hello China"。MSTR包括BootSect.bin、RealInit.bin、MiniKer.bin和Master.bin四部分。MSTR的加载设备为软盘,但是没有设计软盘格式,镜像的加载都是直接从固定扇区中加载的。
BootSect.bin为512字节,固化在软盘的启动扇区。它首先将自身从0x07c0移动到0x9f00,然后跳转到新映像的相关位置开始执行。先显示相关信息,然后将RealInit.bin、MiniKer.bin和Master.bin三部分载入内存。这三部分保存在软盘中,从第三扇区开始(第二扇区保留),将被原样加载到其实位置为0x1000的内存区域。加载完毕后跳转到RealInit.bin处开始执行。
RealInit.bin显示相关信息后,开始初始化CRT、KEYBOARD、DMA、8259、CLOCK和系统参数。然后开启20号地址线,装载gdt,显示相关信息,关中断,进入保护模式。然后跳转到MiniKer.bin处开始执行。目前对硬件的初始化保留未用,默认的gdt有两个——4GB的平坦代码段和4GB的平坦数据段。
Miniker.bin首先将自身和Master.bin从0x2000搬运到0x100000处(由于此时20号地址线已开,可以访问到0x100000以上的内存了)。然后装载新的gdt,它的所有段都是平坦模式的,包括代码段、数据段、堆栈段、附加段和视频段。接着初始化相关的段寄存器,填充相关的idt并装载,然后初始化8259a,开中断,最后跳转到Master.bin处开始执行。Miniker.bin中包含了一个显示驱动程序和一个键盘驱动程序,供Master.bin直接调用。