« 今日の日記 | Main | 先頭から0を数える »

2006.09.28

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を数える »

Comments

Post a comment



(Not displayed with comment.)




TrackBack

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/18154/12069346

Listed below are links to weblogs that reference OS自作入門 5日目:

« 今日の日記 | Main | 先頭から0を数える »