86-DOSがなぜディスクの先頭セクタを200Hにロードするのか、なぜIBM PC 5150のROM BIOSおよび現在に至る互換BIOSがMBRを7C00Hにロードするのか、その値の意味は何か。 一通り謎が解けたので、現在まとめ記事を書いてます。今週中に公開予定。 それにしても当時のアセンブラって・・・現在とは少し違います。 86-DOSのコードで頻出していて、悩まされたのが UP と PUT 100H の二つ。 UPは現在の"CLD"のことでした。(シミュレータ上で86-DOSのMonitorコードをステップ実行してて、シミュレータの逆アセンブリ結果を見て初めて理解) PUTの方は擬似コードなのですが、正直よく分からないです。ORGも併用されてるので、そのコードがどこのメモリに展開されるのか分かりづらい。 86-DOSのMonitorやbootstrapって、割り込みベクタが調整される前に動作するコード・・・つまり、キーボード入力やディスクI/Oを、I/Oポートの読み書きを駆使し、割り込みは一切使わずに書かれている・・・スゲー。 こういうのを目の当たりにすると、つくづく「たった四半世紀でここまで変わるものなのか・・・」と感心というかあっけにとられます。これからの25年、50年はどうなっちゃうんでしょうね。