雑記帳
ここはhideyosiの雑記帳です。テケトーに書き散らしてるだけなので間違っていたりとは普通にしてます。信用度は相当低いことをあらかじめご了承を。またご覧のようにWikiを使ってますが、hideyosi意外は書き込めません。
1: 2007-11-25 (日) 10:48:47 ソース バックアップ No.1 を復元して編集 2: 2007-11-25 (日) 11:26:31 ソース バックアップ No.2 を復元して編集
Line 1: Line 1:
-[[資料/haribote/メモリマップ]]+**VESAから帰ってくる情報の情報 [#kaa620c0]
-あああ+VESA BIOSが搭載されているのかいないのか。また、搭載されていた場合、どこまで使えるのか。そういう手の情報はある程度BIOSから返される。ではどんなものなのか?? 
 + 
 +***最初の一手 [#c1d0768a] 
 +16bit(リアルモード)時、以下のBIOSコールを行うといろいろ調べることができる。 
 + 
 +  MOV AX,0x4f00      ;AXにファンクション番号である0x4f00を 
 + 
 +  MOV AX,0x9000      ;ここはようするに、ES:DIに0x9000:0を 
 +  MOV ES,AX          ;書き込みたいだけ。ESは直接代入できない 
 +  MOV DI,0          ;のでこうしているだけ 
 + 
 +  INT 0x10  ;BIOSコール! 
 + 
 +このコールの結果、各レジスタやES:DIで指定したアドレスに情報が帰ってくる 
 +-AL : 0x4Fが帰ってきたら成功。(とりあえずVESA BIOSは存在する?) 
 +-AH : 各種詳細情報 
 +--0x00 : 成功。問題なし 
 +--0x01 : 明確に「ダメ」。(VESAはない?あっても使えない?) 
 +--0x02 : VESAは存在するっぽいんだけど、BIOS設定等でカットされてて使えない? 
 +--0x03 : VESAは存在するっぽいんだけど、なんらかの理由でまともには使えない? 
 + 
 +さらに、例のES:DIアドレスに以下の情報が書き込まれる 
 + 
 +|0x9000|4バイト|「VESA」の文字。つまり0x56、0x45、0x53、0x41| 
 +|0x9004|4バイト|VESAのバージョンナンバー。(ただし数値ではなく文字らしい)| 
 +|0x9006|4バイト|?? なにかの名前の文字が入っているアドレス?| 
 +|0x900A|4バイト|性能?                  Bit  0  Set if the DAC can switch width, clear if it is                            fixed 6bits per primary color                            1  (VBE2) non-VGA controller            2  (VBE2) Programmed DAC with blank bit  | 
 +|0x900E|4バイト|サポートするモードの一覧表のアドレス(文字列のポインタ?)終端が  0xFFFFの文字列らしい| 
 +|0x9012|2バイト|VRAMの大きさ・・・かな?| 
 + 
 +以降はVESA 2.0以降の場合。 
 +|0x9014|2バイト|ソフトウェアのバージョン?なんの?| 
 +|0x9016|4バイト|製造業者の名前のアドレス(やっぱポインタかな?)| 
 +|0x901A|4バイト|製品名のアドレス| 
 +|0x901E|4バイト|製品のリビジョンナンバー?| 
 +|0x901F|225バイト|ここから0x9100まではメーカーの自由な領域???|