代码仓库地址:https://github.com/freedom-xiao007/operating-system
简介
上篇中我们在屏幕上画出了界面的大致轮廓,系统有了点模样,本篇继续跟着书籍,让程序中的字符串显示在屏幕上
效果展示
先放最终的效果,可以看到显示了字符串,非常nice,如下图:
字体制作
以前一直疑惑为啥在桌面中需要字体,打印字符串不都是基本的吗?
到这步才知道在桌面系统中,显示字符已经是图形化的了,是以填充像素的方式显示的字符串
搞自己的字体太麻烦了,我们直接抄《30天自制操作系统》中字体,但根据我们当前的情况编译上有些不同的地方
首先把书中的源txt和两个工具复制到我们的工程中,即
- hankaku.txt
- makefont.exe
- bin2obj.exe
这三个东西也上传仓库中了
接下来的制作字体基本步骤大致如下:
- 1.将txt编程bin
- 2.将bin编程obj
- 3.将obj变成nasm汇编
- 4.合并到kernel.asm中
一键运行脚本根据当前情况进行相关命令的新增和修改,完整如下,对命令添加了相关的注释:
D:\\software\\NASM\\nasm.exe bootsect.asm -o bootsect.bin -l bootsect.lst
D:\\software\\NASM\\nasm.exe setup.asm -o setup.bin -l setup.lst
@REM 主函数编译
gcc -m32 -fno-asynchronous-unwind-tables -s -O2 -c -o .\\c\\start.o .\\c\\start.c
D:\\software\\objconv\\objconv.exe -fnasm .\\c\\start.o .\\c\\nasm\\start.asm
@REM 字体文件编译
.\makefont.exe .\hankaku.txt .\hankaku.bin
.\bin2obj.exe .\hankaku.bin .\hankaku.obj _hankaku
D:\\software\\objconv\\objconv.exe -fnasm .\hankaku.obj .\\c\\nasm\\hankaku.asm
@REM 处理生成的nasm不合理的的地方
D:\\software\\python3\\python.exe E:\\code\\python\\self\\tools\\tools\\objconv2nasm_clearn.py
@REM 合并文件,编译运行
copy /B head.asm+.\\c\\clean\\start.asm+func.asm+.\\c\\clean\\hankaku.asm kernel.asm
D:\\software\\NASM\\nasm.exe kernel.asm -o kernel.bin -l kernel.lst
copy /B bootsect.bin+setup.bin+kernel.bin os.iso
D:\\software\\Bochs-2