Most stable DINO yet, and the interrupt microcode is in
This is the most stable this machine has been. The DIP switch and the serial card both work, the monitor loads programs over the cable and runs them out of RAM, and life.asm scrolls Rule 30 until I stop it. Three weeks ago a RET fetched from RAM would halt the machine and I had a table of which instructions before it made that happen. I had a gut feeling the whole time that it was a logic problem, I just did not know where. It was a 14 ns write strobe during the fetch, and the fix is one NOR gate. The log before this one has the captures.
I rode the win. The interrupt microcode has been sitting host-tested since the 25th, so I burned all three EEPROMs today. That image reverts the OUT settle row I burned on the 8th for a fault that turned out to be this one.
| witness, new microcode | result |
|---|---|
| PROG_isa | 0xB4, boot and reset |
| PROG_isasoak | 0x00, boot and reset |
| retlda, step2, step2g | 10/10, 5/5, 3/3 |
| bigxfer | returns to the prompt |
| life.asm | 26 rows in 2 s, Enter gets the prompt back |
Every old instruction still works. The six interrupt opcodes decode to pins that are open until the hardware goes in, so nothing new can fire yet.
Next is the interrupt hardware itself, eight ICs and a ‘05 on the serial card, in one build, then the six test images in order. Once interrupts are proven I feel a lot better about going to the PCB. I might even look at DMA again. I have flip-flopped on that twice, and both times were on a machine that halted at random, which is not the machine I have now.
The ghosts
- Serial receive still drops 1 bits to 0 unless there is a 22 pF on the UART’s A0 pin. The write runt was not it; I tested that today with the gate in and the cap out and it failed four out of four.
- One halt at PC 0x000x in the middle of a serial load, once, with nothing on the RESET line to catch it.
- The 23 settle rows from August are still in the microcode. They fix nothing I can name and cost a T-state each.