AM29F040B x2

物理的にケースをはみでるかもしれませんが、指針を書いておきます。

つなぎ方

Program ROM

flash0_A[18:0] = program_rom_A[18:0];
flash0_CE = program_rom_A[19] | romcs_n;
flash0_OE = program_rom_OE;

flash1_A[18:0] = program_rom_A[18:0];
flash1_CE = ~program_rom_A[19] | romcs_n;
flash1_OE = program_rom_OE;

Charcter ROM

flash0_A[18:0] = charcter_A[18:0];
flash0_CE = charcter_A[19] | ppu_A[13];
flash0_OE = ppu_rd_n;

flash1_A[18:0] = charcter_A[18:0];
flash1_CE = ~charcter_A[19] | ppu_A[13];
flash1_OE = ppu_rd_n;

CE# 端子と A19 を OR でつなぐ必要があります。74HC00, 74HC139 あたりでデコードするのがよいと思います。

ソフト側

1つのメモリ領域に2つのメモリを制御を考えていないのですが、erase を2つ送ればよいと思います。ただし erase の Toggle 確認は先に書くメモリにしないといけません。

この作業は client のスクリプト外でのコンパイル作業が必要ですが、作業工数はすくないと思います。(逆に物理的作業が多く面倒です)