Peer review - Frans Karlsson
The code compiles fine, and the output is mostly correct. The very first char printed is something else. The ci script also fails, and I'm pretty sure it's because you have two labels proc1
and proc1_loop
right after each other which the local compiler is fine with but, the ci isn't. You moved proc2 and proc3 down to after the kernel code which I think makes them a part of the .ktext
which they probably shouldn't so I suggest moving them back even though they are not used.
The kernel code only changes $k0 and $k1, so all other registers are preserved. User mode and Interrupts are enabled, and both HW interrupts are disabled. There are plenty of high level comments.
Other than some small fixes, I couldn't find any problems. Good Job!