home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

日記/2010/03/12/86-DOSの時点ではMBRは200Hにロード

日記/2010/03/12/86-DOSの時点ではMBRは200Hにロード

日記 / 2010 / 03 / 12 / 86-DOSの時点ではMBRは200Hにロード
id: 612 所有者: msakamoto-sf    作成日: 2010-03-12 16:30:53
カテゴリ:

IBM PC(5150)には、Microsoftが開発したPC-DOS(MS-DOS)が搭載されたが、その前身はSeattle Computer Products の Tim Paterson が開発した 86-DOS だった。

86-DOSはCP/Mの8086対応版が中々リリースされないため、Tim Paterson がとにもかくにもで開発したOSで、当初は"QDOS"(Quick and Dirty Operating System)とも呼ばれていた。

86-DOSのPDFマニュアルが現在も入手可能で、"86-DOS Programmers Manual"の"BOOTSTRAP LOADER LISTING"に、BOOTSTRAP用のコードが載っている。

これを見ると、200Hに最初のセクタがロードされ、そこにJMPするようになっている。

ようやくここで、"7C00H"が最初に現れたのが IBM PC 5150 のROM BIOS INT 19hであることが判明した。
(もちろん、それ以前のコンピュータシステムで、偶々 7C00 が使われていた可能性も否めない。しかし、現在のx86ベースPCの歴史の中で初めて出てきたのは、5150のROM BIOSで確定して良いだろう)

いよいよパズルのピースが残り一つ、になってきた。
IBM PC 5150 のROM BIOS自体は IBM の David Bradley が開発した。同氏は有名な"Alt-Ctrl-Del"キーコンビネーションをBIOSで導入した人物としても知られている。
最後のピース、7C00Hというアドレスを決定したのはDavid Bradleyなのか?なぜそのアドレスにしたのか?は同氏に質問してみるしかない。
特に、5150の最小メモリモデルは16KBのRAMしか搭載していない。ROM BIOSは固定で高位アドレスに割り当てられるので関係ないとしても、7C00H(=32KB - 1024B)へMBRをロードしようとしてもアクセス出来ない筈である。
少なくとも割り込みベクタを確保する為、最小の16KBはアドレス0から割り当てられる。つまり32KB - 1024Bにはどう頑張っても届かない筈。(16KBの場合はMAXで3FFFHまで)

あと少しで"0x7C00"の謎が解ける・・・と良いなあ。


プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2010-03-12 16:43:29
md5:55fb6d391cb11dcc1bbfa8628e9816f1
sha1:4cff6fedd7315702ae9ce3fa8c2cfb308b10b93b
コメント
コメントを投稿するにはログインして下さい。