OS自作入門の13日目その1です。
初版第六刷のP250から252までです。
やっと13日目のその1です。
でもなんだか内容を忘れてきてしまってたりして。。
それでは、勉強を始めます。
①文字を書く部分を一つの関数にまとめる。
下記のような部分が4箇所出てくるので、
それを一つの関数にまとめ、プログラム数を減らします。
boxfill8(buf_win, 160, COL8_C6C6C6, 40, 28, 119, 43);
putfonts8_asc(buf_win, 160, 40, 28, COL8_000000, s);
sheet_refresh(sht_win, 40, 28, 120, 44);
↓
void putfont8_asc_sht(struct SHEET *sht,int x,int y,int c,int b,char *s,int l)
{
boxfill8(sht->buf,sht->bxsize,b,x,y,x+l*8-1,y+15);
putfont8_asc(sht->buf,sht->bxsize,x,y,c,s);
sheet_refresh(sht,x,y,x+l*8,y+16);
return;
}
結果的に2行減ります。
②長ーいif分を省略
HariMainの中に、キーボード、マウス、タイマバッファへの書き込みが
あるかないかを判断する条件式がありますが、タイマを増やした時に
面倒くさい事になります。(下記)
if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) + fifo8_status(&timerfifo)
+ fifo8_status(&timerfifo2) + fifo8_status(&timerfifo3) == 0)
そこで、タイマ用のバッファを一つにまとめます。
すると上の式が、
if (fifo8_status(&keyfifo) + fifo8_status(&mousefifo) +
fifo8_status(&timerfifo) == 0)
にまとまります。
この時に、どのタイマが終わったかどうかは、
HariMainの中で、
i=fifo8_get(&timerfifo)
で、各タイマのdataを受け取って、その情報を元に
どのタイマが終わったかを判断し、例えば"10[sec]"というふうに
表示します。
今日はここまでです。
次は、性能の測定です!
最近のコメント