コード例 #1
0
        public Register8 Create(Register8 model)
        {
            Register8 register;

            using (var context = new WebKikDataContext())
            {
                register = context.Registers8.Add(new Register8
                {
                    Year = model.Year,
                    OwnerProjectCompanyId = model.OwnerProjectCompanyId,
                    Currency = model.Currency,
                    Type     = RegisterType.Register8
                });
                int dataTypeId = 0;
                foreach (var reserve in model.Register8Data)
                {
                    if (dataTypeId != RESERVE_DATATYPE_SUMMARY)
                    {
                        context.Registers8Data.Add(new Register8Data
                        {
                            Register8DataTypeId         = dataTypeId,
                            Register8Id                 = register.Id,
                            ExpensesFormationOfReserve  = reserve.ExpensesFormationOfReserve,
                            ExpensesReducedOfReserve    = reserve.ExpensesReducedOfReserve,
                            IncomeFromRecoveryOfReserve = reserve.IncomeFromRecoveryOfReserve
                        });
                        dataTypeId++;
                    }
                }
                context.SaveChanges();
                return(register);
            }
        }
コード例 #2
0
        public void GetHashCodeTest()
        {
            var r = new Register8(10);

            Assert.Equal(r.GetHashCode(), new Register8(10).GetHashCode());
            Assert.NotEqual(r.GetHashCode(), new Register8(20).GetHashCode());
        }
コード例 #3
0
        public Register8 Edit(Register8 model)
        {
            Register8 register;

            using (var context = new WebKikDataContext())
            {
                register = context.Registers8.Where(r => r.Id == model.Id).FirstOrDefault();
                if (register != null)
                {
                    register.Currency = model.Currency;
                }
                int dataTypeId = 0;
                foreach (var reserve in model.Register8Data)
                {
                    if (dataTypeId != RESERVE_DATATYPE_SUMMARY)
                    {
                        var register8Data = context.Registers8Data.Where(data => data.Register8Id == model.Id && data.Register8DataTypeId == reserve.Register8DataTypeId).FirstOrDefault();
                        if (register8Data != null)
                        {
                            register8Data.ExpensesFormationOfReserve  = reserve.ExpensesFormationOfReserve;
                            register8Data.ExpensesReducedOfReserve    = reserve.ExpensesReducedOfReserve;
                            register8Data.IncomeFromRecoveryOfReserve = reserve.IncomeFromRecoveryOfReserve;
                            dataTypeId++;
                        }
                    }
                }
                context.SaveChanges();
                return(register);
            }
        }
コード例 #4
0
        public void NonDefaultConstructorTest(byte value)
        {
            var r1 = new Register8(value);
            var r2 = new Register8(value);

            Assert.Equal(r1, r2);
        }
コード例 #5
0
        public void EqualityTest_NotRegister8()
        {
            var r = new Register8(0);

            Assert.False(r.Equals(null));
            Assert.False(r.Equals(0));
        }
コード例 #6
0
ファイル: IN.cs プロジェクト: chazjn/Z80CPU
        public TStates SetRegister(Z80 z80, Register8 register)
        {
            var address = ByteHelper.CreateUShort(z80.B.Value, z80.C.Value);

            register.Value = z80.Ports.GetByte(address);
            return(TStates.Count(12));
        }
コード例 #7
0
ファイル: OperandsTest.cs プロジェクト: merwaaan/mr.system
 public void CanChangeValue() {
   cpu.registers.a = 0;
   Register8 reg = new Register8(cpu, "a");
   reg.Target = 0xFF;
   Assert.Equal(0xFF, reg.Target);
   Assert.Equal(0xFF, cpu.registers.a);
 }
コード例 #8
0
 public static Action adc(CPU cpu, Register8 o1, Operand<byte> o2) =>
   () => {
     cpu.registers.a += (byte)(o2.Target + Convert.ToByte(cpu.Carry));
     cpu.Sign = cpu.registers.a > 0x7F;
     cpu.Zero = cpu.registers.a == 0;
     cpu.HalfCarry = true; // TODO
     cpu.Overflow = true; // TODO
     cpu.AddSub = false;
     cpu.Carry = false; // TODO
   };
コード例 #9
0
        public void EmptyRegister8()
        {
            // Arrange
            var register8 = new Register8();

            // Act

            // Assert
            Assert.That(register8.Value == 0x00);
        }
