I wanted to bring the ELF-ish up to 16k of RAM, but didn't want to keep playing around in such small increments, so I decided to go with the RCA CDM6116 2k x 8-bit CMOS SRAM.
Putting 6 of these on an expansion board would add 12k, to bring the total up to 16k.
This time, I used a pair of 74HC244 octal buffers for the address bus and signals since I had a couple more signals involved. Again, I used a CDP1875 output port as the upper address latch.
I also included two more 26-way memory expansion connectors. Memory3 was intended for ROM expansion, so the !R4K0 line was buffered and passed through to it.
The Memory4 port was intended to let me expand the RAM further, so I could eventually fill the lower memory to a full 32k of RAM. Of course, now that I own an RCA 8k Microboard, it will go here instead, assuming I can fix it.
To supply the required !CS lines I used a 74HC138, 3-to-8 line decoder, inverting.
I used A14 and A15 as !CS for the '138, placing this in the lower 16k of memory space. Of course, the decoder will also generate the !CS lines for the lower two 2k blocks already decoded on the main board. But by gating these together, I generate the !4K0 line. If either of these lines are LO, then the !4K0 remains LO. But if both are HI, the !4K0 line goes HI, disabling the lower 4k of RAM. The other six !CS lines go to the six CDM6116's.
Of course I'm addicted to battery backup, so I had to include it here as well. By using a different mode setting, the DS1321 just passes the !CS lines through to the RAMs, rather than doing further decoding as was done with the CDP1822's in the first 1k of memory.
Each DS1321 can only handle four !CS lines, so I used two, both supplied by the same battery.
For the data bus buffering, I again used a 74HC245 bidirectional octal buffer. The enable of this was made by again gating the A14 and A15 together to make sure we're in the lower 16k. But of course, we don't want to enable this buffer if the lower 4k of RAM on the main board is active, so we gate this with the !4K0 line.
Finally, I was getting concerned about the length of the un-buffered side of the data bus, so I decided I would present the buffered data bus to the Memory3 and Memory4 expansion ports. I included a !MEM3_EN and !MEM4_EN, which those expansion boards would assert when they are selected, to enable the buffer. This was all OR-ed together using diode/resistor logic.
One final little detail. The signal that the 8k Microboard asserts when it is selected is active HI, but I was intending to use active LO for the !MEM3_EN and !MEM4_EN lines, so I included a little jumper and gate to select wether to use the !MEM4_EN line directly, for one of my expansion boards, or to invert it for the RCA board.
And here are the connections for those future expansion boards.
Phew! All of that fits nicely on one of the matrix boards I've been using.
And wired up for testing.
And, of course, it works.
Welcome to the 16k version of the ELF-ish.