lordbubsy wrote:Furthermore I'm trying to comprehend the concept of generating A13 and A14 out of BLK1-3, which Mike has given me some insight already.
You need to differentiate between the address range of the 6502 and the address range of the RAM chip.
CA0 .. CA13 are the lower 14 bits of the
CPU
Address-Bus exposed at the expansion port. Of these bits, only CA0 .. CA12 are used. They span the full 8K range of all the blocks, and are directly connected to A0 .. A12 of the 62256 RAM chip.
The 74LS08 then "translates" the /BLKx select signals into logical addresses which are only relevant to the RAM chip. At the RAM chip, its A13 and A14 pins "select" between the four available 8K regions. So what happens is:
Code: Select all
CPU Address: Block: RAM Chip "Address"
$2000 .. $3FFF BLK1 $0000 .. $1FFF (A14=0, A13=0)
$4000 .. $5FFF BLK2 $4000 .. $5FFF (A14=1, A13=0)
$6000 .. $7FFF BLK3 $2000 .. $3FFF (A14=0, A13=1)
$A000 .. $BFFF BLK5 $6000 .. $7FFF (A14=1, A13=1)
... and accesses outside the blocks named above simply deselect the RAM chip.
It does not matter that in this example the logical addresses at the RAM chip are "swapped" between BLK2 and BLK3, as long as all addresses are unique and map to the whole range.
According to [Eslapions] information in [his] post I made a schematic of [the RAM expansion]. [...] Did I interpret it correctly?
For the most part it's correct, but, as Eslapion already wrote, you need to connect the R/W pin of the RAM chip to VR/W on the expansion port. CR/W does not work.