2008/04/16 ( n ) < HariboteOS >
カウントアップアプリケーションを作成して表示をしてみると
画面がチラチラすることが判明したので、描画まわりの改善をとりあえず始めてみる。
途中で、本の map の使い方が気に入らなかったので自分方式に変更。
void sheet_refreshsub( struct SHTCTL* ctl, int vx0, int vy0, int vx1, int vy1, int h0 )
{
int h, bx, by, vx, vy, bx0, by0, bx1, by1;
unsigned char *buf, c, *vram = ctl->vram;
struct SHEET* sht;
if( vx0 < 0 ) vx0 = 0;
if( vy0 < 0 ) vy0 = 0;
if( vx1 > ctl->xsize ) vx1 = ctl->xsize;
if( vy1 > ctl->ysize ) vy1 = ctl->ysize;
// init map
for( vy = vy0; vy <= vy1; vy++ )
{
for( vx = vx0; vx <= vx1; vx++ )
{
ctl->map[vy * ctl->xsize + vx ] = 0;
}
}
for( h = ctl->top; h >= h0; h-- )
{
sht = ctl->sheets[h];
buf = sht->buf;
bx0 = vx0 - sht->vx0;
by0 = vy0 - sht->vy0;
bx1 = vx1 - sht->vx0;
by1 = vy1 - sht->vy0;
if( bx0 < 0 ) bx0 = 0;
if( by0 < 0 ) by0 = 0;
if( bx1 > sht->bxsize ) bx1 = sht->bxsize;
if( by1 > sht->bysize ) by1 = sht->bysize;
for( by = by0; by < by1; by++ )
{
vy = sht->vy0 + by;
for( bx = bx0; bx < bx1; bx++ )
{
vx = sht->vx0 + bx;
c = buf[by * sht->bxsize + bx];
if( ctl->map[vy * ctl->xsize + vx] == 0 && c != sht->col_inv )
{
vram[vy * ctl->xsize + vx] = c;
ctl->map[vy * ctl->xsize + vx] = 1;
}
}
}
}
}
一番上のレイヤーから描画していって、描画済みの部分にフラグをたてて、下位のレイヤーでは描画しないようにした。
次はタイマの作成。
IRQ0 の割り込み。仕様は見ていないけど、実装は難しくない。
割り込みハンドラの最適化も頑張って改善。アルゴリズム系はそんなに難しくない。
さらに高解像度に挑戦。
相変わらず BIOS 関係のアセンブラが登場すると理解ができない。
どのレジスタが何のためにあるのか、どういう風に使う(使える)のかが分かってないのが問題かなぁ。
で、適当にキー入力に対応して、マウスでウィンドウを動かせるようにしたところで、
14日目の分が終了。やっと半分。
ちょっと冷静に考えてみると、実質7日でこんなにOSらしく動いているのはすごい。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 3 | 憲法記念日 | |||||
| 4 | みどりの日 | |||||
| 5 | こどもの日 | |||||
| 6 | 振替休日 | |||||
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
BLOG HACKS
ブログを様々な角度から改造してみましょう。
★★★★☆
標準ウェブ・ユーザビリティ辞典
見る人に優しいサイト作り
★★★☆☆
オープンソースを理解する
オープンソースとの正しい付き合い方
★☆☆☆☆
プロジェクトX 新・リーダーたちの言葉
読んでください
★★★☆☆
Unixバックアップ&リカバリ
サーバー管理者は必読!自信と安心をこの本で。
★★★★☆
からくり儀右衛門
最高の技術で妥協しないものづくり
★★★☆☆
プロ論。2
誰もが注目をする作品を生み出したい時
★★★☆☆
外資系でやっていける英語が身につく
身につけ!
★★☆☆☆
30日でできる! OS自作入門
OS作りがこんなにも身近に!
★★★★★
KDE3.0アプリケーションプログラミング
私はこの本で勉強しました
★★★☆☆
Copyright © 2025 Linux-Life.net