コード例 #10
0
        public void SettingRegister8Value()
        {
            // Arrange
            var register8 = new Register8();

            // Act
            register8.Value = 0x01;

            // Assert
            Assert.That(register8.Value == 0x01);
        }
コード例 #11
0
ファイル: FlagsCalculator.cs プロジェクト: chazjn/Z80CPU
        internal void SetFlags(Register8 cloneOfA)
        {
            //if(_z80.CurrentOpcode.)



            //zero
            if (_z80.A.Value == 0)
            {
                _z80.F.Zero = true;
            }
        }
コード例 #12
0
 public static Action add(CPU cpu, Register8 o1, Operand<byte> o2) =>
   () => {
     byte a = o1.Target;
     o1.Target += o2.Target;
     cpu.Sign = o1.Target > 0x7F;
     cpu.Zero = o1.Target == 0;
     cpu.HalfCarry = (a & 0x0F) + (o2.Target & 0x0F) > 0x0F;
     cpu.Overflow = Utils.Sign(a) == Utils.Sign(o2.Target) &&
                    Utils.Sign(a) != Utils.Sign(o1.Target);
     cpu.AddSub = false; 
     cpu.Carry = a + o2.Target > 0xFF;
   };
コード例 #13
0
        public Z80(Memory memory, Ports ports)
        {
            Memory = memory;
            Ports  = ports;

            F  = new Registers.Flags();
            F_ = new Registers.Flags();
            PC = new Register16("PC");
            SP = new Register16("SP");

            A = new Register8("A");
            B = new Register8("B");
            C = new Register8("C");
            D = new Register8("D");
            E = new Register8("E");
            H = new Register8("H");
            L = new Register8("L");

            A_ = new Register8("A");
            B_ = new Register8("B");
            C_ = new Register8("C");
            D_ = new Register8("D");
            E_ = new Register8("E");
            H_ = new Register8("H");
            L_ = new Register8("L");

            I = new Register8("I");
            R = new Register8("R");

            AF = new Register16(A, F);
            BC = new Register16(B, C);
            DE = new Register16(D, E);
            HL = new Register16(H, L);
            IX = new Register16("IX");
            IY = new Register16("IY");

            AF_ = new Register16(A_, F_);
            BC_ = new Register16(B_, C_);
            DE_ = new Register16(D_, E_);
            HL_ = new Register16(H_, L_);

            InstructionSet = new InstructionSet();

            Buffer = new List <byte>();

            PC.Value = 0x0;
            SP.Value = 0XFFFF;

            Buffer.Clear();
        }
コード例 #14
0
        public void SettingRegister16Value()
        {
            // Arrange
            var firstRegister8  = new Register8();
            var secondRegister8 = new Register8();
            var register16      = new Register16(firstRegister8, secondRegister8);

            // Act
            register16.Value = 0x1122;

            // Assert
            Assert.That(register16.Value == 0x1122);

            Assert.That(firstRegister8.Value == 0x11);
            Assert.That(secondRegister8.Value == 0x22);
        }
コード例 #15
0
        public void SettingRegister8ValuePartOfRegister16()
        {
            // Arrange
            var firstRegister8  = new Register8();
            var secondRegister8 = new Register8();
            var register16      = new Register16(firstRegister8, secondRegister8);

            // Act
            firstRegister8.Value = 0xAA;

            // Assert
            Assert.That(register16.Value == 0xAA00);

            Assert.That(firstRegister8.Value == 0xAA);
            Assert.That(secondRegister8.Value == 0x00);
        }
コード例 #16
0
        public void SetRegister8(Register8 register, byte value)
        {
            switch (register)
            {
            case Register8.A: A = value; break;

            case Register8.B: B = value; break;

            case Register8.C: C = value; break;

            case Register8.D: D = value; break;

            case Register8.E: E = value; break;

            case Register8.H: H = value; break;

            case Register8.L: L = value; break;
            }
        }
