Extension RAM above 640K
Posted: Sun Jul 13, 2014 11:03 pm
Hi all,
I've now built the second version of the internal RAM board which allows me to expand beyond 640K by controlling the SP0..SP3 lines on the expansion connector (I've cut their connection to ground and fed them to a set of DIP switches on my board).
This works and I can allow RAM in the expansion area and still allow peripheral boards to map themselves at the correct address, I've verified this with a little ROM that I created the prints it's load address in it's sign on banner.
However one thing I have just noticed....with Minerva I can map RAM all the way to the top of RAM -16K to give me 880K (I actually set it for 864K, as my Sandy SuperDisk needs 2 ROM banks.).
However using one of the original OS ROMS : AH, JM, JS, MGx etc the RAM is tested in 64K blocks so has to end on a 64K boundary, which means that the maximum RAM that can be achieved, and still use the SP0..SP3 to decode peripherals is 832K, basically SP0 and SP1 must be 0.
The trump card gets round this by cheating and moving it's ROM and I/O down into the I/O area below the beginning of RAM, then filling all the upper blocks with RAM which ends up being on a 64K boundary.
This may be significant to anyone wanting to use a similar method for extending the RAM.
Cheers.
Phill.
I've now built the second version of the internal RAM board which allows me to expand beyond 640K by controlling the SP0..SP3 lines on the expansion connector (I've cut their connection to ground and fed them to a set of DIP switches on my board).
This works and I can allow RAM in the expansion area and still allow peripheral boards to map themselves at the correct address, I've verified this with a little ROM that I created the prints it's load address in it's sign on banner.
However one thing I have just noticed....with Minerva I can map RAM all the way to the top of RAM -16K to give me 880K (I actually set it for 864K, as my Sandy SuperDisk needs 2 ROM banks.).
However using one of the original OS ROMS : AH, JM, JS, MGx etc the RAM is tested in 64K blocks so has to end on a 64K boundary, which means that the maximum RAM that can be achieved, and still use the SP0..SP3 to decode peripherals is 832K, basically SP0 and SP1 must be 0.
The trump card gets round this by cheating and moving it's ROM and I/O down into the I/O area below the beginning of RAM, then filling all the upper blocks with RAM which ends up being on a 64K boundary.
This may be significant to anyone wanting to use a similar method for extending the RAM.
Cheers.
Phill.