--- xmil/z80c/z80c.c 2004/08/08 14:00:56 1.3 +++ xmil/z80c/z80c.c 2004/08/11 13:53:54 1.5 @@ -161,39 +161,6 @@ void CPUCALL z80c_interrupt(REG8 vect) { } } -void CPUCALL z80c_interrupt2(REG8 vect) { - - REG16 pc; - - if (Z80_IFF & (1 << IFF_HALT)) { - Z80_IFF ^= (1 << IFF_HALT); - R_Z80PC++; - } - Z80_IFF |= (1 << IFF_IFLAG); - switch(R_Z80IM) { - case 0: - if ((vect != 0xdd) && (vect != 0xed) && (vect != 0xfd)) { - Z80_COUNT(cycles_main[vect]); - z80c_mainop[vect](); - } - break; - - case 1: - Z80_COUNT(11); - R_Z80SP -= 2; - mem_write16(R_Z80SP, R_Z80PC); - R_Z80PC = 0x38; - break; - - case 2: - pc = mem_read16((R_Z80I << 8) + vect); - R_Z80SP -= 2; - mem_write16(R_Z80SP, R_Z80PC); - R_Z80PC = pc; - break; - } -} - void CPUCALL z80c_nonmaskedinterrupt(void) { if (!(Z80_IFF & (1 << IFF_NMI))) { @@ -212,14 +179,23 @@ void CPUCALL z80c_execute(void) { UINT op; - R_Z80R++; - GET_PC_BYTE(op); - Z80_COUNT(cycles_main[op]); - z80c_mainop[op](); + do { + R_Z80R++; + GET_PC_BYTE(op); + Z80_COUNT(cycles_main[op]); + z80c_mainop[op](); + z80dmap(); + } while(CPU_REMCLOCK > 0); +} + +void CPUCALL z80c_step(void) { + + UINT op; R_Z80R++; GET_PC_BYTE(op); Z80_COUNT(cycles_main[op]); z80c_mainop[op](); + z80dmap(); }