2006-08-10 (Thursday) [長年日記]
■ B&O A8
B&OのA8が断線してしまったので,修理に出した.
保障期間は二年間. 今年の9月で購入から二年になるのでギリギリで無償といったところかな.
このイヤフォンはなかなか根が張るんですが,聴いてて疲れない音が出るのでオススメです. > B&O A8
■
OS自作入門 5日目と6日目
順調に読み進めています.まぁ,ほとんどC言語なので2日分進んでみました.
今の仕事でやってるVMの実装の方が仕様の難易度が恐ろしく高いため,素直に感じられます. いくつかマジックナンバーのようなものはあるものの,仕組みはシンプルでいいですね.
あと,筆者の解説の入れ方がうまいです. 疑問に思ったことはたいてい直後に説明されています. いや,疑問に思う箇所しか本に書かれていないのかもしれませんけどね.
今日は自分の流儀と違うところは以下の箇所くらいかね.
本文では
void putfont8(char *vram, int xsize, int x, int y, char c, char *font) { int i; char *p, d /* data */; for (i = 0; i < 16; i++) { p = vram + (y + i) * xsize + x; d = font[i]; if ((d & 0x80) != 0) { p[0] = c; } if ((d & 0x40) != 0) { p[1] = c; } if ((d & 0x20) != 0) { p[2] = c; } if ((d & 0x10) != 0) { p[3] = c; } if ((d & 0x08) != 0) { p[4] = c; } if ((d & 0x04) != 0) { p[5] = c; } if ((d & 0x02) != 0) { p[6] = c; } if ((d & 0x01) != 0) { p[7] = c; } } return; }
となっていたけど,ボクとしては
void putfont8(char *vram, int xsize, int x, int y, char c, char *font) { int i, j; char *p, d /* data */; for (i = 0; i < 16; i++) { p = vram + (y + i) * xsize + x; d = font[i]; for (j = 0; j < 8; j++) { if ((d & (0x80 >> j)) != 0) { p[j] = c; } } } return; }
とするかなー..すみません,どうでもいいですね.はい.
描画したマウスカーソルの形もキレイにしようと思ったけど,いくらいじってもキレイにならなかったので,とりあえず放置することにした.
GDTをいじるときなどに若干激しいビット演算があるものの,仕様とともに分かりやすく説明されているので問題ありませんね.
次はマウスとキーボードか.楽しくなってきたな.続きは月曜日以降になりそう.
[]
本日のPingbacks(全0件)









> OS自作入門<br>やはり買えというお達しだろうか.<br>#さすがにOS自作するだけの気力も体力もありませんが(^^;
んー、多重ループにすると内側が『熱くなる』からそれを避けたとか? >元のコード。まあそれだとしてもポインタ操作をもうちょっと軽く(っても程度の問題)できるとは思いますが。いずれにしろイマドキのハードなら問題にならないんじゃないかなあと思ったり思わなかったり。
> keisukenさん<br>OSを自作するとまでいかなくても,読むだけでも面白いかもしれません.<br># お恥ずかしいことに,IRQがどんなものかをこの本ではじめて知りました...<br><br>> きむらさん<br>著者自身はあまりコードの形にこだわりがないようなので,そのときの気分なのかもしれません.(笑