I must admit I haven't been reading this whole thread --
but it seems that the crux of it is the definition of whether an
instruction set is defined as microcode or not.
I'm sure there is no 100% perfect answer, that no matter what definition
you come up with there will be machines that fall in the grey zone.
However, the razor I'd use to divide microcode instruction sets from
non-microcode is that microcode instructions have few to no
interlocks. Architectural instructions are more abstract that define their
behavior in an ideal way pretty much independently of what came before or
after (well, excepting things that change state to the architectural
model). Microcode instructions tend to be arcane and very implementation
specific, while architectural instructions allow latitude in implementation.
[ yes, the original MIPS architecture wasn't fully interlocked, but by and
large it was and the few things that weren't were fixed soon enough ]
Thus, I'd say a 386 running a code for another machine is an emulation.
Sorry if this point was raised earlier and I missed it.
-----
Jim Battle == frustum(a)pacbell.net