public static IEnumerable <bool> INCREMENT_REG(Memory mem, Registers reg) { byte val; switch (mem[reg.PC]) { case 0x04: val = reg.B; reg.B += 1; Debug.Log("INC B"); break; case 0x0C: val = reg.C; reg.C += 1; Debug.Log("INC C"); break; case 0x24: val = reg.H; reg.H += 1; Debug.Log("INC H"); break; default: throw new InvalidOperationException("Increment instruction has not been implemented yet!"); } reg.fZ = (reg.C == 0) ? true : false; reg.fN = false; reg.fH = ZMath.CheckHalfCarry(val, 1); reg.PC += 1; yield break; }
public static IEnumerable <bool> DECREMENT_REG(Memory mem, Registers reg) { byte val = 0; switch (mem[reg.PC]) { case 0x05: val = reg.B; reg.B -= 1; Debug.Log("DEC B"); break; case 0x15: val = reg.D; reg.D -= 1; Debug.Log("DEC D"); break; case 0x0D: val = reg.C; reg.C -= 1; Debug.Log("DEC C"); break; case 0x1D: val = reg.E; reg.E -= 1; Debug.Log("DEC E"); break; case 0x3D: val = reg.A; reg.A -= 1; Debug.Log("DEC A"); break; } reg.fZ = (val - 1) == 0; reg.fN = true; reg.fH = ZMath.CheckHalfBorrow(val, 1); reg.PC += 1; yield break; }
public static IEnumerable <bool> COMPARE(Memory mem, Registers reg) { byte val = 0; switch (mem[reg.PC]) { case 0xFE: val = mem[reg.PC + 1]; Debug.Log("CP d8"); yield return(true); break; } reg.fZ = reg.A == val; reg.fN = true; reg.fH = !ZMath.CheckHalfBorrow(reg.A, val); reg.fC = reg.A < val; reg.PC += 2; yield break; }
public static IEnumerable <bool> SUB(Memory mem, Registers reg) { byte val = reg.A; switch (mem[reg.PC]) { case 0x90: val = reg.B; Debug.Log("SUB B"); break; default: throw new InvalidOperationException("Subtraction instruction has not been implemented yet!"); } reg.fZ = reg.A - val == 0; reg.fN = true; reg.fH = !ZMath.CheckHalfBorrow(reg.A, val); reg.fC = reg.A > val; reg.A -= val; reg.PC += 1; yield break; }
private void button2_Click(object sender, EventArgs e) { double L0 = 0;//(double)numericUpDown1.Value;//中央经线 List <PointPair> pts = dataGridView1.DataSource as List <PointPair>; List <PointPair> DealData = new List <PointPair>(); for (int i = 0; i < pts.Count; i++) { PointPair pt = pts[i]; double b1 = pt.X1; double l1 = pt.Y1; double h1 = pt.Z1; double bb1 = ZMath.RADtoDMS(new Angle(b1).ToRadian().Rad); double ll1 = ZMath.RADtoDMS(new Angle(l1).ToRadian().Rad); //转换成空间直角坐标 double X, Y, Z; ZMath.BLHtoXYZ(ZMath.a84, ZMath.e284, bb1, ll1, h1, out X, out Y, out Z); double x2 = pt.X2; double y2 = pt.Y2; double z2 = pt.Z2; double a0, a2, a4, a6, a8; ZMath.Cal_a(ZMath.a54, ZMath.e254, out a0, out a2, out a4, out a6, out a8); double bf = ZMath.Bf(x2, a0, a2, a4, a6, a8);//底点坐标 Angle angle = new Angle(L0); double bfRadian = angle.ToRadian().Rad; double B, L; y2 = y2 - 500000; ZMath.Cal_BL(bf, y2, bfRadian, ZMath.a54, ZMath.e254, ZMath.e2254, out B, out L); //Radian rad = new Radian(B); double b2 = ZMath.RADtoDMS(B); //Radian rad2 = new Radian(L); double l2 = ZMath.RADtoDMS(L); double XX, YY, ZZ; //转换成空间直角坐标 ZMath.BLHtoXYZ(ZMath.a54, ZMath.e254, b2, l2, z2, out XX, out YY, out ZZ); PointPair pt22 = new PointPair(); pt22.ID = pt.ID; pt22.X1 = X; pt22.Y1 = Y; pt22.Z1 = Z; pt22.X2 = XX; pt22.Y2 = YY; pt22.Z2 = ZZ; DealData.Add(pt22); } double dx; double dy; double dz; double k; double ex; double ey; double ez; ZMath.Cal7Parameter(DealData, out dx, out dy, out dz, out k, out ex, out ey, out ez); string res = string.Format("七参数结果如下:\nDx:{0}\nDy:{1}\nDz:{2}\nex:{3}\ney:{4}\nez:{5}\nk:{6}", dx, dy, dz, ex, ey, ez, k); richTextBox1.Text = res; }