Ubuntu 18.04.1 LTSでやる 30日OS本 〜18日目〜
Ubuntu 18.04.1 LTSでやる 30日OS本、18日目です。 他の章へのリンクはここにあります。
1.〜2. カーソル点滅制御
はい
3. Enterキーに対応
ウィンドウサイズを決め打ちするのは気持ち悪いので、ここでも書き換えをしました。以下同様です。
make_window8
を読んで枠の太さを調べるか、大きめの値を指定してはみ出した部分を数えるかすれば良いです。
4. スクロールにも対応
塗りつぶしなどの処理がウィンドウサイズのキリが悪い場合でも動くか一応確かめました(上のような書き換えの影響があるので)。 また、ここでは改行の処理をベタで書いていますが次の節でに関数として分離することになります。
5. memコマンド
コマンドラインのところの文字列比較がとても気持ち悪いですが、次の節でstrcmp
を使うようになるのでひとまず見逃すか、ここからstrcmp
を使うかしましょう。
6. clsコマンド
ここでstrcmp
を使うようになるのですが、なんとsprintf
同様使えないことが発覚しました。
仕方ないので自分で書きました。ただし、これは非常に簡単で
int strcmp(const char *s1, const char *s2){ for(int i=0;;i++){ if(s1[i] > s2[i]) return 1; if(s1[i] < s2[i]) return -1; if(s1[i] == 0 && s2[i] == 0) return 0; } }
で良いはずです。
7. dirコマンド
ディスクイメージへの書き込みは、haribote.sys
と同様に
mcopy [ファイル名] -i haribote.img ::
で行います。適当なファイルを書き込むコマンドを、Makefile
のharibote.img
のところに追加しておきましょう。