@Override
    public int execute(int cycles) {
  
    	z80_ICount[0] = cycles - Z80.extra_cycles;
   	Z80.extra_cycles = 0;
    
       do
    	{
           Z80.PREPC.SetD(Z80.PC.D); //_PPC = _PCD;
           Z80.R= (Z80.R +1) & 0xFF;//_R++;
           int op = ROP();
           z80_ICount[0] -= cc_op[op];
           Z80op[op].handler();//EXEC_INLINE(op,ROP());       
    	} while( z80_ICount[0] > 0 );

    	z80_ICount[0] -= Z80.extra_cycles;
        Z80.extra_cycles = 0;
    
       return cycles - z80_ICount[0];
    }