Interrupts are working!

Spent a bunch of today working on microcode and a unit test for interrupts, and got it all working! There are now 8 working interrupt lines that support separate ISRs for each and have a priority system, and there’s a unit test that confirms everything works as expected when an interrupt is triggered. Given the complexity of this there may be bugs found in it later, but it should just be microcode changes to fix anything at this point rather than any hardware changes.

During this work I noticed that the ‘push’ instructions to push immediate bytes/words were completed, as well as pushing PC, but there’s no instructions to push the general purpose registers, and there’s no pop instructions other than pop pc. I’ve added these to the list of instructions to implement, so the next work I need to complete will be implementing microcode for all of that, then the trap/syscall instruction.