30日でできる!OS自作入門(Day 8)
はじめに
何ですか、これは。
1日進めるために287日かかりました。この間何をしてたかといえば、講義でOSとかアーキテクチャとかいろんなことを学んでいました。満を持してのOS自作本というわけです。ちなみにOSの講義でめっちゃ好きになったのがOS自作では取り扱わないページングとCopy-On-Writeでした。
ところで、最近のOSの流行りはUEFIらしいですよ?
マウスを動かしたい
昨日(287日前)マウスからの情報を割り込み処理で受け取ることができたので、その割り込みで得られた情報を解読するところからです。マウスの割り込みでは一回の動作ごとに3バイトずつデータが送られてくるそうなので、それぞれが何を表しているかを知る必要があるというわけです。ちなみに、大雑把に言えばマウスのボタンクリックの有無、左右の動き、上下の動きで3バイトだそうです。
マウス、動く
マウスから送られてくるデータが解読できさえすれば後は描画するだけって感じですね。
・・・だけって感じではなかったですね。今のままだとマウスが通った後の部分が再描画されないので、マウスがゴジラみたいになってますね。
解決するのはDay 10です、マウスって難しいですね。
32ビットモード
実は裏で行われてて解説のなかったOSブート時の16ビットモードから32ビットモードへの移行の解説がここで来ました。ちなみに、UEFIなら最初から64ビットで動かせますね。
32ビットモードへの移行で必須な設定は、移行終了まで割り込みの禁止とメモリを1MB以上使えるようにする設定、使用する命令の拡張とページングを使わないプロテクトモードへの切り替え、と盛りだくさんです。(さようならページング)