public InstructionConfigurator(ISystemBridge bridge)
 {
     _bridge                   = bridge;
     _addressOperation         = new AddressOperationInstruction();
     _binaryRegistersOperation = new BinaryRegistersOperationInstruction();
     _callableOperation        = new CallableInstruction();
     _registerAddressOperation = new RegisterAddressOperationInstruction();
     _unrayOperation           = new UnaryOperationInstruction();
 }
Exemple #2
0
        public IChip8Device Build(IKeyboard keyboard, IDisplay display)
        {
            IArithmeticLogicUnit   alu          = BuildALU();
            IMemoryManagementUnit  mmu          = new MemoryManagementUnit();
            ISystemBridge          systemBridge = BuildBridge(mmu, alu, display, keyboard);
            ICentralProcessingUnit cpu          = BuildCPU(alu, mmu, systemBridge);

            Chip8Device device = new Chip8Device(cpu, mmu, systemBridge, keyboard, display);

            LoadFonts(mmu, Fontset, FontOffset);

            return(device);
        }
Exemple #3
0
        public Chip8Device(
            ICentralProcessingUnit cpu,
            IMemoryManagementUnit mmu,
            ISystemBridge systemBridge,
            IKeyboardDataSource keyboard,
            IDisplay display)

        {
            // TODO: subscribe to device events
            CPU      = cpu;
            MMU      = mmu;
            Bridge   = systemBridge;
            Keyboard = keyboard;
            Display  = display;
        }
Exemple #4
0
        private ICentralProcessingUnit BuildCPU(IArithmeticLogicUnit alu, IMemoryManagementUnit mmu, ISystemBridge bridge)
        {
            IInstructionConfigurator configurator = new InstructionConfigurator(bridge);
            IInstructionParser       parser       = new InstructionParser(configurator);
            InstructionReader        reader       = new InstructionReader(mmu, alu.IP);
            ICentralProcessingUnit   cpu          = new CentralProcessingUnit(alu, parser, reader);

            return(cpu);
        }