VRAMへのアクセスをプログラムで書くと

 こんな感じですね.

    //$00~順に書く
    for (i = 0; i < 72; i++) {
        ((unsigned char *)0x80000)[i] = i;
    }
    for (i = 0; i < 72; i++) {
        ((unsigned char *)0x80100)[i] = 256-i;
    }
    for (i = 0; i < 72; i++) {
        ((unsigned char *)0x80200)[i] = i;
    }
    for (i = 0; i < 72; i++) {
        ((unsigned char *)0x80300)[i] = 256-i;
    }

    for(i = 0; i < LOOP_NUM; i++);
    clearLine(0);
    clearLine(1);
    clearLine(2);
    clearLine(3);

    //文字Aのビット・パターン
    *(unsigned char *)0x80000 = 0x7e;
    *(unsigned char *)0x80001 = 0x09;
    *(unsigned char *)0x80002 = 0x09;
    *(unsigned char *)0x80003 = 0x09;
    *(unsigned char *)0x80004 = 0x7e;

    for(i = 0; i < LOOP_NUM; i++);
    clearLine(0);
    clearLine(1);
    clearLine(2);
    clearLine(3);

 MovableTypeでソースが綺麗に貼れるかテスト.

 「画面に文字や絵を描く」=VRAMへの書き込むというのは単純でいいですね.結局,書き込むメモリ(VRAM)のアドレスを指定してデータを書き込むというCPUの基本機能で液晶画面も制御できるということが分かります.最近のパソコンではVRAMへの直接アクセスができず,ライブラリから描画コマンドを投げるだけということが多く,その先で何をやっているのかが目で見えませんが,このマイコンのように素朴な構成だと描画の様子が目で見えます.実はパソコンの描画ライブラリも,CPUからGPUへコマンドを発行して,GPUにつながっているVRAMへ書き込むというプログラムがどこかに書かれているのですが(ただしそのVRAMへの書き込みプログラムはnVIDIAとかのGPUメーカの人にしか見えないので,一般人はアクセス不可).

 

このブログ記事について

このページは、Interface編集部が2009年12月 8日 16:09に書いたブログ記事です。

ひとつ前のブログ記事は「S1C17702の表示RAM(VRAM)の構造」です。

次のブログ記事は「Amazonマーケットプレイスで本誌がすごい値段に」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。