Some ideas:
Check for uninitialized memory; emulator software and, more often, startup scripts often initialize RAM to 'convenient' zeros or other values used during testing.
Check for COP issues particularly during the programming delays. Some emulators do not react to COP timeouts. Although in many situations a COP timeout would be set to cause a startup reset (noticeable in most systems with LCD and startup messages) it's possible you're treating it through its separate vector in a way that it goes visibly unnoticed.
If in expanded mode (which I suspect you are if this is indeed a 11E1, and not a 711E1):
Check possible problems due to slight incompatibilities in the memory maps between device and emulator.
It might help posting the suspect code (the update routine, for example) for public review. There could be a subtle error that needs a different set of eyes to catch. An assembler/compiler listing (with all symbols resolved) may help.