Ejemplo n.º 1
0
        public void Setup()
        {
            var testData = new[]
            {
                "mask = 000000000000000000000000000000X1001X",
                "mem[42] = 100",
                "mask = 00000000000000000000000000000000X0XX",
                "mem[26] = 1"
            };

            var mockPuzzleInput = new Mock <IPuzzleInput>();

            mockPuzzleInput.Setup(p => p.GetPuzzleInputAsArray(It.IsAny <string>())).Returns(testData);

            var sequence = new MockSequence();

            _mockBitMasker = new Mock <IBitMasker>(MockBehavior.Strict);
            _mockBitMasker.InSequence(sequence).Setup(b => b.ApplyMultiple(It.IsAny <string>(), 42))
            .Returns(new long[] { 26, 27, 58, 59 });
            _mockBitMasker.InSequence(sequence).Setup(b => b.ApplyMultiple(It.IsAny <string>(), 26))
            .Returns(new long[] { 16, 17, 18, 19, 24, 25, 26, 27 });

            _memory = new Memory2(mockPuzzleInput.Object, _mockBitMasker.Object);

            _memory.Initialise();
        }
Ejemplo n.º 2
0
    void Awake()
    {
        rnd = new System.Random(GetInstanceID());

        Qnetwork = new MLP(state_size, hiddenSizes);

        QtargetNetwork = new MLP(state_size, hiddenSizes);

        Qnetwork.copyTo(QtargetNetwork);

        memory = new Memory2(MEM_LIMIT, rnd, state_size);

        test_mode = false;
    }
Ejemplo n.º 3
0
        public void Setup()
        {
            var testData = new[]
            {
                "mask = 000000000000000000000000000000X1001X",
                "mem[42] = 100",
                "mask = 00000000000000000000000000000000X0XX",
                "mem[26] = 1"
            };

            var mockPuzzleInput = new Mock <IPuzzleInput>();

            mockPuzzleInput.Setup(p => p.GetPuzzleInputAsArray(It.IsAny <string>())).Returns(testData);

            _memory = new Memory2(mockPuzzleInput.Object, new BitMasker());

            _memory.Initialise();
        }
Ejemplo n.º 4
0
 public void BuildMemory()
 {
     memory = new Memory2(map.Length);
 }
Ejemplo n.º 5
0
        private void frmRegisters_Load(object sender, EventArgs e)
        {
            registers.Append <uint16_t>(Register.PC);            // Program counter
            registers.Append <uint16_t>(Register.MAR);           // Memory address register
            registers.Append <uint16_t>(Register.MLR);           // Memory length register

            registers.Append <uint64_t>(Register.MDR);           // Memory data register (64-bits)
            registers.Subdivide(Register.MDR, Register.MDR32);   // 32-bit MDR register
            registers.Subdivide(Register.MDR32, Register.MDR16); // 16-bit MDR register
            registers.Subdivide(Register.MDR16, Register.MDR8);  // 8-bit MDR register

            registers.Append <Opcode>(Register.CIR);             // Current instruction register

            registers.Append <uint16_t>(Register.IDT);           // Interrupt Descriptor Table address

            registers.Append <uint64_t>(Register.FLAGS);         // Flags register

            registers.Append <uint32_t>(Register.SVM);

            registers.Append <uint32_t>(Register.EAX);
            registers.Subdivide(Register.EAX, Register.AX);
            registers.Subdivide(Register.AX, Register.AL, Register.AH);

            registers.Append <uint32_t>(Register.EBX);
            registers.Subdivide(Register.EBX, Register.BX);
            registers.Subdivide(Register.BX, Register.BL, Register.BH);

            registers.Append <uint32_t>(Register.ECX);
            registers.Subdivide(Register.ECX, Register.CX);
            registers.Subdivide(Register.CX, Register.CL, Register.CH);

            registers.Append <uint32_t>(Register.EDX);
            registers.Subdivide(Register.EDX, Register.DX);
            registers.Subdivide(Register.DX, Register.DL, Register.DH);

            registers.Append <uint16_t>(Register.ABP);
            registers.Append <uint16_t>(Register.AEI);
            registers.Append <uint16_t>(Register.AEL);
            registers.Append <uint16_t>(Register.AEP);

            registers.BuildMemory();

            //byte[] bin = Assemble();
            byte[] bcmos  = System.IO.File.ReadAllBytes("cmos.bin");
            byte[] bdisk1 = System.IO.File.ReadAllBytes("disk1.bin");

            // Build the VM
            cmosMemory  = new Memory2(bcmos);
            cmos        = new DiskDrive(cmosMemory);
            disk1Memory = new Memory2(bdisk1);
            disk1       = new DiskDrive(disk1Memory);
            sb          = new Southbridge(cmos);
            sb.AddDevice(disk1);
            keyboard = new Keyboard();
            sb.AddDevice(keyboard);
            cpu      = new CPU2();
            graphics = new MonochromeDisplayAdapter();
            nb       = new Northbridge(cpu, sb, new Memory2(64 * 1024), graphics);
            clock    = new ThreadedClock(nb);
            nb.Clock = clock;
            vm       = new VirtualMachine(cpu, clock, nb, sb);

            byte[] state = vm.GetRegisters();
            registers.LoadState(state);

            //graphics.Write(0, Encoding.ASCII.GetBytes("Hello World!"));

            UpdateList();
        }