--- xmil/z80c/z80c_s.mcr 2004/08/08 14:00:56 1.3 +++ xmil/z80c/z80c_s.mcr 2004/08/14 12:16:18 1.5 @@ -38,7 +38,7 @@ } #define MCR_RETN { \ - Z80_IFF &= ~((1 << IFF_NMI) | (1 << IFF_IRQ)); \ + Z80_IFF &= ~(1 << IFF_NMI); \ MCR_RET \ } @@ -62,7 +62,12 @@ } #define MCR_RETI { \ - Z80_IFF &= ~(1 << IFF_IRQ); \ + CPU_IRQ = CPU_IRQ & (CPU_IRQ - 1); \ + if ((!(Z80_IFF & ((1 << IFF_IFLAG) | (1 << IFF_NMI)))) && \ + (CPU_REQIRQ != 0)) { \ + CPU_BASECLOCK -= CPU_REMCLOCK; \ + CPU_REMCLOCK = 0; \ + } \ MCR_RET \ }