opcode op_e3 = new opcode() { public void handler()
    { 
//PROBABLY OK but i need to check it again!      
         /*TODO*///OP(op,e3) { EXSP(HL);												} /* EX   HL,(SP)	  */
     /*TODO*///	PAIR tmp = { { 0, 0, 0, 0 } };								\
    /*TODO*///	RM16( _SPD, &tmp ); 										\
    /*TODO*///	WM16( _SPD, &Z80.DR );										\
    /*TODO*///	Z80.DR = tmp;
        PAIR tmp = new PAIR();
        tmp.SetL((cpu_readmem16(Z80.SP.D) & 0xFF)); //RM16
        tmp.SetH((cpu_readmem16((Z80.SP.D + 1) & 0xffff)& 0xFF));
        cpu_writemem16(Z80.SP.D, Z80.HL.L);
        cpu_writemem16((Z80.SP.D + 1) & 0xffff, Z80.HL.H);
        Z80.HL.SetD(tmp.D);
        
    }}