30天自制操作系统day4

第四天的重点在于调用显卡BIOS中断,并使用其中断,从而使图形显示需求界面
但是连接之前的内容,发现还是有需要重新确认的地方

比如.sys文件,其实是由一个汇编编写从而生成的.bin文件与C语言编写生成的obj.文件再生成的镜像文件.hrb,拼接而成的,稍微有些绕,看一下,Makefile


可见,首先是C语言入口与其从属函数各自生成.obj,后连接生成映像.bim,再生成.hrb,然后执行两个copy命令,首先是与ahead.bin拼接,就生成.sys,其后与启动区拼接。
关于ahead,文中还未详细说明,但是应该是初始化及保存各中断或其他变量,类似于STM中的.startup启动文件。(需要以后详细观察)
关于屏幕的控制,主要分为三步:
1.在ahead文件中,启用中断10(显卡中断),并确认为调色板模式,AL中写13,进中断即可,此时屏幕会黑掉,但是怀疑只是初始化配置后,所用默认处清零的附加后果,主要目的还是通过写13配置成调色板模式。(毕竟还可以写入其他数配置成其他模式)
2.配置调色板色号。通过io函数向固定端口中写入各颜色配置,至于为什么书中说IO模式一定要用汇编函数,没有想明白,因为怀疑这东西应该就是一般的内存写法,用指针之类的(插一句额,因为一般操作系统的存在,是不允许向VRAM这种寄存器中写数的,只能通过系统文件这种方式直接动底层了),至于效果,其实是将各个颜色重新编号,定义成自己想要的模式。如果不采用重新配置调色板,并不影响使用,只是颜色不同了,区别如下,左图是有重新配置调色板后的,右图是没有的

可见并不影响使用,只是色号不同了
至于配置方法如下:


关中断之类的就不多说了,配置的时候一定要做的,怀疑是向端口03c9按顺序写入各RGB值即可。
3.向VRAM中各像素对应内存位置写入颜色即可,不写的默认是黑色。

猜你喜欢

转载自blog.csdn.net/qq_36125130/article/details/80339197