資料集
ここはhideyosiの学習帳です。いろいろな資料を集めたり整理したりしています。オイラ用のノートなので間違っていたり未完成だったりしますので信用度は相当低いことをあらかじめご了承くださいませ。

はりぼてではVESA2.0でないと高解像度化できない。 ・・・なんでじゃぁ??? というわけで。

(まぁ、よーするに。ウチで実験に使ってるボロノートがVESA1.2なんだよねぇ。なので、コイツで高解像度化ってできないもんかと思って・・・)

はりぼて上のチェック anchor.png Edit

はりぼてでは、asmhead.nas内で起動時にVESAのチェックを行っている。 (つまり、ただ単にVESA2.0かどうかだけをチェックしてるわけじゃないんだよね)

えっと・・・コードを読んでみると・・・

  • 0x4f00でBIOSコール
    • そもそもこれが不成功ならscrn320へジャンプ
    • VESAのバージョンチェック。2.0以下(1.02とか)ならscrn320へジャンプ
  • 0x4f01でBIOSコール。(CXに要求の画面モード)
    • そもそもこれが不成功ならscrn320へジャンプ
    • 帰ってきた情報のうち、0x19バイト目をチェック。これは画面の1ピクセルが何ビットで構成されているのかという情報。これが8じゃなかったらscrn320へジャンプ
    • 次に0x1bバイト目をチェック。これはメモリーモデルタイプ?を表す。これが4(Packed pixels)でなければscrn320へジャンプ
    • 最後に0x00バイト目をチェック。ここのbit7が立っているかどうか。つまり、(Linear framebuffer mode supported)かどうかをチェック。ダメだったらscrn320へジャンプ

・・・っとまぁ、こういうチェックをしているわけだね。

Page Top

画面モードの切り替え anchor.png Edit

はりぼてでは全てのチェックを終え、正常だといよいよ画面の切り替えを行う。 この場合、AXに0x4f02をセット。さらにBXに画面モードをセットするんだけど、 単純にそのままセットではない。

BXにセットする値はビットごとに意味があるようだ。

  • 0〜13ビットまでが画面モード。ここに0x101(640x480x256)だの0x105(1024x768x256)だのをセットする。
  • 14ビット目はリニアアクセスモード要請(1で要請) -- ただし VESA 2.0以降
  • 15ビット目がVRAMクリア省略(1で省略)

はりぼてではBXに対し、0x4000 + 画面モード という値をセットしている。つまり、

画面モード101(640x480x256)にしたい場合

ビット0〜13       0000000100000001         0x101    モード番号
ビット14          0100000000000000        0x4000    リニアアクセスを要請する
ビット15          0000000000000000        0x0000    VRAMクリアを省略しない

こういうことのよーでする・・・

Page Top

オベンキョ anchor.png Edit

Page Top

Linear framebuffer mode anchor.png Edit

リニアフレームバッファモードと読む。リニアフレームバッファとはなにかというと、えーーっと。ようするに、「普通にデータを書き込めるフレームバッファ」ということらしい。

普通とはなにかというと、はりぼてで全般的に採用されている方式。つまり、0xa0000に0x08を書き込むと、画面の左上にポツンと赤い点が表示されるような動作をするもの。

分かりやすくするために普通ではないモード。つまりノンリニアなものを説明。 プレーンと呼ばれる下敷きがあって、そこに別々にデータを打ち込むことで画面に点が表示される。よくあるパターンは、赤青黄等の3色以上に分かれているパターン。こういうのに点を打ちたい場合、まず赤のプレーンに点を打ち、次に青のプレーンに切り替えてからまた点を打ち・・・と、プレーンを切り替えて色を表現するようなパターン。 比較的遅く、またプログラムも煩雑になるのはわかるだろう。


Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New Page Page list Search Recent changes   Help   RSS of recent changes (RSS 1.0) RSS of recent changes (RSS 2.0) RSS of recent changes (RSS Atom)
Counter: 2380, today: 1, yesterday: 0
Last-modified: 2012-10-22 (Mon) 21:58:11 (GMT) (2820d) by