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); }
public SystemBridge(IMemoryManagementUnit mmu, IArithmeticLogicUnit alu, IDisplay display, IKeyboard keyboard) { _mmu = mmu; _alu = alu; _display = display; _keyboard = keyboard; // TODO: calculate according to display settings? _spriteBuffer = new Byte[MaxSpriteSize]; }
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); }
/// <summary> /// Initializes a new instance of the <see cref="Computer"/> class. /// </summary> /// <param name="stack">The stack.</param> /// <param name="encoder">The instruction encoder.</param> /// <param name="decoder">The instruction decoder.</param> public ExecutionUnit(IStack stack, IEncoder encoder, IDecoder decoder, IArithmeticLogicUnit alu) { _context = new ExecutionContext { Stack = stack, Encoder = encoder, Decoder = decoder, Alu = alu, Executing = true }; _dispatcher = new Dictionary<InstructionType, Action<ExecutionContext, Instruction>> { { InstructionType.Mult, Multiply.GetAction() }, { InstructionType.Call, Call.GetAction() }, { InstructionType.Ret, Return.GetAction() }, { InstructionType.Stop, Stop.GetAction() }, { InstructionType.Print, Print.GetAction() }, { InstructionType.Push, Push.GetAction() } }; }
public CentralProcessingUnit(IArithmeticLogicUnit arithmeticLogicUnit, IInstructionParser parser, IInstructionReader reader) { ALU = arithmeticLogicUnit; Parser = parser; Reader = reader; }
private ISystemBridge BuildBridge(IMemoryManagementUnit mmu, IArithmeticLogicUnit alu, IDisplay display, IKeyboard keyboard) { ISystemBridge bridge = new SystemBridge(mmu, alu, display, keyboard); return(bridge); }