Huh, maybe IFJMP doesn't auto-run what it jumps to after all? I'll have a look at that later.
As for the crash - that's...odd. I understand why it's crashing (function recursion and all), but I'd expect it to just lock up and stop responding, rather than have a segmentation fault. Best idea I've got would probably be to have it automatically halt and stop execution if a given clock cycle for the TC-06 takes more than a certain amount of time, or maybe if a certain function runs more than a certain number of times per tick. I'm loathe to add an op-code limiter, considering it would, well, limit possible programs, but...it might be necessary. Or I just say it's a feature, not a bug? Putting in stuff that will obviously blow up the computer should, well, blow up the computer.
I have a feeling why it crashes is that it makes temporary variables (a lot, actually) in each function, and when that function's getting run recursively, the data piles up fast, so fast the garbage collector can't catch up, and thusly, the program segfaults a moment later when it runs out of memory to put stuff in.