+DoNMI:\r
+ stmfd sp!,{lr}\r
+\r
+ bic r0,r0,#((Z80_NMI|Z80_HALT|Z80_IF1)<<8)\r
+ strh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
+\r
+ ;@ push pc on stack\r
+ ldr r0,[cpucontext,#z80pc_base]\r
+ sub r2,z80pc,r0\r
+ opPUSHareg r2\r
+\r
+ ;@ read new pc from vector address\r
+.if UPDATE_CONTEXT\r
+ str z80pc,[cpucontext,#z80pc_pointer]\r
+.endif\r
+ mov r0,#0x66\r
+.if DRZ80_XMAP\r
+ rebasepc\r
+.else\r
+ stmfd sp!,{r3,r12}\r
+ mov lr,pc\r
+ ldr pc,[cpucontext,#z80_rebasePC] ;@ r0=new pc - external function sets z80pc_base and returns new z80pc in r0\r
+ ldmfd sp!,{r3,r12}\r
+ mov z80pc,r0 \r
+.endif\r
+ ldrh r0,[cpucontext,#z80irq] @ 0x4C, irq and IFF bits\r
+ eatcycles 11\r
+ ldmfd sp!,{pc}\r
+\r
+\r