Non-Instruction Microcode
To progress further, I want the ability to initiate microcode sequences
by means other than executing instructions. The main purpose for this
is bootstrapping, but I also have some other uses in mind, such as
implementing the telephone dial interface. I would also like to have a
way of manually depositing data in the memory for diagnostic purposes.
To make way for these extra microcode sequences I have added a bit to
the microcode address, and a corresponding extra bit to the instruction
register. I have also inserted a multiplexer between the S-register and
the instruction register to allow a microcode address to be introduced
from an external source, to be determined later.
I'll also need to be able to encode more microcode operations, so I
changed the bit assignments a little. I don't really need the CYP carry
control value (carry from previous ALU operation) because it can be
derived from LSW, so I removed it and reduced the carry control field
to one bit. Then I moved the WMEM bit to where CYP previously was,
freeing up a bit to expand the MISC field to four bits. This gives me
another 8 MISC values to play with.
Changes to top level
By the way, if you're wondering why the Main Memory and Microcode ROM
are now coloured, it's so I can find them easily for loading data into
them.