メモリーマップ
68000から見たアドレス空間
「R/W」はそのアドレス範囲に対する「読み込み可能/書き込み可能」を表しています。
アドレス範囲によっては読み込み可能の場合でも、無意味なデータを返します。
アドレス範囲によっては読み込み不可の場合に読み込むとロックアップします。
書き込み不可の場合も同じです。
種別 | R/W | アドレス範囲 (Byte) | 説明 |
ROM | R/- | 0x000000 - 0x0000FF | 68000割り込みベクターテーブル (詳細は旧モトローラか現フリースケールの資料を参照) |
ROM | R/- | 0x000100 - 0x00010F | "SEGA MEGADRIVE" 又は "SEGA GENESIS" |
ROM | R/- | 0x000110 - 0x000117 | メーカーコード |
ROM | R/- | 0x000118 - 0x00011F | 製造日付 |
ROM | R/- | 0x000120 - 0x00014F | ゲームタイトル (国内) |
ROM | R/- | 0x000150 - 0x00017F | ゲームタイトル (海外) |
ROM | R/- | 0x000180 - 0x000182 | "GM" (ゲーム用) 又は "AI" (教育用) |
ROM | R/- | 0x000183 - 0x00018A | 製品コード |
ROM | R/- | 0x00018B | '-' |
ROM | R/- | 0x00018C - 0x00018D | 製品バージョン |
ROM | R/- | 0x00018E - 0x00018F | ROMチェックサム |
ROM | R/- | 0x000190 - 0x00019F | サポートデバイス |
ROM | R/- | 0x0001A0 - 0x0001A3 | ROMスタートアドレス |
ROM | R/- | 0x0001A4 - 0x0001A7 | ROMエンドアドレス |
ROM | R/- | 0x0001A8 - 0x0001AF | RAMスタートアドレス |
ROM | R/- | 0x0001B0 - 0x0001B3 | バックアップデバイスの種類 (無し, SRAM, EEPROM) |
ROM | R/- | 0x0001B4 - 0x0001B7 | バックアップデバイスのI/Oスタートアドレス |
ROM | R/- | 0x0001B8 - 0x0001BB | バックアップデバイスのI/Oエンドアドレス |
ROM | R/- | 0x0001BC - 0x0001EF | モデム情報 |
ROM | R/- | 0x0001F0 - 0x0001FF | リージョンコード, 'J' (Japan), 'U' (US), 'E' (Euro), 複数表記可能 |
ROM | R/- | 0x000200 - 0x3FFFFF | ユーザー領域(4MBytes = 32Mbits) プログラムコードとデータコードはここに配置する |
-/- | |||
8bit I/O | R/W | 0xA00000 - 0xA01FFF | Z80のRAM (8kBytes) |
(予約) | R/W | 0xA02000 - 0xA03FFF | (Z80のRAMを増設した場合に有効?) |
8bit I/O | R/W | 0xA04000 | YM2612 表レジスター |
8bit I/O | R/W | 0xA04001 | YM2612 表データ |
8bit I/O | R/W | 0xA04002 | YM2612 裏レジスター |
8bit I/O | R/W | 0xA04003 | YM2612 裏データ |
-/- | |||
8bit I/O | R/- | 0xA10001 | 本体バージョン レジスター |
8bit I/O | R/W | 0xA10003 | コントロール1 データ レジスター |
8bit I/O | R/W | 0xA10005 | コントロール2 データ レジスター |
8bit I/O | R/W | 0xA10007 | 拡張ポート データ レジスター |
8bit I/O | R/W | 0xA10009 | コントロール1 コントロール レジスター |
8bit I/O | R/W | 0xA1000B | コントロール2 コントロール レジスター |
8bit I/O | R/W | 0xA1000D | 拡張ポート コントロール レジスター |
8bit I/O | R/W | 0xA1000F | コントロール1 シリアル送信データ レジスター |
8bit I/O | R/W | 0xA10011 | コントロール1 シリアル受信データ レジスター |
8bit I/O | R/W | 0xA10013 | コントロール1 シリアル コントロール レジスター |
8bit I/O | R/W | 0xA10015 | コントロール2 シリアル送信データ レジスター |
8bit I/O | R/W | 0xA10017 | コントロール2 シリアル受信データ レジスター |
8bit I/O | R/W | 0xA10019 | コントロール2 シリアル コントロール レジスター |
8bit I/O | R/W | 0xA1001B | 拡張ポート シリアル送信データ レジスター |
8bit I/O | R/W | 0xA1001D | 拡張ポート シリアル受信データ レジスター |
8bit I/O | R/W | 0xA1001F | 拡張ポート シリアル コントロール レジスター |
-/- | |||
8bit I/O | -/W | 0xA11000 | カートリッジのメモリーアクセス方式 (0 = SRAM/ 1 = DRAM) |
-/- | |||
8bit I/O | R/W | 0xA11100 | Z80 HALT (R: 0 = HALT状態, R: 1 = 進行中, W: 0 = HALT解除, W: 1 = HALT要求) |
-/- | |||
8bit I/O | -/W | 0xA11200 | Z80 リセット (W: 0 = リセット, W: 1 = リセット解除) |
-/- | |||
16bit I/O | R/W | 0xA12000 | リセット/INT2 (メガCD接続時のみ有効) |
16bit I/O | R/W | 0xA12002 | メモリー モード (メガCD接続時のみ有効) |
16bit I/O | R/W | 0xA12004 | CDCモード (メガCD接続時のみ有効) |
16bit I/O | R/W | 0xA12006 | 水平割り込みベクター (メガCD接続時のみ有効) |
16bit I/O | R/- | 0xA12008 | CDCホスト データ (メガCD接続時のみ有効) |
16bit I/O | R/W | 0xA1200C | ストップ ウォッチ (メガCD接続時のみ有効) |
16bit I/O | R/W | 0xA1200E | コミュニケーション フラグ (メガCD接続時のみ有効) |
16bit I/O | R/W | 0xA12010 - 0xA1201F | コミュニケーション コマンド (メガCD接続時のみ有効) |
16bit I/O | R/- | 0xA12020 - 0xA1202F | コミュニケーション ステータス (メガCD接続時のみ有効) |
-/- | |||
16bit I/O | -/W | 0xA14000 - 0xA14003 | TMSS (起動後、制限時間内に "SEGA" をセットする) |
-/- | |||
8bit I/O | -/W | 0xA130F1 | メモリーマッパー コントロールレジスター (MMC搭載カートリッジのみ有効) |
8bit I/O | -/W | 0xA130F3 | メモリーマッパー バンク1 レジスター (MMC搭載カートリッジのみ有効) |
8bit I/O | -/W | 0xA130F5 | メモリーマッパー バンク2 レジスター (MMC搭載カートリッジのみ有効) |
8bit I/O | -/W | 0xA130F7 | メモリーマッパー バンク3 レジスター (MMC搭載カートリッジのみ有効) |
8bit I/O | -/W | 0xA130F9 | メモリーマッパー バンク4 レジスター (MMC搭載カートリッジのみ有効) |
8bit I/O | -/W | 0xA130FB | メモリーマッパー バンク5 レジスター (MMC搭載カートリッジのみ有効) |
8bit I/O | -/W | 0xA130FD | メモリーマッパー バンク6 レジスター (MMC搭載カートリッジのみ有効) |
8bit I/O | -/W | 0xA130FF | メモリーマッパー バンク7 レジスター (MMC搭載カートリッジのみ有効) |
-/- | |||
16bit I/O | R/W | 0xC00000 | VDP データポート |
16bit I/O | R/W | 0xC00004 | VDP コントロールポート (W: コントロールレジスター設定, R: Z80のバンクエリア) |
16bit I/O | R/- | 0xC00008 | VDP HVカウンター |
8bit I/O | -/W | 0xC00011 | SN76489 データポート |
16bit I/O | -/W | 0xC0001C | VDP ディスプレイ レジスター (非公式, 表示方法を変更出来る) |
-/- | |||
(予約) | R/W | 0xE00000 - 0xFEFFFF | (本体の68000用RAMを128kBytes以上に増設した場合に有効) |
RAM | R/W | 0xFF0000 - 0xFFFFFF | 68000の64kBytes RAM (メガCD動作時はこの領域にしかメイン68000コードを配置出来ない) |
カートリッジ領域
68000の割り込みベクター (アドレス 0x000000〜0x0000FF) の次の領域はカートリッジ情報
(アドレス 0x000100〜0x0001FF) です。
その次の領域 (アドレス 0x000200以降) がカートリッジの残り領域です。
これら全て (アドレス 0x000000〜0x3FFFFF) でカートリッジ全体となります。
Z80に関する領域 - Z80用RAM
Z80は68000によってリセットされるとアドレス 0x0000 (68000側から見るとアドレス 0xA00000)
からスタートします。
このアドレスから8KBytesの領域はRAMなので、
68000側でZ80をHALTさせてからアドレス 0x0000〜0x1FFF (68000側から見ると0xA00000〜0xA01FFF)
にZ80のバイナリコードを書き込み、
書き込み終わったらZ80をリセットする事で、Z80の動作を開始出来ます。
Z80に関する領域 - ROMカートリッジ
Z80もカートリッジROM全域にアクセス可能で、 バンクセレクトにより68000の16MBytesあるメモリー空間を全てカバーしています。バンクセレクトはZ80自身による アドレス 0x6000 への書き込みで行います。
1バンクは32KBytesで、512バンクあり、 バンクセレクトされたROM領域はアドレス 0x8000〜0xFFFF にマッピングされます。
Z80に関する領域 - その他
アドレス 0x4000〜0x4003 (68000側から見るとアドレス 0xA04000〜0xA04003) がFM音源、
アドレス 0x7F11 (68000側から見るとアドレス 0xC00011) がPSG音源です。
アドレス 0xA10000 〜 0xA1001F にアクセスする際は、
アクセスする前にZ80をHALTさせないと正常な動作にならない事があるそうです。