[30日でできる!OS自作入門](https://tatsu-zine.com/books/make-your-own-os-in30days">30日でできる! OS自作入門)の16日目、サンプルコードが動作しなくなりました。
実際には動作するのですが、マウスポインタの動作がカクカクするし、画面もリフレッシュされていません。
前回からの差分を確認してみると、性能比較のために無限ループでカウンターをひたすらインクリメントしています。その辺りが原因ではないかと調べて見たところ、どうやらio_cli()すると割り込みをキャッチできないようです。
代わりにio_stihlt()を行えば、サクサク動作するOSになります。
### 動作させるコード
```c
`gutter:true;
void task_b_main(struct SHEET *sht_back)
{
中略
for (;;) {
// count++;
io_cli();
if (fifo32_status(&fifo) == 0) {
// io_sti();
//代わりにstihltを行う
io_stihlt();
} else {
i = fifo32_get(&fifo);
```
以後、harib11[abcde]で同様の変更をしないと動作しないと思います。
### 考察
cliとstiの間が速すぎて割り込みをキャッチできていないようです。
(io_sti()の後に何か表示させるコードを追加すると期待した動作になるので)
同じ問題は今後も出てくると思うので、つど修正して確認したいと思います。
0 件のコメント :
コメントを投稿