protected int Jmp(int opcode) { IOperand op = cpu.ResolveSrcEA((opcode >> 3) & 0x07, (opcode & 0x07), Size.SizeLong); cpu.SetPC(op.GetComputedAddress()); return(TIMING[op.Index()]); }
protected int MoveaWord(int opcode) { IOperand src = cpu.ResolveSrcEA((opcode >> 3) & 0x07, opcode & 0x07, Size.Word); cpu.SetAddrRegisterLong((opcode >> 9) & 0x07, src.GetWordSigned()); return(MOVE.ShortExecutionTime[src.Index()][1]); }
protected int MoveaLong(int opcode) { IOperand src = cpu.ResolveSrcEA((opcode >> 3) & 0x07, opcode & 0x07, Size.SizeLong); cpu.SetAddrRegisterLong((opcode >> 9) & 0x07, src.GetLong()); return(MOVE.LongExecutionTime[src.Index()][1]); }
protected int Lea(int opcode) { IOperand src = cpu.ResolveSrcEA((opcode >> 3) & 0x07, opcode & 0x07, Size.SizeLong); cpu.SetAddrRegisterLong((opcode >> 9) & 0x07, src.GetComputedAddress()); return(TIMING[src.Index()]); }
protected int Pea(int opcode) { IOperand src = cpu.ResolveSrcEA((opcode >> 3) & 0x07, opcode & 0x07, Size.SizeLong); cpu.PushLong(src.GetComputedAddress()); return(TIMING[src.Index()]); }
protected int MoveWord(int opcode) { IOperand src = cpu.ResolveSrcEA((opcode >> 3) & 0x07, opcode & 0x07, Size.Word); IOperand dst = cpu.ResolveDstEA((opcode >> 6) & 0x07, (opcode >> 9) & 0x07, Size.Word); int s = src.GetWord(); dst.SetWord(s); cpu.CalcFlags(InstructionType.MOVE, s, s, s, Size.Word); return(ShortExecutionTime[src.Index()][dst.Index()]); }
protected int MovemWordR2m(int opcode) { int reglist = cpu.FetchPCWord(); IOperand dst = cpu.ResolveDstEA((opcode >> 3) & 0x07, opcode & 0x07, Size.Word); int address = dst.GetComputedAddress(); int count; if (((opcode >> 3) & 0x07) == 4) { count = PutMultipleWordPreDec(opcode & 0x07, reglist, address); } else { count = PutMultipleWord(reglist, address); } return(R2M_Timing[dst.Index()] + (count << 2)); }
protected int MovemWordM2r(int opcode) { int reglist = cpu.FetchPCWord(); IOperand src = cpu.ResolveSrcEA((opcode >> 3) & 0x07, opcode & 0x07, Size.Word); int address = src.GetComputedAddress(); int count; if (((opcode >> 3) & 0x07) == 3) { count = GetMultipleWordPostInc(opcode & 0x07, reglist, address); } else { count = GetMultipleWord(reglist, address); } return(M2R_Timing[src.Index()] + (count << 2)); }