THINK

Linuxで始めるOS自作入門: 29日目

11/14/2020

内容

  1. ファイル圧縮
  2. 標準関数
  3. 非矩形ウィンドウ
  4. bball/invader

ファイル圧縮

容量削減するために圧縮したファイルを読み込んで開けるようにしたいよね、 という内容。 ここの圧縮ロジックは用意してあったソースファイルを流用
で、ここ.gasから.nasへのコンバータに失敗するんですよね(バグらしい&多分Linuxだけ)
なんとか直せないかなーとコンバータのソースファイルもROMに同梱されているのでそれをコンパイルしようとごねごねしていたら HariboteOS/z_tools_linux を発見(まじかよ...) これを利用するようにしたら諸々解決
ちなみに、これを知った経緯は ハラミTech/OS自作入門してみた&やりきった というブログ(感謝)

標準関数

#include <stdio.h>などは標準関数。 ただし、今回haribote osようにstdlib.hを用意していないので一部実装してみよう〜 なやつ。
API使ったら余裕だよねーといくつか実装したものの、 全部実装してみたい人はしてみてね〜で終わってしまった。 apilibのように #include "stdlib.h"とすれば問題なく呼べることは呼べるが、 どうせなら(標準関数なので) #include <stdlib.h>で呼びたい。 というわけで z_tools周りにも手を入れて #include <stdlib.h>で呼べるようにして api_end()exit(0)に置き換えてみたりしてみた。

非矩形ウィンドウ

透過パーツ使えば矩形じゃないウィンドウも表示できるんだぞーな内容

bball/invader

魔法陣を書くアプリとインベーダーゲームアプリの実装。 HaribodeOSもここまでの内容でこんなものを作れるんだぞーな内容

余談

標準関数の節は個人的に興味深かった Goとか使ってると標準関数は言語が用意しているものだけど、 Hariboteのようにアーキテクチャが違う場合はそもそも独自実装しないといけない部分が出てくるし、 しかも標準ヘッダファイルの読み出し先dirは指定できる (この辺はOSやら言語実装やってみないとなかなか知る機会が無かったなと思う)

そしてついに、30日目!

osの画像1