Jeff's advice about disconnecting the SRAM's
/CE input from the glue logic and continuously grounding it during testing is good. Doing so eliminates that part of the glue logic as a potential problem-causer and frees up on of your 'scope inputs to be used to monitor a different signal.
If your circuit is working right and the MPU is executing
LDA #$FF, you should see the SRAM's
/OE input go low during the first Ø2 high cycle, and at the same time, both
VDA and
VPA should be high, indicating an opcode fetch. On the next Ø2 high, you should observe
/OE going low again as the MPU fetches the operand (
$FF). At that time,
VDA should be low and
VPA should be high, indicating an operand fetch.
On the
STA $DF00 instruction, which executes in four cycles if the
m bit in
SR is set, you should see the previous sequence for the opcode and operand LSB fetch, followed by the operand MSB fetch.
/OE would go low for each cycle when Ø2 is high. Only on the fourth cycle, when
$FF is written to
$DF00 should you see
/WE go low. At the same time,
VDA should be high and
VPA low, indicating a data access is in progress.
It would be helpful if you could publish a schematic, so we can see if there is a circuit anomaly that you overlooked. Also, make sure that the following inputs on the MPU are pulled up to Vcc:
- ABORT - pin 3
- IRQB - pin 4
- NMIB - pin 6
If any of those are open, noise can cause state changes for which your minimal code has no support.
Also,
BE must be actively driven in both directions and
RDY should have a pull-up on it as well—it should not be actively driven high.