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

000~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    

おすすめの記事