こんな感じですね.
//$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メーカの人にしか見えないので,一般人はアクセス不可).