16日目(マルチタスクの続き)
mtask.cの大改造。
(bootpack.cもウィンドウが増えるところが大改造)
haribot13aはbootpack.hの/* mtask.c */(構造体を追加)以下を修正。
本書には記載がないが、CD-ROMのデータだとその後、
extern struct TIMER *mt_timer;
void mt_init(void);
void mt_taskswitch(void);
を
extern struct TIMER *task_timer;
struct TASK *task_init(struct MEMMAN *memman);
struct TASK *task_alloc(void);
void task_run(struct TASK *task);
void task_switch(void);
にしている。
mt_timerをtask_timerに置き換えたためだが、自分にはそこまで読み取れなかった。
void HariMain(void)の前も追記に注意。
void task_b_main(struct SHEET *sht_back);
と、struct TSS32の項目と、次の
void task_b_main(struct SHEET *sht_back);
を削除。
timer.cも修正が必要なのを忘れない。具体的な修正が本書に記載されてないので、エラーで気づいた。
mt_timerをtask_timer、mt_taskswichをtask_swichにする。
最初で苦労したら、harib13b以降は問題ないと思う。
だいたい記載されている通りになっている。
bootpack.cとbootpack.hの改造はセットでチェックが必要なのはいつもの通り。
あとはタイプミスとの戦い。
ウィンドウを増やすところは自分のポカミスが多くてもう無理だったので、最後はコピペに頼った。
それとtimer3など、消す必要があるところと、環境によってはカウンタ表示を%dにするのを忘れずに。
改造した後はカウントが目に見えて早くなっているのがわかる。
数え続けてしまうときは数字を通り越して記号になるしスピードも早すぎるので、正確に数字は書けない。
(一時的に止めるように改造できればいいんだけど、自分には無理)
最近のPCを使っていると処理が早すぎるので、おそらくスピードの測定はあまり意味がないんじゃないかと思う。
ここまで来ると、自分の環境ではマウスでウィンドウを動かしてもストレスがない。
進めていく上で必要な場合のみ、対応していくことにする。