I looked at the emulator code. It does what seems to me to be a strange thing, it updates the lights at the end of a randomly-selected subcycle every cycle. Not sure why this is done rather
than updating at the end of the cycle. Maybe to try to simulate the behavior of the real -1 where the lights continuously reflect the state of the hardware registers?
Even more complicated, it just updates a shared memory area that the panel handler also looks at, and there doesn't seem to be any actual synchronization between the two.
This is also complicated by the behavior of the real -1 where a shift/rotate doesn't necessarily complete in the cycle it starts in, it can complete early in the next cycle. So, you can see intermediate results. The emulator duplicates this behavior.
So, not sure what, if anything, should be done. I did try moving the update to the end of the cycle with no randomness, things still seemed to work properly. However, this isn't a change I'm keeping, at least not for now. Hopefully Angelo will provide some guidance.
Bill