The other approach is to simply virtualize the 6502. This is not as ludicrous as it sounds, but it is definitely slower. OTOH, by making stack and the virtual memory manager software, you can make them do anything, and you can always pre-emptively interrupt a virtual processor. To wit,
http://www.floodgap.com/retrobits/kim-1/emu.html
It runs on an unmodified Commodore 64.
http://www.floodgap.com/retrobits/kim-1/emu.html
It runs on an unmodified Commodore 64.