For weeks now, I've been trying to use my assembler in a playground type way, where I can give it a filename interactively, and it assembles it, returning to its "waiting" state, and I had issues where erroring would always happen at different depth in the code, so the stack was always messy after encountering an error in live mode.
I made an arity checker(it's a thing that makes sure that a program's function doesn't leave the stack in an unexpected state), and would run it over my assembler source and it threw an error at my error handling code. Each time I thought, it's probably being confused.
But NO, it was telling me this whole time what I should change . I gave it a second look today and fixing that little thing was all I needed this whole time to get it to work properly. Thank you arity checker sensei.