I am trying to build a Z80 computer inspired by Grant Searle's design. I'm starting simple, with just a clock (clocked by an AVR pulsing at at 12.5 Hz for testing), a Z80, and a 8K EEPROM with a simple program loaded:
0001 0000 .ORG $0000 0002 0000 00 START: NOP 0003 0001 C3 00 00 JP START 0004 0004 .END tasm: Number of errors = 0
I have A0-A10 connected and of course D0-D7, and all the usual control pin connections per the design. The violet "DATA" bus line on the scope picture below is simply D0-D7 shown as hex.
I wanted the simplest program I could write that had at least one non-zero opcode in it so that I could observe the data bus on my scope and see the data.
It works as expected for perhaps two minutes after a clean reset, then it starts acting weird, showing this:
Based on the assembled object code, I cannot understand how it ever leaves the C3-00-00-00-00 loop it should stay in. I cannot explain how I'm seeing a 39 or an FF at any time on the data bus as the program runs. Can someone suggest what I might have wrong to create such weird output?
Also notice the unusual coincidence of the FF and the /RD signal being active. When it fails, the /RD signal quits going low. That makes no sense to me. Any ideas?
If I speed the clock up 10x to 125 Hz, it starts the weird pattern in just a few seconds, not a few minutes.