Я пытаюсь сделать 16-битную симуляцию базового компьютера с помощью Swift. Мне удалось настроить сами компоненты, но я испытываю трудности при их подключении. Как мне установить соединения между различными компонентами?
До сих пор я пытался создать провод struct
, который имеет единственное значение. Это значение служит выходом и вводом провода. Хотя настройка ввода работает должным образом, я не могу понять, как вывести значение провода для компонента.
Вот пример компонента. Это просто НЕ ворота.
public struct invert {
private var _x : Bool
public var x: Bool { //Input
get {
return _x
}
set {
_x = x
update()
}
}
public var out : Bool //Output
internal mutating func update(){
out = !x //Updates output when input is changed
}
public init(x:Bool){
self._x = x
self.out = false
self.x = x
}
}
Подробнее о работе компонентов см. этот ответ
А вот мой существующий провод struct
. Он имеет ту же базовую структуру, что и вентиль NOT выше, только с небольшими изменениями.
public struct wire {
private var _value : Bool
public var value : Bool { //Value of the wire
get {
return _value
}
set {
_value = value
update()
}
}
internal mutating func update(){
//This is a placeholder for if and when I need it in the future.
}
public init(input:Bool){
_value = input
value = input
}
}
Я не знаю, как мне следует подключить это к входу другой цепи. Основным препятствием является обеспечение того, что входное значение другой цепи изменяется при изменении значения провода. Как лучше всего это преодолеть?