サブページ
メモリマップ
Amigaの68000は24ビットアドレスバスを持ち、16 MBのアドレス空間($000000–$FFFFFF)を提供する。この空間はRAM、カスタムチップレジスタ、CIAレジスタ、拡張スペース、ROMに分割される。Gary(アドレスデコーダチップ)が各バスサイクルでどのデバイスが応答するかを決定する。
Chip RAMとFast RAM
Amigaのメモリマップで最も重要な区別はChip RAMとFast RAMの違いである。
Chip RAM($000000–$07FFFF、Fat Agnusでは$0FFFFF)は68000とカスタムチップの両方からアクセス可能。カスタムチップが必要とするすべてのデータ――ビットプレーングラフィックス、スプライト、オーディオサンプル、Copperリスト、Blitterソース――はChip RAMに存在しなければならない。AgnusがDMAアドレスを生成し、メモリの下位部分しかアドレスできないためである。
Fast RAM($200000以上)は68000からのみアクセス可能。カスタムチップからは見えない。利点は、68000がDMAとの競合なしにフルスピードでアクセスできること――だから「fast」。DMAアクセスを必要としないプログラムやデータ構造は、利用可能であればFast RAMに配置すべきである。
Slow RAM($C00000–$D7FFFF)はA500のトラップドア拡張RAM。「fast」アドレス範囲にあるにもかかわらず、チップバス上にあるためDMA競合の影響を受ける――真のFast RAMより遅いがカスタムチップからもアクセスできない。両方の世界の最悪だが、拡張なしよりはましである。
CIAアドレス空間
2つのCIA 8520チップはメモリマップ上で独特な位置を占める。CIA-Aは$BFE001から始まる奇数バイトアドレスに、CIA-Bは$BFD000から始まる偶数アドレスに配置される。この珍しい配置は、Garyがアドレスをデコードしてデータバスの異なるハーフにCIAを接続する方法の副作用である。
各CIAは16のレジスタを持ち、256バイト間隔で配置される(A0–A3とA8–A11のみデコード):
CIAは6800互換同期バスプロトコル(VPA̅/VMA̅/Eクロック経由)を使用するため、各CIAアクセスには約1.4 µsかかる――カスタムチップレジスタアクセスの約5倍遅い。
カスタムチップレジスタ空間
カスタムチップレジスタは$DFF000–$DFF1FFを占める――約200の個別レジスタを含む512バイト。多くはライトオンリー(68000は値を書き込めるが読み返せない)で、読み取りレジスタは同じアドレスで異なる機能を持つ。
レジスタはこの空間内でサブシステムごとに構成される:
Copperは$040未満のレジスタへのアクセスが制限されている(DMAコントローラや自身の再プログラミングを防ぐため)。COPCONのビット0をセットすると、$040–$07E(Blitterレジスタ)へのアクセスも許可される。
ROMとオーバーレイ
AmigaのOS、Kickstartは$FC0000–$FFFFFFのROMに存在する(A500では256 KB)。電源投入時、68000はアドレス$000000からリセットベクタを読む。この時点でRAMはゴミデータを含んでいるため、GaryがROMオーバーレイを有効にし、Kickstart ROMを一時的に$000000にミラーする。CIA-Aのビット0(OVL)への最初の書き込みでオーバーレイは無効になり、$000000はChip RAMに戻り、ROMは$FC0000でのみ見える。
A1000 WOM(Write-Once Memory)
A1000にはROMがなかった――代わりにWOM(Write-Once Memory)、$FC0000に256 KBのライトワンスRAMがあった。電源投入時、$F80000の小さなブートストラップROM(8 KB)がフロッピーディスクからKickstartをWOMにロードした。書き込み後、WOMは次のリセットまで変更できなかった。これによりA1000は異なるディスクからブートするだけで異なるKickstartバージョンを使用できた――後のモデルではよりシンプルで高速なマスクROMアプローチのために廃止された柔軟性である。