日記 | OS日記

日記 | OS日記

2週間弱PCを封印していたため、全く開発進んでいません (それだけが理由だろうか…?
どうやらアセンブラで書いた部分が間違っているらしく、Cで作ったプログラム (実行バイナリへのコンパイルはできた) が正常に呼び出せない。
しょうがないので、一から書き直すことにした。
Windowsでのディスクフォーマットで、「MS-DOS起動ディスクを作る」的なのがあるから、それでMS-DOSの起動プログラムを手に入れ、NASMのndisasmコマンドで逆アセンブルし、参考にしながら作ってます。文字列のアドレスの一覧を、わざわざ下位バイトだけ足したりして計算するようにしたり、CXレジスタを極力0にしておいて、下位バイトだけ書き換えたり、いろいろと小ワザ使ってる。それでいて、 (512バイト中) 6バイトぐらい?しか残っていない。すごいなー。
ところで、「30日間でできる~」をPC封印期間中にざっと目を通してみた。
30日間で作るというのと、楽しく作るという趣旨で書かれたものだから、これはひどい と言いたくなるようなところがいくつかあった。
たとえば、ファイルシステム。なんと、書き込みができない。それどころか、読み込みも実はやってない。
以下、イメージ (この文章のまま書かれているわけではない)

リアルモード時はBIOSの割り込みで読み込めたよね♪だけど、プロテクトモードだとできないよね♪だから、
最初にフロッピーディスクのデータを全部メモリ上に読み込んじゃえー♪♪♪

というわけで、かなり長い間、自力でネット上とかで調べながら開発を進める期間が続きそう…。
最初っからグラフィックモードにしちゃうと文字表示させるの大変だから、テキストモードのVRAM使ってデバッグとかしようっと。
ではまたいつか。

おまけ

現在描ける限界の瀬川おんぷちゃん
SHARP Brain で動くペイントソフトあるからそれ使ってるけど、塗りつぶしアルゴリズムが不完全? それとも余計な線が入る? かなんかして、完全に塗りつぶせなくなることがあるのが困る。