> Cycle-exact (meaning correct cycle counts for the instructions), or cycle-by-cycle
> (meaning you can interrupt instructions on any cycle)?
I'm thinking the former, though it's whatever is necessary to make the emulator behave the same way as the real hardware. I don't think it should be necessary to interrupt instructions on *any* cycle (definitely not in the IRQ sense), but there may be some instructions that have multiple time-sensitive externally observable effects - e.g. a word access to CGA RAM will have two separate wait states, each synchronizing with the CGA's LCLK and possibly generating a flake of snow.