I think your trouble arises from a simple omission -- a design error. You just need to finish implementing the widely used circuit that BDD & I prefer. You've already got half of it -- the part that drives the RAM's /WE pin low only when Phi2 is high and RWB is
low. You need to add the part that drives the /OE pin of both memories low only when Phi2 is high and RWB is
high.
Presently, address line A15 is attached to /CE of the RAM (okay) and also attached to /OE of the RAM -- which is not really 100% OK, and here's why.
Imagine a
write to RAM (ie: a write to an address below $8000). Near the start of the cycle, shortly after PHI2 goes low, a valid address appears. A15 will be low, and so too will be the RAM /CE and /OE. The RAM begins
reading from the address. In fact, RAM is fully driving the data bus. Then eventually PHI2 goes high and...
- the CPU commences to drive the data bus
- an instant later, the GAL brings the RAM's /WE pin low, and RAM ceases to drive the data bus
It should be clear this is not an elegant situation. It's unrealistic to expect a clean handover of the bus. Instead, you face a short -- or not so short! -- period of bus contention before the RAM "lets go" and allows the CPU to be undisputed boss. This contention consumes a nasty jolt of current, thus transmitting noise on the Vcc and Gnd wiring.
A vintage CPU is likely to lessen the effect.
It will be slow to begin driving the data bus, thus allowing more time for RAM to let go. But a modern WDC CPU is quick to begin driving the data bus --
so quick that it grants less forgiveness to the design error. (Also, a modern CPU has more current capability on its data bus drivers, thus increasing the current which results from the contention.) I believe this explains why your project prefers older CPU's!
Edit: hm, I overlooked the fact that the ROM is presently allowed to drive the data bus during PHI2 low. That too could cause trouble, but it's my #2 suspicion, not #1. Luckily the same prescription treats both! Drive the /OE pin of both memories low only when Phi2 is high and RWB is high.
BTW, I don't find that the timing diagram in the data sheet (pg 6) implies that the rising edge of /CE can be coincidental with or lag /WE but not the other way around. I can kinda see how you might infer that. But it just seems wrong to me -- not how RAM's work. Plus, I think they'd be a lot fussier about specifying such an odd restriction (odd in the sense that it contradicts the Truth Table, which says /OE and /WE are don't-care anytime /CE is high).
-- Jeff
_________________
In 1988 my 65C02 got six new registers and 44 new full-speed instructions!
https://laughtonelectronics.com/Arcana/ ... mmary.html