I've "virtualized" a 6502 on 6502, essentially by writing a software 6502 that distilled instructions that accessed memory into immediate instructions, while directly running the rest. The KIM-1 emulator I wrote for the Commodore 64 uses this idea. It runs at approximately 1/50th the speed of a real KIM-1, which has a CPU speed only slightly slower than the C64's own speed.
For a KIM-1 this is totally acceptable and surprisingly useable, but it would suck for any of the other systems, and even a TransWarp GS would have trouble keeping up.
For a KIM-1 this is totally acceptable and surprisingly useable, but it would suck for any of the other systems, and even a TransWarp GS would have trouble keeping up.