Assembler/なぜx86ではMBRが"0x7C00"にロードされるのか?
で「ようやく0x7C00の起源が分かった」・・・と力を抜きかけたけど、よくよく考えたら
5160では0x7C00が使われている
のが判明しただけで、
5150「から」0x7C00が使われている
のは未だに不明のまま。
本当に証明したいなら、「ここまでは0x7C00が使われて居らず、この時点から0x7C00が使われ始めた」という境界線を見つけないといけない。
それともう一つ、0x7C00の値の意味も未だに不明。ちょうど32KB、0x8000から1024バイト分(=512バイトx2)マイナスされたのが0x7C00になるが、なぜわざわざこのアドレスになったのか?どういう意味があるのか?
CP/Mまで手を広げて探索中。そもそも、IBMはPC-5150のOSとしてDigital Research社のCP/Mを狙っていた。
ROM BASICはMicrosoftが開発し、結局OSもMicrosoftが開発している。ただしOSについては、Digital Research社によるCP/Mの8086対応の遅れにしびれを切らしたSCPが、Tim Paterson作成の86-DOS (QDOS)を1980年に発表する。で、これをビル・ゲイツが買い取ってIBM PCに載せた。
ということはMS-DOSの源は86-DOSということになり、さらにその基本的な設計はCP/Mまで遡ることになる。
CP/Mでは"BIOS"という概念がOSの中に取り込まれていた。
・・・ということは、86-DOSの中にもBIOSに相当する部分があったのだろうか?ROM BASICも、OSもMicrosoftが作っている。当然、ROM BASICを起動する為のインターフェイス、INT 18h 割り込みの部分もMicrosoftが絡んでいて間違いなさそう。ということは・・・もしかして、ROM BIOSもMicrosoft製なのかな?86-DOSからBIOSに相当する部分を抽出し、BASICからもDOSからも呼べるように整えられる・・・という非常に自然な流れに思える。