よもぎのメモ帳

備忘録的な感じで技術的なことをストックしていきます。

よもぎのOS自作入門 7日目/30日

はじめに

これは2020年夏休み企画「30日でOS自作してみよう!」7日目の記事です。

企画についてはこちら

y0m0g1.hatenablog.com

昨日やったことを書いていきます。もうよるじゃんか。

昨日の進捗

f:id:y0m0g1:20200824220429p:plain
キーボードの入力(左)とマウスの入力(右)

キーボードの入力を受け取った&マウスの入力を受け取った。

ちなみに1バイトまでずつしか表示できないはず。

昨日やったこと

キーボードの入力、つまりキーコードを取得から始めます。 IRQをトラップしたら、PICのOCW2に対して対応する電気信号を送ることでIRQの受付を終了します。そうすれば、PICはIRQの受付を再開するみたい?

f:id:y0m0g1:20200824221404p:plain
キーコードの取得

このあたりでFIFOバッファ*1を導入します。

このあたりでだんだん配布されたソースコードを一部無視するようになってきます。 構造体とか関数とかの宣言や定数はなるべくヘッダファイルに書いていきたいと思ったので。 前までそうだったじゃんっておもいながら。なんかリングバッファみたいなのが出来上がった気がする。

マウスがそのままでは動かなかったのは、有効化がされていなかったからみたい。 昔はマウスがなかったので、マウスの割り込みを処理するには

  • マウス制御回路の有効化
  • マウスそのものの有効化

が必要になるみたい。マウス制御回路はキーボード制御回路の中にあるので、キーボード制御回路の初期化と同時にできるとか。 それが終わったらマウスがトラップできるようになります

f:id:y0m0g1:20200824222647p:plain
マウスをトラップ

あとはマウス入力のデータも受け取って進捗に上げたような感じになって今回おしまい。

今日も一日頑張るぞい!*2

*1:要はキュー?

*2:もうがんばった