A new version of this project is available here
The geoRAM is a 512KB memory expansion for the Commodore 64 and 128 designed by Berkeley Softworks for use with GEOS. While not as fast as the Commodore REU due to its lack of DMA capabilities, it still provides a significant performance boost. GRAM/512S is a geoRAM compatible cartridge based on a single 512Kx8 SRAM.
The geoRAM is a banked system. The registers at $dfff and $dffe select which 256 bytes page is visible in the $de00-$deff range. The $dfff register selects a 16KB block out of the total memory, the register at $dffe selects the actual 256 bytes page within the selected block. Valid values for a standard geoRAM are 0-31 for the block register and 0-63 for the window register. It is possible to extend the block register to 8-bit to create a 4MB geoRAM.
The design uses two 74LS174 6-bit D-FlipFlop ICs for the block (U3) and window registers (U2). The 74LS138 decoder generates a clock pulse for the register when the CPU writes to its address.
The RAM is directly connected to the CPU bus and responds to CPU requests when the I/O1 signal is asserted ($de00-$deff).
Unfortunately the design as is does not work as expected. The memory would pass the memory test but the computer would crash randomly when using GEOS. After some poking around with the oscilloscope on the commodore cartridge port it become apparent that the commodore 64 glitches I/O1# while R/W# and PHI2 are low. This will randomly corrupt some bytes in the GRAM.
Once the problem was root caused the fix was quite simple. Gating the SRAM chip select with PHI2 prevents the glitch and makes the board work as expected. A simple 74HCT00 quad NAND was used and blue wired to the back of the board to perform the gating.
Testing has been performed using two different memory tests and running GEOS. It is important to note that GEOS 2.0r (which was originally shipped with the geoRAM) is required to take advantage of the memory expansion.
Previous versions of GEOS only support the Commodore REU.
We were not able to locate an original GEOS 2.0r image on the internet. Our solution was to download a D81 image of GEOS 2.0 and replace GEOBOOT and CONFIGURE with the correct geoRAM version.
All the required files can be downloaded from http://cbmfiles.com/geos/index.php