メモリMAP

PC/AT互換機(あえてDOS/V機とは呼ばない事!)の
 メモリMAPを調べてみます。

 OSDev で かなり詳細に調べてますね!
 ここはいつも参考になる。 素晴らしい!!
    ↓
 http://community.osdev.info/index.php?%28AT%29memorymap

 ちなみに、LINUXはこんな感じ。↓ (90000hから使っている?)
 http://www016.upp.so-net.ne.jp/e17/lb/setupAT.html


アドレス 内 容  説 明 
_0000h〜_03FFh割り込みベクタ4バイトづつ、(セグメント+オフセット)×256個。
_0400h〜_7BFFh30.72Kバイトの空き?使ってもいいのかな?
_7C00h〜_7DFFh512バイト。●ここにブートプログラムが読み込まれる。
_7E00h〜_7FFFh512バイト。ここもブート用に使って良いのでは?
_8000h〜9_FFFFh622.592Kバイト。ここが自由に使えるRAM領域(ここまでで640KB)
A_0000h〜B_FFFFh画面表示用ビデオRAM ここに書き込むと画面に表示される
C_0000h〜F_FFFFhビデオBIOSとか、いろいろここは使わない方が無難
10_0000h〜EF_FFFFh使えるRAMの可能性大。チェックしてから使用。(ここから先が、A20問題)
F0_0000h〜FF_FFFFh使えるない可能性あり。チェックしてから使用。
100_0000h〜無限大実装されている場合に限り・・・もう少し、大人になってから使ってみます。


ここで重要なのは、●の 7C00h〜 です。
ここに、FDやHDから、最初のプログラムが読み込まれ実行されるようです。

では、なぜ、こんな中途半端な 7C00h なんでしょう?

私が想像するに、

  最初にAT機を(のBIOSを)開発した技術者が、

   ① 1クラスタ(512バイト)もあれば、IPLローダぐらいは書けるだろう!

   ② それでも足りなくなるとか、1クラスタが1024になったら困るんで、

     もう1クラスタ(合計1024バイト)あいてれば、十分だろう?

   ③ IPLで OSを 0400h〜に読み込ませれば・・・

   ④ 0400h〜7BFFh(約30KB)もあれば、OSには十分なはず?
              ↑
          この考えが甘いな(笑)

   ⑤ そうすれば、7C00h〜7FFFhも OS用に使えて無駄にならないし、

    (最悪、OS用のスタックとして使ってもOK)

   ⑥ これなら、8000h〜は、アプリケーション用として、すっきり使える。

    (私って、天才!!)


 っと、こんな風に考えたんだと思います。


よって、そっくりそのまま踏襲しようと思います。

OSの容量が32Kバイトを超えないうちは・・・