今天大致把 BIOS 到 GRUB 的路徑跑通了。從打印 log 可以看到目前的 INT 13h 有正確執行,我們實現的 ATA PIO 可以正常工作,而中間的 INT 13h AX=0h 是正常的重置流程。它的作用是讓 BIOS 把 ATA 的清乾淨,讓硬碟回到出始狀態。同時有大量的 INT 13h, AH=42 讀取,可以看到 GRUB 搬運了許多資料,同時啟動序列也會掃多個 DL,系統碟可在 DL=0x80 上工作正常。
另外截圖裡冒出的 INT 16h (鍵盤) 與 INT 1Ah (clock) 是因為我處理文字緩衝時是直接覆蓋,並不會特別去清空那區,實際上這兩個中段服務我還沒實現,所以他們只會打印 INT 16h 與 INT 13h 而以。
另外我發現 grub 其實完全不走 0xb8000 的文字輸出模式,而是切到 VBE 輸出,所以接下來我們需要實作 INT 10h 的 VBE 設定讓 GRUB 的東西可以真正顯示在畫面中。
另外之前為了確認螢幕是否可以正常顯示所以把 LOG 輸出轉介到 SDL2 建立的螢幕中。現在既然確定畫面可以工作,同時也有 LOG 輸出那這部分的程式碼就可以去除了。