よもぎのメモ帳

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

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

はじめに

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

企画についてはこちら

y0m0g1.hatenablog.com

いい感じのサムネイル画像は明日以降作ろうと思いますもうそろそろ諦めてる。

昨日やったことを書いていきます

昨日の進捗

f:id:y0m0g1:20200821173627p:plain
それっぽい感じになった

それっぽい画面になるまでに育ちました。前後関係とか影の処理という感じではなく、長方形の組み合わせ。

色ができるし、グラフィックスは目に見えて進捗が分かるので楽しかったです。

昨日やったこと

昨日は真っ黒な画面が出来上がりましたが、今度は真白な画面です。

f:id:y0m0g1:20200821173441p:plain
白色

VRAMに書き込むことで色ができああがりますが、ビッド演算を利用してしましまもようが出来上がりました。

f:id:y0m0g1:20200821173458p:plain
しましま part1

このあたりでC言語の鬼門・ポインタの説明が出てきます。懐かしいなぁと思うわけ*1だけども、本の筆者はコラムでポインタの説明をしてくれます。 でもその説明わかりにくい。なんとなくポインタってこんなもんだよねって履修済みなので。 なので初めて触れるひとにはわかりやすいかもしれない。

あと、こんな説明も懐かしかった

// これぜんぶ一緒
// 比較演算子は正しくないけど同じって意味で
p[i] == *(p+i) ==  *(i+p) == i[p]

//つまり
a[2] == 2[a]

閑話休題

8ビットカラーモードでは、0~255の色番号の色をプログラマが勝手に決められます。

ということでこちらで勝手に決めた16色を用いてしましまを描画するとこんな感じになります。

f:id:y0m0g1:20200821173515p:plain
しましま part2

フラグを管理するEFLAGSレジスタの取り扱いでスタックの説明が一瞬だけ入りました。

このあとは長方形を描画する関数を作りました

f:id:y0m0g1:20200821173612p:plain
四角形

この長方形を描画する関数をめちゃめちゃに使って出来上がったのが、今日の進捗でだした画像です。

4日目はグラフィックスを扱って色とりどりになってきたので、楽しかったです。

今日も一日頑張るぞい!

*1:EEICに入ってすぐの頃に授業でやったね