public void CPI()
    {
        int val = cpu_readmem16(Z80.HL.D) & 0xFF;
        int res = (Z80.AF.H - val) & 0xFF;
        Z80.HL.AddD(1);
        Z80.BC.AddD(-1);
        Z80.AF.SetL(((Z80.AF.L & CF) | (SZ[res] & ~(YF|XF)) | ((Z80.AF.H ^ val ^ res) & HF) | NF) & 0xFF);
        if ((Z80.AF.L & HF) != 0) res= (res-1) & 0xFF;//res -= 1; 
        if ((res & 0x02) != 0)  Z80.AF.SetL(Z80.AF.L | YF);  /* bit 1 -> flag 5 */
        if ((res & 0x08) != 0)  Z80.AF.SetL(Z80.AF.L | XF);  /* bit 3 -> flag 3 */
        if (Z80.BC.D != 0)      Z80.AF.SetL(Z80.AF.L | VF); 
        
    }
    /*TODO*///#else
    /*TODO*///#define CPI {                                                   \
    /*TODO*///	UINT8 val = RM(_HL);										\
    /*TODO*///	UINT8 res = _A - val;										\
    /*TODO*///	_HL++; _BC--;												\
    /*TODO*///	_F = (_F & CF) | SZ[res] | ((_A ^ val ^ res) & HF) | NF;	\
    /*TODO*///	if( _BC ) _F |= VF; 										\
    /*TODO*///}
    /*TODO*///#endif
    /*TODO*///
    /*TODO*////***************************************************************
    /*TODO*/// * INI
    /*TODO*/// ***************************************************************/
    /*TODO*///#if Z80_EXACT
    /*TODO*///#define INI {													\
    /*TODO*///	UINT8 io = IN(_BC); 										\
    /*TODO*///	_B--;														\
    /*TODO*///	WM( _HL, io );												\
    /*TODO*///	_HL++;														\
    /*TODO*///	_F = SZ[_B];												\
    /*TODO*///	if( io & SF ) _F |= NF; 									\
    /*TODO*///	if( (_C + io + 1) & 0x100 ) _F |= HF | CF;					\
    /*TODO*///    if( (irep_tmp1[_C & 3][io & 3] ^                            \
    /*TODO*///		 breg_tmp2[_B] ^										\
    /*TODO*///		 (_C >> 2) ^											\
    /*TODO*///		 (io >> 2)) & 1 )										\
    /*TODO*///		_F |= PF;												\
    /*TODO*///}
    /*TODO*///#else
    /*TODO*///#define INI {													\
    /*TODO*///	_B--;														\
    /*TODO*///	WM( _HL, IN(_BC) ); 										\
    /*TODO*///	_HL++;														\
    /*TODO*///	_F = (_B) ? NF : NF | ZF;									\
    /*TODO*///}