コード例 #17
0
        public void EqualityTest(byte value)
        {
            var r1 = new Register8(value);
            var r2 = new Register8((byte)(value / 2 - 1));
            var r3 = new Register8(value);

            Assert.True(r1 == r3);
            Assert.True(r1 != r2);
            Assert.True(r2 != r3);

            Assert.True(r1.Equals(r3));
            Assert.False(r1.Equals(r2));
            Assert.False(r2.Equals(r3));

            Assert.True(r1.Equals((object)r3));
            Assert.False(r1.Equals((object)r2));
            Assert.False(r2.Equals((object)r3));

            Assert.Equal(r1.GetHashCode(), r3.GetHashCode());
        }
コード例 #18
0
        public byte GetRegister8(Register8 register)
        {
            switch (register)
            {
            case Register8.A: return(A);

            case Register8.B: return(B);

            case Register8.C: return(C);

            case Register8.D: return(D);

            case Register8.E: return(E);

            case Register8.H: return(H);

            case Register8.L: return(L);

            default: return(0);
            }
        }
コード例 #19
0
        public Registers()
        {
            // 8-bit registers
            A = new Register8();
            F = new FlagRegister8();
            B = new Register8();
            C = new Register8();
            D = new Register8();
            E = new Register8();
            H = new Register8();
            L = new Register8();

            // Paired 8-bit into 16-bit registers
            AF = new Register16(A, F);
            BC = new Register16(B, C);
            DE = new Register16(D, E);
            HL = new Register16(H, L);

            // 16-bit registers
            SP = new Register16(new Register8(), new Register8());
            PC = new Register16(new Register8(), new Register8());
        }
コード例 #20
0
        public async Task <IEnumerable <RegisterListItem> > GetRegistersByShareIdAndYear(int projectCompanyId, int year)
        {
            var registersList = new List <RegisterListItem>();

            /// todo: Refactor into loop

            //register1
            var register1 = await register1Repository.Where(x => x.Year == (Year)year && x.OwnerProjectCompanyId == projectCompanyId).FirstOrDefaultAsync();

            registersList.Add(new RegisterListItem
            {
                Id       = register1 != null ? register1.Id : 0,
                Type     = register1 != null ? register1.Type : RegisterType.Register1,
                IsFilled = register1 != null
            });

            //register2
            var register2 = await register2Repository.Where(x => x.Year == (Year)year && x.OwnerProjectCompanyId == projectCompanyId).FirstOrDefaultAsync();

            registersList.Add(new RegisterListItem
            {
                Id       = register2 != null ? register2.Id : 0,
                Type     = register2 != null ? register2.Type : RegisterType.Register2,
                IsFilled = register2 != null
            });

            //register3
            var register3 = await register3Repository.Where(x => x.Year == (Year)year && x.OwnerProjectCompanyId == projectCompanyId).FirstOrDefaultAsync();

            registersList.Add(new RegisterListItem
            {
                Id       = register3 != null ? register3.Id : 0,
                Type     = register3 != null ? register3.Type : RegisterType.Register3,
                IsFilled = register3 != null
            });

            //register4
            var register4 = await register4Repository.Where(x => x.Year == (Year)year && x.OwnerProjectCompanyId == projectCompanyId).FirstOrDefaultAsync();

            registersList.Add(new RegisterListItem
            {
                Id       = register4 != null ? register4.Id : 0,
                Type     = register4 != null ? register4.Type : RegisterType.Register4,
                IsFilled = register4 != null
            });

            //register5
            var register5 = await register5Repository.Where(x => x.Year == (Year)year && x.OwnerProjectCompanyId == projectCompanyId).FirstOrDefaultAsync();

            registersList.Add(new RegisterListItem
            {
                Id       = register5 != null ? register5.Id : 0,
                Type     = register5 != null ? register5.Type : RegisterType.Register5,
                IsFilled = register5 != null
            });


            //register6
            var register6 = await register6Repository.Where(x => x.Year == (Year)year && x.OwnerProjectCompanyId == projectCompanyId).FirstOrDefaultAsync();

            registersList.Add(new RegisterListItem
            {
                Id       = register6 != null ? register6.Id : 0,
                Type     = register6 != null ? register6.Type : RegisterType.Register6,
                IsFilled = register6 != null
            });

            //register7
            var register7 = await register7Repository.Where(x => x.Year == (Year)year && x.OwnerProjectCompanyId == projectCompanyId).FirstOrDefaultAsync();

            registersList.Add(new RegisterListItem
            {
                Id       = register7 != null ? register7.Id : 0,
                Type     = register7 != null ? register7.Type : RegisterType.Register7,
                IsFilled = register7 != null
            });
            Register8 register8 = null;

            using (var context = new WebKikDataContext())
            {
                register8 = context.Registers8.Where(rg8 => (rg8.Year == year && rg8.OwnerProjectCompanyId == projectCompanyId)).FirstOrDefault();
            }
            registersList.Add(new RegisterListItem
            {
                Id       = register8 != null ? register8.Id : 0,
                Type     = register8 != null ? register8.Type : RegisterType.Register8,
                IsFilled = register8 != null
            });
            Register9 register9 = null;

            using (var context = new WebKikDataContext())
            {
                register9 = context.Registers9.Where(rg9 => (rg9.Year == year && rg9.OwnerProjectCompanyId == projectCompanyId)).FirstOrDefault();
            }
            registersList.Add(new RegisterListItem
            {
                Id       = register9 != null ? register9.Id : 0,
                Type     = register9 != null ? register9.Type : RegisterType.Register9,
                IsFilled = register9 != null
            });

            Register10 register10;

            using (var context = new WebKikDataContext())
            {
                register10 = context.Registers10.FirstOrDefault(x => x.Year == year && x.OwnerProjectCompanyId == projectCompanyId);
            }
            registersList.Add(new RegisterListItem
            {
                Id       = register10?.Id ?? 0,
                Type     = register10?.Type ?? RegisterType.Register10,
                IsFilled = register10 != null
            });
            Register11 register11;

            using (var context = new WebKikDataContext())
            {
                register11 = context.Registers11.FirstOrDefault(x => x.Year == year && x.OwnerProjectCompanyId == projectCompanyId);
            }
            registersList.Add(new RegisterListItem
            {
                Id       = register11 != null ? register11.Id : 0,
                Type     = register11 != null ? register11.Type : RegisterType.Register11,
                IsFilled = register11 != null
            });
            return(registersList);
        }
