フルカラー化
オープンソースカンファレンス(OSC)も迫ってきたので、BayOS の目玉機能として、フルカラー(ハイカラー)化をやってみました。
基本的なフルカラー(ハイカラー)化自体は、以下のような4行の修正で完了ですが、はりぼてOS自体は、256色固定のコードがたくさん混じっているため、その修正が結構大変です。
具体的には http://haribote.org/index.php?advance%2FVESA にあるような修正を行いました。
; haribote-os boot asm ; TAB=4 [INSTRSET "i486p"] VBEMODE EQU 0x111 ; 640 x 480 x 16bitカラー ; (画面モード一覧) ; 0x100 : 640 x 400 x 8bitカラー ; 0x101 : 640 x 480 x 8bitカラー ; 0x103 : 800 x 600 x 8bitカラー ; 0x105 : 1024 x 768 x 8bitカラー ; 0x107 : 1280 x 1024 x 8bitカラー ; 0x111 : 640 x 480 x 16bitカラー ; 0x114 : 800 x 600 x 16bitカラー ; 0x117 : 1024 x 768 x 16bitカラー ; 0x11A : 1280 x 1024 x 16bitカラー 中略 ; 画面モード情報の確認 CMP BYTE [ES:DI+0x19],16 ; 8->16 JNE scrn320 CMP BYTE [ES:DI+0x1b],6 ; 4->6 JNE scrn320 MOV AX,[ES:DI+0x00] AND AX,0x0080 JZ scrn320 ; モード属性のbit7が0だったのであきらめる ; 画面モードの切り替え MOV BX,VBEMODE+0x4000 MOV AX,0x4f02 INT 0x10 MOV BYTE [VMODE],16 ; 8->16 画面モードをメモする(C言語が参照する) MOV AX,[ES:DI+0x12] MOV [SCRNX],AX MOV AX,[ES:DI+0x14] MOV [SCRNY],AX MOV EAX,[ES:DI+0x28] MOV [VRAM],EAX JMP keystatus
ちなみに、フルカラー(ハイカラー)化してしまうと、はりぼてOS専用アプリは色がおかしくなってまともに動かなくなりますので、ご注意ください。