自作OSに挑戦する日記 29日目

 「30日でできる!OS自作入門」を読んで分かったことや、とりあえず書いておきたいことなどを書いていきます。
 この本はChapterが1から30まであるので、各チャプター毎に1記事書いていきます。

Chapter 29「圧縮と簡単なアプリケーション」

今回やった内容

  • tek圧縮対応
  • 標準関数作成
  • 非矩形ウィンドウ
  • Beautiful Ball
  • インベーダー

環境

作業記録

tek圧縮対応

 筆者の方が作成された圧縮形式 tek にHariboteOSを対応させます。

 早速実装&圧縮だ!…といきたいのですが、本の付録にある圧縮プログラムはWindows用の実行ファイルのみとなっていて 、ファイル圧縮を実際に試してみることはできませんでした。

 圧縮は無理でしたが、OSに組み込む解凍プログラムは動かすことができました。若干のエラーが出ましたが、他の方のブログを参考に修正する事が出来ました。ありがとうございます(ページ下にURLを貼らさせていただいてます)。

 任意のファイルを圧縮することは出来ませんでしたが、既に圧縮済みのファイルが本の付録にあるのでこれを使って動作をテストします(前回使用した日本語フォントファイル)。


 以下2つの図は 、28日目と29日目それぞれHariboteOS上で ls コマンドを実行した状態です。28日目時点でのHariboteOSには未圧縮のものを、29日目途中までのHariboteOSには圧縮済みのフォントファイルを転送しました。

f:id:guguru0014:20190523003724p:plain
28日目

f:id:guguru0014:20190523004210p:plain
29日目

 japanese.fnt が圧縮されていないもの、jpn_tek.fnt がtek圧縮済みのものです。tek圧縮によって 145472B (142KB) から 58009B (56KB) へとファイルサイズが半分以下になっています。ちなみに、 圧縮されたフォントファイルを使用しても日本語表示が出来ます。解凍プログラムが正常に動作している証拠です。


 tek圧縮に対応したところで、遂にHariboteOSが完成しました!初めて本を開いてから4ヶ月、ようやく完成する事が出来ました!
f:id:guguru0014:20190523004809j:plain

 29日目の残りと30日目は全てアプリ作成です!OS作成に比べてプログラムも単純なので、特にソースなどは載せずテンポ良く進めていきたいと思います〜

非矩形ウィンドウ

 ウィンドウ上に透明の図形を描画する事で非矩形ウィンドウを実現しています。

f:id:guguru0014:20190523010158p:plain
notrec

Beautiful Ball

 色の違う線を複数描画する事で、アプリ名の通り美しい球を表現しています。

f:id:guguru0014:20190523010153p:plain
bball

インベーダーゲーム

 インベーダーゲームです。実はこのゲームにはあるストーリーがあります。気になった方はぜひ自作OS本を買ってみてください。

 インベーダーゲームまで実装し、29日目終了です!

まとめ

 遂にHariboteOSが完成しました!そして、残り1日で自作OS本も終わりです。
 残り1日終わらせたら何をしようかと学校などで色々考えていましたが、本当にどうしよう…。HariboteOS新機能、自作言語、HelloWorld本、ネットワーク、Linuxカーネル…やりたい事が多すぎて1つに決められる気がしません。とりあえずもう少し悩みたいと思います。

参考にさせてもらった方のブログ

 ありがとうございました!

bttb.s1.valueserver.jp