コード例 #21
0
 public static Action sbc(CPU cpu, Register8 o1, Operand<byte> o) =>
   () => {
     cpu.registers.a -= o.Target;
     cpu.Sign = cpu.registers.a > 0x7F;
     cpu.Zero = cpu.registers.a == 0;
     cpu.HalfCarry = true; // TODO
     cpu.Overflow = true; // TODO
     cpu.AddSub = true;
     cpu.Carry = false; // TODO
   };
コード例 #22
0
ファイル: OperandsTest.cs プロジェクト: merwaaan/mr.system
 public void CanGetOriginalValue() {
   cpu.registers.a = 0x05;
   Register8 reg = new Register8(cpu, "a");
   Assert.Equal(0x05, reg.Target);
 }
コード例 #23
0
        public void ToStringTest(byte value)
        {
            var r = new Register8(value);

            Assert.Equal($"{r.Value}", r.ToString());
        }
コード例 #24
0
 private Register8 CalculateRegister7Fileds(Register8 entity)
 {
     return(entity);
 }
コード例 #25
0
 public Register16(Register8 register, Register8 register2)
 {
     Registers = new[] { register, register2 };
 }
コード例 #26
0
		public byte GetRegister8(Register8 register)
		{
			switch (register)
			{
				case Register8.A: return A;
				case Register8.B: return B;
				case Register8.C: return C;
				case Register8.D: return D;
				case Register8.E: return E;
				case Register8.H: return H;
				case Register8.L: return L;
				default: return 0;
			}
		}
コード例 #27
0
ファイル: OperandsTest.cs プロジェクト: merwaaan/mr.system
 public void CanGetChangedValue() {
   cpu.registers.a = 0x05;
   Register8 reg = new Register8(cpu, "a");
   cpu.registers.a = 0x10;
   Assert.Equal(0x10, reg.Target);
 }
コード例 #28
0
 public Register8 CalculateRegisterFields(Register8 register)
 {
     return(CalculateRegister7Fileds(register));
 }
コード例 #29
0
		public void SetRegister8(Register8 register, byte value)
		{
			switch (register)
			{
				case Register8.A: A = value; break;
				case Register8.B: B = value; break;
				case Register8.C: C = value; break;
				case Register8.D: D = value; break;
				case Register8.E: E = value; break;
				case Register8.H: H = value; break;
				case Register8.L: L = value; break;
			}
		}