public void handler() {
            int ModRM = FETCH();
            int tmp;
            int tmp1;

            switch (ModRM & 0x38) {
                case 0x00:  /* INC ew */

                    tmp = GetRMWord(ModRM);
                    tmp1 = tmp + 1;

                    /*SetOFW_Add(tmp1,tmp,1);*/
                    I.OverVal = (tmp == 0x7fff) ? 1 : 0; /* Mish */

                    SetAF(tmp1, tmp, 1);
                    SetSZPF_Word(tmp1);

                    PutbackRMWord(ModRM, tmp1 & 0xFFFF);
                    nec_ICount[0] -= (ModRM >= 0xc0) ? 2 : 24;
                    if (neclog != null) {
                        fprintf(neclog, "i_ffpre_0x00 :PC:%d,I.ip:%d,AW:%d,CW:%d,DW:%d,BW:%d,SP:%d,BP:%d,IX:%d,IY:%d,b1:%d,b2:%d,b3:%d,b4:%d,s1:%d,s2:%d,s3:%d,s4:%d,A:%d,O:%d,S:%d,Z:%d,C:%d,P:%d,T:%d,I:%d,D:%d,M:%d,v:%d,irq:%d,ns:%d,is:%d,pb:%d,pre:%d,EA:%d\n", cpu_get_pc(), I.ip, I.regs.w[AW], I.regs.w[CW], I.regs.w[DW], I.regs.w[BW], I.regs.w[SP], I.regs.w[BP], I.regs.w[IX], I.regs.w[IY], I.base[0], I.base[1], I.base[2], I.base[3], I.sregs[0], I.sregs[1], I.sregs[2], I.sregs[3], I.AuxVal, I.OverVal, I.SignVal, I.ZeroVal, I.CarryVal, I.ParityVal, I.TF, I.IF, I.DF, I.MF, I.int_vector, I.pending_irq, I.nmi_state, I.irq_state, I.prefix_base, I.seg_prefix, EA);
                    }
                    break;

                case 0x08:  /* DEC ew */

                    tmp = GetRMWord(ModRM);
                    tmp1 = tmp - 1;

                    /*SetOFW_Sub(tmp1,1,tmp);*/
                    I.OverVal = (tmp == 0x8000) ? 1 : 0;	 /* Mish */

                    SetAF(tmp1, tmp, 1);
                    SetSZPF_Word(tmp1);

                    PutbackRMWord(ModRM, tmp1 & 0xFFFF);
                    nec_ICount[0] -= (ModRM >= 0xc0) ? 2 : 24;
                    if (neclog != null) {
                        fprintf(neclog, "i_ffpre_0x08 :PC:%d,I.ip:%d,AW:%d,CW:%d,DW:%d,BW:%d,SP:%d,BP:%d,IX:%d,IY:%d,b1:%d,b2:%d,b3:%d,b4:%d,s1:%d,s2:%d,s3:%d,s4:%d,A:%d,O:%d,S:%d,Z:%d,C:%d,P:%d,T:%d,I:%d,D:%d,M:%d,v:%d,irq:%d,ns:%d,is:%d,pb:%d,pre:%d,EA:%d\n", cpu_get_pc(), I.ip, I.regs.w[AW], I.regs.w[CW], I.regs.w[DW], I.regs.w[BW], I.regs.w[SP], I.regs.w[BP], I.regs.w[IX], I.regs.w[IY], I.base[0], I.base[1], I.base[2], I.base[3], I.sregs[0], I.sregs[1], I.sregs[2], I.sregs[3], I.AuxVal, I.OverVal, I.SignVal, I.ZeroVal, I.CarryVal, I.ParityVal, I.TF, I.IF, I.DF, I.MF, I.int_vector, I.pending_irq, I.nmi_state, I.irq_state, I.prefix_base, I.seg_prefix, EA);
                    }
                    break;

                case 0x10:  /* CALL ew */

                    tmp = GetRMWord(ModRM);
                    PUSH(I.ip);
                    I.ip = tmp & 0xFFFF;
                    change_pc20((I.base[CS] + I.ip));
                    nec_ICount[0] -= (ModRM >= 0xc0) ? 16 : 20;
                    if (neclog != null) {
                        fprintf(neclog, "i_ffpre_0x10 :PC:%d,I.ip:%d,AW:%d,CW:%d,DW:%d,BW:%d,SP:%d,BP:%d,IX:%d,IY:%d,b1:%d,b2:%d,b3:%d,b4:%d,s1:%d,s2:%d,s3:%d,s4:%d,A:%d,O:%d,S:%d,Z:%d,C:%d,P:%d,T:%d,I:%d,D:%d,M:%d,v:%d,irq:%d,ns:%d,is:%d,pb:%d,pre:%d,EA:%d\n", cpu_get_pc(), I.ip, I.regs.w[AW], I.regs.w[CW], I.regs.w[DW], I.regs.w[BW], I.regs.w[SP], I.regs.w[BP], I.regs.w[IX], I.regs.w[IY], I.base[0], I.base[1], I.base[2], I.base[3], I.sregs[0], I.sregs[1], I.sregs[2], I.sregs[3], I.AuxVal, I.OverVal, I.SignVal, I.ZeroVal, I.CarryVal, I.ParityVal, I.TF, I.IF, I.DF, I.MF, I.int_vector, I.pending_irq, I.nmi_state, I.irq_state, I.prefix_base, I.seg_prefix, EA);
                    }
                    break;
                /*TODO*///
    /*TODO*///	case 0x18:  /* CALL FAR ea */
    /*TODO*///		tmp = I.sregs[CS];	/* HJB 12/13/98 need to skip displacements of EA */
    /*TODO*///		tmp1 = GetRMWord(ModRM);
    /*TODO*///		I.sregs[CS] = GetnextRMWord;
    /*TODO*///		I.base[CS] = SegBase(CS);
    /*TODO*///		PUSH(tmp);
    /*TODO*///		PUSH(I.ip);
    /*TODO*///		I.ip = tmp1;
    /*TODO*///		change_pc20((I.base[CS]+I.ip));
    /*TODO*///		nec_ICount-=(ModRM >=0xc0 )?16:26;
    /*TODO*///		break;
    /*TODO*///
                case 0x20:  /* JMP ea */

                    nec_ICount[0] -= 13;
                    I.ip = GetRMWord(ModRM);
                    change_pc20((I.base[CS] + I.ip));
                    if (neclog != null) {
                        fprintf(neclog, "i_ffpre_0x20 :PC:%d,I.ip:%d,AW:%d,CW:%d,DW:%d,BW:%d,SP:%d,BP:%d,IX:%d,IY:%d,b1:%d,b2:%d,b3:%d,b4:%d,s1:%d,s2:%d,s3:%d,s4:%d,A:%d,O:%d,S:%d,Z:%d,C:%d,P:%d,T:%d,I:%d,D:%d,M:%d,v:%d,irq:%d,ns:%d,is:%d,pb:%d,pre:%d,EA:%d\n", cpu_get_pc(), I.ip, I.regs.w[AW], I.regs.w[CW], I.regs.w[DW], I.regs.w[BW], I.regs.w[SP], I.regs.w[BP], I.regs.w[IX], I.regs.w[IY], I.base[0], I.base[1], I.base[2], I.base[3], I.sregs[0], I.sregs[1], I.sregs[2], I.sregs[3], I.AuxVal, I.OverVal, I.SignVal, I.ZeroVal, I.CarryVal, I.ParityVal, I.TF, I.IF, I.DF, I.MF, I.int_vector, I.pending_irq, I.nmi_state, I.irq_state, I.prefix_base, I.seg_prefix, EA);
                    }
                    break;
                /*TODO*///
    /*TODO*///    case 0x28:  /* JMP FAR ea */
    /*TODO*///		nec_ICount-=15;
    /*TODO*///		I.ip = GetRMWord(ModRM);
    /*TODO*///		I.sregs[CS] = GetnextRMWord;
    /*TODO*///		I.base[CS] = SegBase(CS);
    /*TODO*///		change_pc20((I.base[CS]+I.ip));
    /*TODO*///		break;
    /*TODO*///
                case 0x30:  /* PUSH ea */

                    nec_ICount[0] -= 4;
                    tmp = GetRMWord(ModRM);
                    PUSH(tmp);
                    if (neclog != null) {
                        fprintf(neclog, "i_ffpre_0x30 :PC:%d,I.ip:%d,AW:%d,CW:%d,DW:%d,BW:%d,SP:%d,BP:%d,IX:%d,IY:%d,b1:%d,b2:%d,b3:%d,b4:%d,s1:%d,s2:%d,s3:%d,s4:%d,A:%d,O:%d,S:%d,Z:%d,C:%d,P:%d,T:%d,I:%d,D:%d,M:%d,v:%d,irq:%d,ns:%d,is:%d,pb:%d,pre:%d,EA:%d\n", cpu_get_pc(), I.ip, I.regs.w[AW], I.regs.w[CW], I.regs.w[DW], I.regs.w[BW], I.regs.w[SP], I.regs.w[BP], I.regs.w[IX], I.regs.w[IY], I.base[0], I.base[1], I.base[2], I.base[3], I.sregs[0], I.sregs[1], I.sregs[2], I.sregs[3], I.AuxVal, I.OverVal, I.SignVal, I.ZeroVal, I.CarryVal, I.ParityVal, I.TF, I.IF, I.DF, I.MF, I.int_vector, I.pending_irq, I.nmi_state, I.irq_state, I.prefix_base, I.seg_prefix, EA);
                    }
                    break;
                case 0x38://unknown found in imgfight (shadow)
                    break;
                default:
                    System.out.println("i_ffpre 0x" + Integer.toHexString(ModRM & 0x38));
                    break;
            }
        }
    };
    /*TODO*///static void i_invalid(void)
    /*TODO*///{
    /*TODO*///    /* makes the cpu loops forever until user resets it */
    /*TODO*///	/*	{ extern int debug_key_pressed; debug_key_pressed = 1; }