peer review
1.Repo structure and compilation look good, program produces the correct A–Z output sequence.
2.Kernel code only uses $k0 and $k1, other registers are preserved.
3.Exception handling is correct: syscall is handled, other exceptions go to kernel_loop.
4.Status register is set to 0x0003, and RFE ensures return to user mode with interrupts enabled.
5.Code is well commented and easy to follow.
6.Overall very solid implementation. A small improvement could be to clarify in comments how $a0 and other registers are preserved across syscalls.