バンク切り替えというのは、ハード的にメモリを切り替えて使う方法。
Z80のアドレスバスは16ビット幅しかないので、64KBを超えるアドレスは扱えない。
そこで、I/Oを使ってメモリのセレクトをしてあげる。
簡単な模式図にするとこんな感じ
同じバス上にメモリがぶら下がる。チップセレクト信号とI/Oの信号でANDを取ることで排他動作する
今でもマイコンなんかでは使うことがあるかも知れないが
これで(多少)大きなメモリ領域が扱えるようになった。
同じアドレスに、バンクによって違う値が書き込まれるので、間違いを誘発する。
それにバンク切り替えにも時間が掛かる(数CPUクロック分)ので
タイミングを誤ると変な値を読み出したりしました。
なんと言っても重要なのは、デバッガが追従しない。
当たり前だよね。