FreeDOS

こつこつと解析を続ける

kernel.obj の解析を、こつこつと続けている。 分かってしまえば、大した事はない。 本当に、そう思うんだけれど、この差が、何百光年にも感じる。 ヤマトは、一年かけて地球とイスカンダルの間を往復したけれど、 こつこつと続けていれば、何百光年の道程も…

Object Module Format

*.obj の一形式である(古めの) Object Module Format(OMF) を調査中。 とりあえず、Watcom の出力形式が、どうやらこれらしいと。 他にも、多数のフォーマットが存在するようなのだが、 まとめてこいつらの相手をするのは、さすがに、厳しい。 とりあえず、…

*.objの中身は?

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 の挙動が怪しい?

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 まとめ

結局、逆アセンブルしたリストを印刷して、紙の上で整理する事にした。 やっぱり、紙の方が便利な場面って、結構、あるよね。 ペーパレスが叫ばれるようになってから随分経つけど、紙媒体は無くならないと思う。 さて、PBR の方ですが、ざっとまとめてしまう…

パッツンパッツン

で、とりあえず、ブートストラップローダのアセンブルには成功!! バイナリエディタで、中身を眺めてみる。 いや〜、どれも、512Byteギリギリまで使っている感じだ。 と言うか、ソースから受けた印象だと、良く512Byteに収まっているよな〜、って感心してしま…

makeとnamkeは、似ているようで、非なる物?

とりあえず、ブートストラップローダだけでも、コンパイル... アセンブル?してみようと、 適当に ROSe の開発環境をコピーして make って叩いたら、分からない書式だよ〜、とか怒られた。 エラーになっている行を眺めてみると、!include とかある。 GNU Mak…

ブートストラップローダ

FreeDOS のブートストラップローダは、\kernel\boot 以下に格納されている模様。 DOS 互換であるから、勿論?ファイルシステムは、FAT が前提となっているようだ。 FAT12/FAT16, FAT32, FAT32LBA と3種類が用意されている。 FAT12/FAT16 と FAT32 では、ヘ…