よもぎのOS自作入門 19日目/30日
はじめに
これは2020年夏休み企画「30日でOS自作してみよう!」19日目の記事です。
企画についてはこちら
昨日やったことを書いていきます。
昨日の進捗
cat
コマンドを追加し、hlt
コマンドで起動する何もしないアプリケーションを動かしました
昨日やったこと
最初にcat
コマンドを実装しました。
MS-DOSでいうところのtype
コマンドなわけですが、このcat
とtype
の文字列長の違いで苦しめられました。*1
ファイルタイプ*2をチェックするところもfile.type & 0x18 == 0
としなきゃいけないところをfile.type & 0x10 == 0
としていたし。*3
ずっとfile not found.
って表示されてめうってなっていました。
よくみるとちょっとだけ表示が崩れています。♪と◎みたいな文字が割と見えます。 これはCR+LFで、制御文字をそのまんま表示しちゃっているからです。*4 よしなにして
このあと、512バイト以上のファイルを取り扱えるようにFATに対応しました。
FATでは、FAT*5に次のクラスター位置の情報が並べられています。
3バイトに2つ分の次のクラスター位置の情報が並べており、例えばAB CD EF
はDAB EFC
にデコードされます。
*6
そして長くなったファイルを分割しました。これは特に話すことはないので割愛。
このあと初めてのアプリケーションを作ります。HLT
命令をループするだけなので特に何もなく停止します。
アセンブリ言語で書きました。
今日も一日頑張るぞい!