1) I ordered another oscilloscope probe and finally got some time to try it out. I captured the attached pictures when the probes and scope were all set to 10x. (I'm still new to using an oscilloscope, and I'm still puzzled why the ground wires of nearly all probes are alligator clips, which only seem useful on a board with an exposed ground plane. So, I made do.) What I saw when checking U3-2 and U37-11 was less square than I was hoping, but perhaps good enough, especially assuming I'm introducing some noise with that ground lead extension I used. Is it good enough for both clocks?
2) Okay, I *think* I follow that, but I'll have to find more time to try it out.
5) I was pretty careful about selecting the resistors, but I'll grant that the rings on some of them are less clear than I'd like. To really check them, I'd need to desolder them from the board, wouldn't I? (I do have a desoldering iron, so it's not as much of a big deal as it might be, but I'd still like to avoid desoldering anything if I can avoid it; just to be safe.)
-Derek
bmwtcu wrote: ↑15 Jun 2022, 11:19 1) capture CLK1 on U3-2 and CLK2 on U37-11 on the same screen on your scope. Basically you need to ensure that you have a reliable clock at the furthest destination from the Pierce oscillator before you can do any debug. You're looking for a periodic square wave like Marcel's from viewtopic.php?p=384#p384 (although I think he did that with no load). Measure the frequency and max voltage swing of both channels. Really the clock is the first step to prove out before step 2 below.
2) Sorry, I was in a rush and didn't really explain. U1A is part of the Pierce oscillator circuit. Since you don't have access to a logic analyzer, my intent was to have you disconnect the on-board oscillator and just drive CLK1 directly from your Arduino so that you could toggle it manually. The goal is to monitor the state of the program counter (and the other signals) one rising edge clock pulse at a time through the ROMv5a listing from line 498 onwards to see what U5 was doing since you suspected that one bit was stuck high. The program counter can be reset, incremented and loaded, so if you can prove all 3 happen correctly, you can move on to verifying that the EPROM data is being loaded correctly to the I and D registers. If you have enough pins on your Arduino (eg Arduino Mega) you could monitor the outputs of U8 and U9 at the same time since that's what you'll need to verify next. When the Gigatron is first powered up, it will come out of reset with the program counter zeroed out. If you're not seeing that, that means you have a bit stuck somewhere. If U5-9 goes LOW, the contents of the Y register will be loaded into U5/U6 on the next rising CLK1 edge (this happens during a branch instruction), otherwise the PC should increment by 1 each clock pulse.
ROMv5a.jpeg