現在地

MS-DOS ROM


カテゴリー:

先日秋葉原を歩いていて面白いものを見つけて思わず買ってしまいました。


それがこれ、「MS-DOS 3.21」のラベルが貼られたROM、しかもHとLが揃っていたのでMS-DOSのROM化ってどうなっているのか見てみたくなったのでした。

まずROMライタでそれぞれ読んで、一つのファイルに結合しました。

objcopyあたりでできるのかもしれませんが、以前やっつけで作ったツールを流用しました。元はMC68000向けだったので最初エンディアン間違えて……

何か特徴的なデータないかなと眺めていて最初に見つけたのは……


この並びはFAT12っぽいですね。

12bit×2を3バイトにパックし、それがリトルエンディアンでバイトが入れ替わっているといういやらしい仕様、昔FAT潰したフロッピーを手作業で復旧したときの記憶がよみがえってきます。

0xFF7ということは不良クラスタ、一般的なフロッピーのBPBを流用しつつデータのない領域を飛ばしているのかな。

ディスクイメージごとROM化しているみたいですね。

などと考えながら先へ進むとありました。


これはルートディレクトリですね。

MSDOS.SYS, IO.SYSまであるということはRAM領域にロードするわけで、これではPC環境と一緒でただディスクの代わりにROMに書き込まれているだけです。

さすがにROM上での実行は出来ないのかな。

これ以上読んでもあまり面白くはないかも。

ということで最後にリセット処理(FFFF:0000)の部分だけ見てみます。


末尾から16バイトのE9 0D F8のところ、一般的にJMP FARするものと思っていたらここはJMP NEARになってますね。

リセット時はCS=0FFFFHになっているはずでラップアラウンドしてRAM領域を指しそうなんだけどいいのかな? 私が何か勘違いしている? それともこのROMは0C0000H0FFFFFH以外に配置されていて他にもROMがあったのかな?


コメントを追加

Plain text

  • HTMLタグは利用できません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 行と段落は自動的に折り返されます。
※ コメントは原則公開です。個別のご相談などは「ご意見・ご要望」からお願いします。