OS自作入門 5日目
ついに構造体へ。
struct BOOTINFO *binfo = (struct BOOTINFO *) 0x0ff0;init_palette();
init_screen(binfo->vram, binfo->scrnx, binfo->scrny);
なんでこれでビデオの情報を取得できるのだと、小一時間悩む。
アセンブラ(asmhead.nas)で設定してあるのか。
; 画面モードを設定
MOV AL,0x13 ; VGAグラフィックス、320x200x8bitカラー
MOV AH,0x00
INT 0x10
MOV BYTE [VMODE],8 ; 画面モードをメモする(C言語が参照する)
MOV WORD [SCRNX],320
MOV WORD [SCRNY],200
MOV DWORD [VRAM],0x000a0000
普通にbinfoをグローバルにおいて、初期値設定すれば良いと思う。
アセンブラで確保した領域とか、メモリマップドされたレジスタ群への
アクセスに構造体でアクセスするのは、ぎりぎりセーフかな。できたら
やらない用がよい。他の人が見て理解できないのと、結局デバッグ時に
アセンブラ出力と格闘することになる。
IDT、GDTが何となくしかわからない。
GDTがセグメントの管理で、IDTが割り込みベクターでよいのかな。
リング構造とかあった気がする。
会社においてある 始めて読む486を読もう、そうしよう。
« 今日の日記 | Main | 先頭から0を数える »
The comments to this entry are closed.
Comments