« 2007年10月 | トップページ | 2008年1月 »

2007年12月31日 (月)

機械製図

最近、機械製図の勉強をしています。

今度、学科と実技の試験があり、

それぞれの過去問を勉強しています。

学科試験は、材料、材料力学、歯車、ねじ等が

あります。

実技は、組み立て図を配布されて、

定規で寸法を読み取り、部品図を

作成します。

CADを使って図面を作成するのですが、

普段あまり使っていないこともあって

なかなか苦戦しています。

誰か他にも同じ様な人いませんか~?

Avviai studiare disegnando meccanico questi giorni.

È difficile.

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

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

« 2007年10月 | トップページ | 2008年1月 »