拡張メモリボードにバンク切り替えの配線追加しました。
128kbyteSRAMは32kbyteづつ4バンクに分割されアドレスラインA15、A16を外部ポートから入力しバンク指定します。
またプログラム空間が選択されているとき(/PSENが0のとき)は強制的にA15、A16を0にしてバンク0が選択されるロジックが載っています
今仮にバンクセレクトはA15のみi8255のPA0に接続しています
バンク切り替えのテストは、次のプログラムを実行してみました
このプログラム自体はバンク0の0x8000番地からローディングされますがプログラム内でバンク1に切替え同じく0x8000番地に0~255のパタンデータを書き込んでしまいます。そのあとバンク0に切替えてプログラムが存在すること、バンク1に切替えてパタンデータが存在することを確かめます
実行結果がこれです
おなじアドレス0x8000~のプログラム領域(バンク0)、データ領域(バンク1)が独立して存在していて、尚且つこのプログラムが動作するということはコードがデータによって上書きされないということ、バンク切り替え後のコード参照も問題ないといえます。(もしコードフェッチ時に強制的にバンク0にするロジックが無ければバンクを切り替えた途端に暴走するでしょう)