- 30天自制操作系統
- (日)川合秀實
- 697字
- 2020-03-11 14:01:44
7 確認操作系統的執行情況
怎么讓它表現呢?如果還只是輸出一條信息的話就太沒意思了。考慮到將來我們肯定要做成Windows那樣的畫面,所以這次就來切換一下畫面模式。我們這次做成的文件,就是projects/03_day下的harib00g。
本次的haribote.nas
; haribote-os ; TAB=4 ORG 0xc200 ; 這個程序將要被裝載到內存的什么地方呢? MOV AL,0x13 ; VGA顯卡,320x200x8位彩色 MOV AH,0x00 INT 0x10 fin: HLT JMP fin
設定AH=0x00后,調用顯卡BIOS的函數,這樣就可以切換顯示模式了。我們還可以在支持網頁(AT)BIOS里看看。
設置顯卡模式(video mode)
? AH=0x00;
? AL=模式:(省略了一些不重要的畫面模式)
0x03:16色字符模式,80× 25
0x12:VGA圖形模式,640× 480× 4位彩色模式,獨特的4面存儲模式
0x13:VGA圖形模式,320× 200× 8位彩色模式,調色板模式
0x6a:擴展VGA圖形模式,800× 600× 4位彩色模式,獨特的4面存儲模式
(有的顯卡不支持這個模式)
? 返回值:無
參照以上說明,我們暫且選擇0x13畫面模式,因為8位彩色模式可以使用256種顏色,這一點看來不錯。
如果畫面模式切換正常,畫面應該會變為一片漆黑。也就是說,因為可以看到畫面的變化,所以能判斷程序是否運行正常。由于變成了圖形模式,因此光標會消失。
另外,這次還順便修改了其他一些地方。首先將ipl.nas的文件名變成了ipl10.nas。這是為了提醒大家這個程序只能讀入10個柱面。另外,想要把磁盤裝載內容的結束地址告訴給haribote.sys,所以我們在“JMP 0xc200”之前,加入了一行命令,將CYLS的值寫到內存地址0x0ff0中。這樣啟動區程序就算完成了。

趕緊“make run”看看。
哦哦,畫面一片漆黑。運行順利!真是太好了!
有一點要先說明一下,現在我們把啟動區里與haribote.sys沒有關系的前后部分也讀了進來,所以啟動時很慢。可能會有人覺得這樣做很浪費時間,但對于我們的紙娃娃操作系統來說,裝載啟動區這些部分,以后會起大作用的,所以暫時先忍耐一下吧。
- Windows Vista基礎與應用精品教程
- 高性能Linux服務器構建實戰:系統安全、故障排查、自動化運維與集群架構
- 深入理解eBPF與可觀測性
- 細說Linux基礎知識
- Kali Linux 2018:Windows Penetration Testing
- OpenStack系統架構設計實戰
- 云原生落地:產品、架構與商業模式
- Kali Linux高級滲透測試(原書第3版)
- Windows Vista終極技巧金典
- Linux應用大全 基礎與管理
- Linux內核分析及應用
- Mastering Sass
- Implementing Domain-Specific Languages with Xtext and Xtend(Second Edition)
- BuddyPress Theme Development
- 用“芯”探核:基于龍芯的Linux內核探索解析