FreeDOS
kernel.obj の解析を、こつこつと続けている。 分かってしまえば、大した事はない。 本当に、そう思うんだけれど、この差が、何百光年にも感じる。 ヤマトは、一年かけて地球とイスカンダルの間を往復したけれど、 こつこつと続けていれば、何百光年の道程も…
*.obj の一形式である(古めの) Object Module Format(OMF) を調査中。 とりあえず、Watcom の出力形式が、どうやらこれらしいと。 他にも、多数のフォーマットが存在するようなのだが、 まとめてこいつらの相手をするのは、さすがに、厳しい。 とりあえず、…
kernel.asm を追い始めて、直ぐに、あれ?っと思った。 マップファイルに含まれるシンボルは、基本的に、global な物だけのようだ。 まぁ、考えてみれば、local で閉じている物については、 その他のファイルとの関連性とか気にする必要は無いもんな。 当た…
さて、ようやくビルド出来たので、マップファイルを眺めてみる。 * = 参照されないシンボル + = シンボルはローカルでの参照のみです s = シンボルはスタティックです アドレス シンボル ======== ======== モジュール: kernel.obj(kernel.asm) 0000:0002 _L…
ようやく、ビルドが通るようになった。 とは言っても、最も安易な解決方法による。 つまり、古いバージョンのコンパイラを探してきて、 ソースが前提とする処理系のバージョンに合わせただけ。 しかし、これが、ある意味、正攻法とも言えそうな?(笑) 参考ま…
IDE に慣れ過ぎてしまった自分にとって、 最近?のコンパイラやリンカのオプション、 ちょっと、多過ぎです。 何故に、たかが、ローレベルの出力をしたいだけなのに、 これほど、悩まないといかんのかと。 Windows アプリだとか、COM DLL だとか、 そういう…
半ば、消去法で、OpenWatcom を用意して、 とりあえず、何も考えずに、ビルド実行。 当然の事だが、ビルド通らず。 こりゃ、しんどい。
コンパイラやリンカの動作を理解するには、 実際にやってみるのが早かろうと思ったのだが、 FreeDOS が前提とする環境が、これまた、色々と問題ありというか... 恐らくは、当時 FREE であった処理系で構成したかったのだろうが、 Turbo C や Borland C は、…
FreeDOS で、Ctrl+C が、どのように処理されるのか、 それを追う為に FreeDOS の中身を追い掛けようと、 ソースファイルを展開したまでは良かったが、 さて、こいつら、どこから始まっているんだろう? もしかして、僕は、基本的な事すら、理解していないの…
Ctrl^C の処理を色々と調べているうちに、 FreeDOS で、ちょっと、おかしな挙動を見付けた。 具体的には、以下のような手順。 C:\>more ^C C:\>とすると、直後、一文字分の入力が無効になる。 内部コマンドや他の外部コマンドでは、今のところ、 この現象は…
MS-DOS の場合、IO.SYS → MSDOS.SYS → COMMAND.COM の順。 DR-DOS の場合、IBMBIO.SYS → IBMDOS.SYS → COMMAND.COM の順。 なので、FreeDOSの場合も、KERNEL.SYS → ???.SYS → COMMAND.COM かと思いきや、 KERNEL.SYS = IO.SYS + MSDOS.SYS みたいな存在だと!!…
結局、逆アセンブルしたリストを印刷して、紙の上で整理する事にした。 やっぱり、紙の方が便利な場面って、結構、あるよね。 ペーパレスが叫ばれるようになってから随分経つけど、紙媒体は無くならないと思う。 さて、PBR の方ですが、ざっとまとめてしまう…
で、とりあえず、ブートストラップローダのアセンブルには成功!! バイナリエディタで、中身を眺めてみる。 いや〜、どれも、512Byteギリギリまで使っている感じだ。 と言うか、ソースから受けた印象だと、良く512Byteに収まっているよな〜、って感心してしま…
とりあえず、ブートストラップローダだけでも、コンパイル... アセンブル?してみようと、 適当に ROSe の開発環境をコピーして make って叩いたら、分からない書式だよ〜、とか怒られた。 エラーになっている行を眺めてみると、!include とかある。 GNU Mak…
FreeDOS のブートストラップローダは、\kernel\boot 以下に格納されている模様。 DOS 互換であるから、勿論?ファイルシステムは、FAT が前提となっているようだ。 FAT12/FAT16, FAT32, FAT32LBA と3種類が用意されている。 FAT12/FAT16 と FAT32 では、ヘ…