public InstructionConfigurator(ISystemBridge bridge) { _bridge = bridge; _addressOperation = new AddressOperationInstruction(); _binaryRegistersOperation = new BinaryRegistersOperationInstruction(); _callableOperation = new CallableInstruction(); _registerAddressOperation = new RegisterAddressOperationInstruction(); _unrayOperation = new UnaryOperationInstruction(); }
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); }
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; }
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); }