水島雄太のブログ

個人的かつ雑多なブログです。

20180319

SEGA MASTER SYSTEMのメモリ管理

  • ベースユニットは8kbyte ROM and RAM
  • フロントスロットカードリッジのの現在の容量は 32 kb . 128kbカードも動く
  • Z80A は 64 kb メモリーへのアドレッシングができる。シンプルなメモリ管理システムが組み込まれている
  • モリーマップは 0番地から始まる8kb ROM
  • 8 kb RAMは C000番地からはじまる

システムRAM

RAMは二つの部分に分けられる * $C000 - $DFFF * $E000 - $FFFF

これらはZ80Aのスタックと一時記憶装置として使われる

上から8個目までのRAMはメモリ管理制御レジスタとして使われる。ゲームプログラムとして使ってはいけない。

前方互換性のため、 RAMは $C000 - $DFFF までのアドレッシングに抑える必要がある。

スタックは $DFF8 に配置される必要がある。

MEMORY ENABLES

$3E ポートはメモリー使用フラグを制御する。 個々のbitでシステムROM、システムRAM、カードスロット、拡張スロットのメモリを使用できるようにする。

電源ON 時のメモリー選択

電源ONになったときに、8 kb ROM の$0000から実行がはじまる。 このROMコードは以下のステップで実行される 1. システムが初期化される 2. 小さなプログラムがROMからRAMにコピーされる($C700で) 3. プログラムを実行するために$C700 にジャンプする 4. 全てのROMスペースはdisableされる。そして、RAMにコピーされる ?? 5. ROMスペースはここに設定され、メモリの存在をチェックされる。 それらは以下の順番でチェックされる A. フロントカードスロット B. トップカートリッジスロット C. 後部外部拡張スロット 6. これらの三つのスロットからメモリーは発見され、スロットは使用可能にされる。そしてZ80Aは $0000 にジャンプする 7. メモリーが見つからなければコンソールROMが使用可能にされ、”Insert a cartridge" メッセージがスクリーンに表示される

もし、カードとカートリッジが両方とも接続されていたら、最初にチェックされてカードが優先される

ゲームプログラムはオリジンの$0000 から始まるZ80Aアプリケーションプログラムとして記述される