To my eternal shame, I had to look up the kernel vector at $FFD2. (it outputs a character to the current device, usually the screen, on the C64). At least I can redeem myself partially by having remembered the opcodes...
Good call, detecting (PC, SP) fixed point then, although using the stack to jump onto itself is wicked. I don't want to go and solve the halting problem either.
> SET PC, [location with I/O]
Qualifies as outside force. I'm not sure I want to write/run a program that JMP to an @ provided by I/O, this reads like an SQL injection.
It seems to me the extra cycle is used to read the first word of the next instruction, since it needs to know how long the next instruction is to skip it.
I would have gone for something big and expensive, like, say, the lunar module. Is anyone making a new lunar module or a hydrogen dirigible these days?