[1chipMSX]

SD-RAM (32MB) の用途

※情報の正確さは保証できません。

SD-RAM は、MSX内蔵の ROMデータを保持する領域, MSX内蔵の RAM, 似非RAM, VRAM などの用途に利用されているようです。
PLL で 21MHz の 4倍速クロックを生成して 84MHz 駆動になっており、CPUアクセスと VRAMアクセスを時分割多重によって
本来の MSX では別チップで並列アクセス可能なメモリ(ROM, RAM) の帯域を確保しています。


メモ:
メモリの割り当て位置が散在しているのが謎です。
pMemBa0, pMemBa1 がバンクセレクタで 1chipMSX では常に '0'。
pMemDat がデータで 16bit幅(1アドレスに 16bit のデータが対応する)

ブートシーケンス:
本来の MSX では ROM で用意されているモノも SD-RAM 上に確保されているため、電源投入時は不定。
本来の MSX では、MAIN-ROM の 0000H から実行開始されますが、1chipMSX では、SD-RAM をROM の代わりに使っている
ため、起動時に MAIN-ROM等の内容を SD-RAM へ転送する処理が入っています。
IPL-ROM という FPGA内のブロックRAM上に構成された 512byte の ROM から起動します。
IPL-ROM は、回路の一部なので、FPGA電源投入時に回路と一緒にコンフィグROMから読み出されて初期化されます。
FPGA の中にない SD-RAM の内容は初期化されないため、IPL-ROM に書かれたプログラムが初期化します。
IPL-ROM は、まず SD/MMCカードを調査して、ROMイメージファイルが存在すればそこから読み出して SD-RAM へ書き込みます。
(このとき、SD/MMC は、BIOS はまだ無いためDOSを経由しないでアクセスします。FATであることが前提です)
SD/MMCが無い場合や、ファイルがない場合は、FPGAのコンフィグ用シリアルROMに間借りして書き込まれている ROM データを、
SD-RAM へ転送するプログラムが FPGA内の内蔵 SRAM に書き込まれています。(内蔵 SRAM は 32KBくらいしかなくて、
貴重なリソースなので全ての ROMデータを置くことは出来ません)

PSG

[▲上へ]