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.