step 3 - プログラムのロード
プログラムロードに成功!

 三日目の途中(p.60あたり)ですが、区切りがいいのでここでまとめときます。 右の画像の通り、とりあえずプログラムのロードまで成功しました。 作成した(というか写した)ソースと動いたイメージなどを下にアップしときます。

本書では二日目の途中からディスクイメージを作成するツールの様なのが 出てきていますが、Macでは動かないので、 ここで必要なイメージを作るRubyスクリプトを書いてみました。 Xcode をインストールしていれば自動的にRubyもインストールされているはずですので (うちではバージョン 1.8.2が入ってました)、Xcodeを入れている方はそのまま動くと思われます。 Macで勉強されてる方がいらしたらお試しください。

完成イメージは「haribote.img」で、アップしたファイルの中にも入れていますが、 ダウンロードしたファイルを展開したフォルダで、下記の通り make を実行しても作成できます。

iMac:xx$ make
nasm ipl59.asm -o ipl59.img -l ipl59.lst
nasm os59.asm -o os59.img -l os59.lst
ruby mkimg.rb ipl59.img os59.img haribote.img


ダウンロード:step3.zip
 →ipl59.asm, os59.asm, makefile, mkimg.rb, haribote.img を含む。


ディスクイメージについて

 今回、素直に動かなくてようやく自分で作業をしている感じになったのですが、 最初はOS(というかプログラム)の部分がメモリ内の思い通りの位置に 展開されない状況が発生してしまいました。

当初、ディスクイメージの作成する際に「IPL+Padding+OS」という風に必要最小限の バイナリのみを書き込む様にしていたのですが、これではOSの部分が入っているセクタが 不完全(512バイト未満になる)になっていて、「Q」のBIOSはこのセクタを読んでくれない様です。 イメージ作成スクリプトを末尾にもPaddingを入れる様に変更したところ、うまく行きました。

この辺り、実際にどこまで必要かが不明です。 本書ではFD全体のイメージを作成している様なのですが、 実際にFDに書き込む際には必要最小限の物だけ書き込めば、 後は不定値が入っているだけの状態になって、 問題なく動く様な気もします。 まあ、このあたりは実機で動かしてみないとどうなるかはわかりませんね。


疑問点とメモ

 三日目の途中まで読んで出てきた疑問点と忘れそうな点をメモしておきます。

以上、本日は写すだけでなく、デバグの様な物をしたのでちょっと充実感ありです。 ただ、実機でもそうなんでしょうが、エミュレータで動作させていると デバッガが使えないので、かなりデバグがしにくいですね。今後が大変そうです。 ちなみに、今回はディスクイメージにバイナリエディタで特定の値を書き込み、 どこまで読まれているかを出力しながらあたりをつけました。 バイナリエディタすごい便利!


(2006/05/05)

ぐうたラボ...