This might be a dead-end, but let's see.
I've removed the internal 32KB DRAM board and will try to get a 32KB SRAM working with it via the expansion port.
No idea if it'll work, whether I've assumed it'll be "simple" but it's not, but thought it would be an interesting experiment. Apparently a modern 128KB board has been designed but no sign of the design anyway. And I've not seen any other designs for modern hardware readily available.
I've been reading up on lots of simple Z80-based SBC (single board computers) and how they implement RAM and ROM addressing, so hopefully I'm not too far off track.
My original idea was based off a design for a Spectrum where the ULA provides the RAS & CAS signals. These are generated by discrete logic on the DRAM board and so would need to be reimplemented. Thus I decided to just make something for the expansion port.
The machine was designed to run CP/M, the original expansion box included 64KB of RAM which took the machine up to 96KB. Not sure how the bank switching is implemented and how it interworks with the 24KB of ROM (plus additional ROMs) ... but if I can get the 32KB SRAM working, maybe I can get a 64KB version working ... ?
So far I think I just need a 62256 and a 74LS32 (OR gate). All the necessary Z80 signals are available on the expansion port: A0 to A15, D0 to D7, !WE, !RD and !MREQ. On the DRAM board the address lines are multiplexed.
The RAM occupies the lower 32KB address space (0x0000 to 0x7FFF), and the ROMs occupy the upper 32KB (0xA000 to 0xFFFF), I realised that when !MREQ goes low the RAM should only respond if the A15 line is also low (lower 32KB), hence the OR gate. If A15 is high then it is the ROM being addressed and so the RAM should ignore. I guess.
I do want to fix the internal DRAM board but I don't trust my replacement RAM chips - need a RAM tester first.
Oh, I implemented a reset button - how clever. It works at least ;)
An interesting series on building a Z80 SBC:
[ Ссылка ]
Ещё видео!