Microcode Breakpoint
While debugging my multiplication instructions, I decided that I needed
a way to set a breakpoint in the microcode. I added some
manually-controlled inputs to specify the microcode address,
multiplication step count and bit number to break at, and a breakpoint
enable signal. To make the wiring a bit tidier in the main circuit, I
also grouped all the microcode address lines into a bus.
The Microcode Breakpoint subcircuit compares the current values of the
microcode address, multiplication step and bit number with the
breakpoint values. When they match, and breakpoints are enabled, the
UBREAK output is activated.
UBREAK is connected to the Run Control subcircuit, where it disables
the RUN output, freezing the rest of the machine. To allow continuing
after a break, I made some other changes to the run control circuit.
When the CONTINUE button is pressed, a pulse lasting a single clock
cycle is generated by Cont FF 1 and Cont FF 2. This pulse temporarily
overrides the UBREAK input and allows a BITCLK cycle through. Since
this advances the bit counter, the break condition will no longer be
met in the next cycle, so execution continues until the breakpoint is
reached again or the nachine is stopped by other means.
The Stop FF is no longer needed and has been removed. The Run FF is now set directly by the Continue pulse.