Subtract and Halt Instructions
Subtract
Microcode for the Subtract and Subtract Long instructions is very
similar to the Add instructions, the only differences being the
activation of CMX and CY1.
# OPCODE L STAT : FETCH MASEL SHS EOI RFA1 WRF1 XSEL YSEL CMX AND CY1 CYP ODD MSW LSW
# S - Subtract
01100 0 0001 : 0 1 0 1 110 1 01 10 1 0 1 0 0 1 1
01100 1 0001 : 0 1 0 0 010 1 01 10 1 0 1 0 0 0 1
01100 1 0010 : 0 1 0 1 110 1 01 10 1 0 0 1 1 1 0
Halt
To facilitate running test programs of more than one or two
instructions, it seemed like it would be helpful to implement the Halt
instruction next. I added a HALT control signal that becomes a new
input to the Run Control subcircuit. I also tidied up the Run Control
logic a bit, renaming some of its inputs for consistency, and moving
generation of the LAST signal from the main circuit into the Run
Control subcircuit.
This is the new Run Control circuit:
This is how it fits into the main circuit:
Microcode for the Halt instruction is now straightforward.
# OPCODE L STAT : FETCH MASEL SHS EOI RFA1 WRF1 XSEL YSEL CMX AND CY1 CYP ODD MSW LSW HALT
# Z - Halt
01101 0 0001 : 0 0 0 1 000 0 00 00 0 0 0 0 0 0 0 1