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.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.
I had similar problem - I used single bit connected to console switch as microcode input condition to branch into tracing routine (not part of instruction execution), and also extended instruction register by 1 bit for extra operations (but that was for "escape" extended instruction, can be used for console operations too)
Are you sure? yes | no