ねこめもmkII(マークツー)

本家ねこめも (http://nekomemo2.site)の補助用。 主に勉強ネタ。

19日目(アプリ起動まで)

また間が空いたため、18日目を読み返しながら進めている。
感覚的には、実際の自分の理解度は5日目辺りで止まっているので、なかなか進まない。

前回はimgファイルの中身を見る前に他のファイルを追加しなかったので、ファイルリストを出力してもHaribote OSしか出てこなかった。
他のファイルを出すための方法は、いつも参照させていただいているブログにあった。

まず普通のテキストファイルを作る。
 $ echo abcde >> text.txt
として、abcdeとしか書いてないtext.txtを新規作成。
もう一つ、本書に記載されているhlt.hrbを準備してみる。3日目に作成した方法と同じ。
 $ nasm hlt.nas -o hlt.hrb
これらをharib16aのimgファイルに書き込む。
自分の環境では以下。
 $ make -r haribote.img
 $ mcopy -i haribote.img hlt.hrb ::
 $ mcopy -i haribote.img text.txt ::
できたharibote.imgを起動して、結果を確認。
 $ qemu-system-i386 -m 32 -fda haribote.img -enable-kvm

コンソールでファイルリストを出力すると、
HARIBOTE.SYS
HLT.HRB
TEXT.TXT
が出力される。成功。
harib16eのときに、Makefikeに「mcopy -i haribote.img hlt.hrb ::」を追加して、hlt.hrbの動作(フリーズするだけ)も確認できた。

最初はtypeコマンドでtext.txtを見ると、abcdeの最後に怪しい改行コード(?)が出てしまう。
これを踏まえてharibo16b以降を続ける。
ここで出てくるstrncmp関数も無かったため、同じブログに記載されているコードをそのまま使わせていただきました。
ただし自分の場合は別ファイルにせず、bootpack.cのstrcmp同様、更に追記。
haribo16bの修正で、謎の改行コードは消える。
(strcmpとstrncmp関数は最終的にconsole.cに入る)

気になるのは、
 $ hexdump -C haribote.img
とすると、最後の行に

00009a70 00 00 00 63 6f 6e 73 6f 6c 65 00 74 61 73 6b 5f |...console.task_|
00009a80 61 00 20 00 3e 00 6d 65 6d 00 74 6f 74 61 6c 20 |a. .>.mem.total |
00009a90 20 20 25 64 4d 42 00 66 72 65 65 20 25 64 4b 42 | %dMB.free %dKB|
00009aa0 00 63 6c 73 00 6c 73 00 66 69 6c 65 6e 61 6d 65 |.cls.ls.filename|
00009ab0 2e 65 78 74 20 20 20 25 64 00 74 79 70 65 20 00 |.ext %d.type .|
00009ac0 46 69 6c 65 20 6e 6f 74 20 66 6f 75 6e 64 2e 00 |File not found..|
00009ad0 42 61 64 20 63 6f 6d 6d 61 6e 64 2e 00 00 00 00 |Bad command.....|
00009ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
00168000

と、謎のデータがくっついている。これが気になる。
harib16dのbootpack.cファイルの分割で見直しを行ったが、まだ解決していない。

あとは個人的にどうしても構造体のFILEINFOについて納得できず、検索しまくった。
18日目に出てきたとき、以前保存した情報を今になって取り出したということで納得したが、19日目でもやはり気になってしかたがない。
なのでここでも、とにかくそういう風に作られているため、と考えて先進める。
(でも今後も参考になると思うブログを集めて、いつも通りリンクさせていただいています)

FAT12フォーマットについては、まだ自分は完全には理解ができてないのでもう一度見直す必要がある。
それより前からFATの領域がなぜ二つあるのかずっと引っ掛かっていたが、この章の中で「大切な内容だからバックアップのため」とさらっと書かれていて拍子抜けした。
後からこんな感じでいろいろわかってきたりするので、続けることに意味があると思う。

 


今回参照させて頂いたサイト:
http://bttb.s1.valueserver.jp/wordpress/blog/2018/02/16/makeos-19
https://no000.hateblo.jp/entry/2020/02/03/180959
https://yn0014.hatenablog.com/entry/2019/04/02/232944
https://yuyubu.hatenablog.com/entry/2018/06/09/30日OS自作本18日目
https://github.com/HobbyOSs/opennask/wiki/%EF%BC%93%E6%97%A5%E7%9B%AE---%E3%83%AA%E3%83%B3%E3%82%AF%E5%BE%8C%E3%81%AEimg%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E6%AF%94%E8%BC%83