Internal RAM upgrade
Posted: Thu Feb 02, 2017 1:17 am
After 30 years or so, I feel the need to revive my much loved ZX-81.
Although I have a 16k RAM pack, I would like to do an internal memory upgrade, to avoid RAM Pack wobble. I've found lots of discussion in previous threads on this, but no solution that exactly fits my requirements.
My requirement is to expand the internal memory to 32k so I can write larger BASIC programs. I don't want to write machine code, have battery backed RAM, Hi-Res graphics or maintain compatibility with existing software that depends upon ROM or RAM echoes. I would like to use the existing RAM socket on the ZX81 main board, to reduce wiring and increase reliability.
I can install a 32K Ram chip on the existing board like this :
http://www.zx81.de/english/32k-rame.htm
However the simple address decoding leaves the memory scattered through the address space; one block in 16k to 32k and another from 48k to 64k. This seems to preclude BASIC programs greater than 16k. I guess it also doesn't deal with the ROM echoes.
I've conclude that the best scheme is have the 32k sit in the 16k to 48k part of the address space. On the reasoning that basic programs cannot start at any location below 16k and must be located in a contiguous block of memory.
My hope is that I can use a 74LS138 3-to-8 decoder, connected to the highest 3 address lines, each output lines represents an 8k block, all the way from 0 to 64K. If I AND output lines 2,3,4 and 5 together I'm hoping to get the correct RAMCS for the 62256. placing the memory in the 16 to 48k range. Similarly output line 0 should go low at addresses between 0 and 8k, so should be correct for ROMCS ? Allowing for all ROM echoes to be suppressed.
My questions are :
- Does the above scheme seem workable and sensible ?
- What control signals should I use to enable the 74LS138 chip ?
Thanks in advance for your help. First post so please go easy on me
Nick
Although I have a 16k RAM pack, I would like to do an internal memory upgrade, to avoid RAM Pack wobble. I've found lots of discussion in previous threads on this, but no solution that exactly fits my requirements.
My requirement is to expand the internal memory to 32k so I can write larger BASIC programs. I don't want to write machine code, have battery backed RAM, Hi-Res graphics or maintain compatibility with existing software that depends upon ROM or RAM echoes. I would like to use the existing RAM socket on the ZX81 main board, to reduce wiring and increase reliability.
I can install a 32K Ram chip on the existing board like this :
http://www.zx81.de/english/32k-rame.htm
However the simple address decoding leaves the memory scattered through the address space; one block in 16k to 32k and another from 48k to 64k. This seems to preclude BASIC programs greater than 16k. I guess it also doesn't deal with the ROM echoes.
I've conclude that the best scheme is have the 32k sit in the 16k to 48k part of the address space. On the reasoning that basic programs cannot start at any location below 16k and must be located in a contiguous block of memory.
My hope is that I can use a 74LS138 3-to-8 decoder, connected to the highest 3 address lines, each output lines represents an 8k block, all the way from 0 to 64K. If I AND output lines 2,3,4 and 5 together I'm hoping to get the correct RAMCS for the 62256. placing the memory in the 16 to 48k range. Similarly output line 0 should go low at addresses between 0 and 8k, so should be correct for ROMCS ? Allowing for all ROM echoes to be suppressed.
My questions are :
- Does the above scheme seem workable and sensible ?
- What control signals should I use to enable the 74LS138 chip ?
Thanks in advance for your help. First post so please go easy on me
Nick