« OS自作入門の12日目その4 | トップページ | 機械製図 »

2007年12月 2日 (日)

OS自作入門の13日目その1

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]"というふうに
表示します。

今日はここまでです。
次は、性能の測定です!

« OS自作入門の12日目その4 | トップページ | 機械製図 »

OS自作入門」カテゴリの記事

コメント

弊店はブランドコピー時計N品、
ロレックスコピー時計、パネライレプリカ時計、
シャネルレプリカ時計、ブライトリングレプリカ時計、
ウブロレプリカ時計、IWC コピー時計、
二年以内に人的破壊でない故障は無料で修理をします。
正規品と同等品質のコピー品を低価でお客様に提供します。
安心して購入して下さい。
自身が使用するだけでなく、入学、卒業、誕生日、結婚のお祝い等のギフトにもご利用ください。
偽物ブランド時計 https://www.yutee007.com/protype/list-199.html

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: OS自作入門の13日目その1:

« OS自作入門の12日目その4 | トップページ | 機械製図 »