みず吉のプログラ日記

開発日記になる予定です。

MacでゼロからのOS自作入門 5-6章

ここら辺から操作自体は流れ作業になるのでかなり省略しています。

5章

5.1-5.2章

必要なコードは揃っているので、今までと同様に実行すればうまくいくはずです!フォント一文字表示させるのってこんな大変なんですね...

f:id:mizkitten:20210809000015p:plain
フォントが表示された

5.3章

$ OS_DIR=/workspaces/mikanos-devcontainer/mikanos
$ git checkout osbook_day05c
$ cd $OS_DIR
$ tools/makefont.py -o hankaku.bin kernel/hankaku.txt
$ objcopy -I binary -O elf64-x86-64 -B i386:x86-64 hankaku.bin hankaku.o

3行目は本に書いてある通りだとhankaku.txtが見つからないと言われてしまったので私のhankaku.txtが置いてある場所に合わせて変えました。 あとは今までと同様buildなどするだけです!

$ cd kernel
$ source ~/osbook/devenv/buildenv.sh
$ make
$ cd ~/edk2
$ source edksetup.sh
$ build
$ ~/osbook/devenv/run_qemu.sh ~/edk2/Build/MikanLoaderX64/DEBUG_CLANG38/X64/Loader.efi $OS_DIR/kernel/kernel.elf

ちなみに私は4.1章でも起こったclangのエラーがmain.cppだけでなくfont.hppにも出たので書き換えました。

5.4-5.6章

順調に終わりました!コンソールができると一気にOS感が出ますね...!printk()で可変長配列を受け取れるようになったのも嬉しい。これで今度のOS開発が捗ること間違いなし!(by著者さん)

f:id:mizkitten:20210809011257p:plain
5-4章
f:id:mizkitten:20210809011316p:plain
5-5章
f:id:mizkitten:20210809011340p:plain
5-6章

6章

6.1章

デスクトップのデザインの配色のみ変えてみました。 kernel/main.cppの91行目からのdraw_desktopを変えてみます。

FillRectangle(*pixel_writer,
                {0, 0}, 
                {kFrameWidth, kFrameHeight - 50},
                {0, 87, 146});
  FillRectangle(*pixel_writer,
                {0, kFrameHeight - 50},
                {kFrameWidth, 50},
                {19, 51, 76});
  FillRectangle(*pixel_writer,
                {0, kFrameHeight - 50},
                {kFrameWidth / 5, 50},
                 {246, 246, 233});  
DrawRectangle(*pixel_writer,
                {10, kFrameHeight - 40},
                {30, 30},
               {253, 95, 0});
 ```
私の好きな[カラーパレット](https://colordrop.io)の中から文字が見やすそうなものをチョイスしました。かわいい。
<figure class="figure-image figure-image-fotolife" title="配色を変更">[f:id:mizkitten:20210809181446p:plain]<figcaption>配色を変更</figcaption></figure>

##6.2-6.3章
書いてある通りです。USBの仕様ってこんなに複雑だったんですね...
(若干の不具合は残りますが)マウスカーソルが動くようになりました!
こちらからのインプットができるようになり、だいぶ見た目のOSらしさが増してます。
<figure class="figure-image figure-image-fotolife" title="マウスカーソルの移動">[f:id:mizkitten:20210809185712p:plain]<figcaption>マウスカーソルの移動</figcaption></figure>