『OS自作入門』p.102についての質問です。
下記は、"A"という文字を画面に描くための関数です。
void putfont8(char vram,int xsize,int x, int y, char c, charfont)
{
int i;
char d;
for(i=0;i<16; i++){
d = font[i];
if(d & 0x80){vram[(y + i)*xsize + x + 0]= c;}
if(d & 0x40){vram[(y + i)*xsize + x + 1]= c;}
if(d & 0x20){vram[(y + i)*xsize + x + 2]= c;}
if(d & 0x10){vram[(y + i)*xsize + x + 3]= c;}
if(d & 0x08){vram[(y + i)*xsize + x + 4]= c;}
if(d & 0x04){vram[(y + i)*xsize + x + 5]= c;}
if(d & 0x02){vram[(y + i)*xsize + x + 6]= c;}
if(d & 0x01){vram[(y + i)*xsize + x + 7]= c;}
}
return;
}
dを16進数の0x80とかとANDでぶつけて、何bit目が1なのかどうかを
判定し、1であれば色を塗るというのをi=16までやっているという理解でいます。
しかしif文の中身、
vram[(y + i)*xsize + x + 0]= c;
が何をやっているのかわかりません。
「画面上の点の場所を指定して色を入れる」に相当することを
していると思うのですが、どういう原理でそれがなされているのか
ご教示願えないでしょうか。