As of Zip 2000, an optimisation has been applied: the Z-machine program counter, stack pointer and frame pointer are help in ARM registers (v6, v5, v4 respectively). This is declared in globalregs.h. There is danger in this, in that libraries do not know about this usage. It is safe for libraries that are simply called then return, as they will preserve all the variable registers. However, any library routines that call you back through a function pointer (eg bsearch) may call you with fp, sp and pc effectively corrupt. To make the event dispatching work, you will need to create a version of OSLibSupport with knowledge of the global registers. The easiest way to do this is to #include "globalregs.h" at the top of Event.h. Beware. Here be dragons. Don't try this at home, kids. If you have any problems, comment out the contents of globalregs.h.