SRAMを128Kに拡張したので、Z80のアクセス範囲64KをフルRAMにしたいと思います。
増設した128KのSRAMですが、このメモリをZ80の有効アドレス範囲64Kのメモリに割り付ける役目がMMUです。
(MMU:メモリ・マネージメント・ユニット)
用語が難しいですが、増設した128Kのアドレスを物理アドレス、Z80の有効アドレス範囲64Kを論理アドレスというようです。
物理アドレスを論理アドレスに配置するのがMMUの3つのレジスタです。
物理アドレスを指定するレジスターは2つ
バンクエリア・ベースアドレス・レジスタ BBR
コモンエリア・ベースアドレス・レジスタ CBR
論理アドレスを指定するレジスタ
コモン・バンク・エリア・レジスタ CBAR
このCBARはさらに2つの指定域コモンエリア(CA)とバンクエリア(BA)で構成されます。
CA及びBAはそれぞれ論理アドレスの16ビットの上位4ビットを指定できます
16進で表示すると 0000、1000,2000・・・・E000、F000といった設定です
CAとBAは CA>BA、または、CA=BAの関係である必要があります。
例1:
CA>BA: 例 BA=1(1000の指定)、CA=F(F000の指定)
0000~0FFF:リセット直後の64Kアドレスマッピング0000~0FFF番地
フルアドレス(A18~A0)で表記すると 00000~00FFF
1000~EFFF:BBRで示される開始アドレスから1000~EFFFの範囲アドレス
BBRを20とするとフルアドレス(A18~A0)で表記すると20000
アクセスされる範囲は21000~2EFFF
F000~FFFF:CBRで示される開始アドレスからF000~FFFFの範囲アドレス
CBRを20とするとフルアドレス(A18~A0)で表記すると20000
アクセスされる範囲は2F000~2FFFF
例2:
CA=BA: 例 BA=8(8000の指定)、8(8000の指定)
0000~7FFF:リセット直後の64Kアドレスマッピング0000~7FFF番地
フルアドレス(A18~A0)で表記すると 00000~07FFF
8000~FFFF:CBR(=BBR)で示される開始アドレスから8000~FFFFの範囲アドレス
CBRを20とするとフルアドレス(A18~A0)で表記すると20000
アクセスされる範囲は28000~2FFFF
この場合、CA及びCBRの設定が優先されるようです。
また、CBRとBBRの関係も同様に CBR>BBRまたは CBR=BBRの関係になる必要があるみたいです。
文章だけではわかりにくいので、実際に設定して確認したいと思います。次回に続きますwww