void fun()
{
while (true) /// или по частоте.
{
Signal(0); /// подаю сигнал
Signal(1); /// переключаю сигнал
}
}
/// передаю главной шине, соединяющий непосредственно сам источник
///сигналов
void Signal(byte val) {
///сообщаю всем подсоединённым устройствам к ней о сигнале.
controllerBus.signal(val);
}
//////class ControllerBus класс подключенного провода к источнику сигнала
/// (реализует ICPUDevice( базовый интерфейс любого элемента процессора) то
//// есть у него есть источники входа и выхода из таких же элементов
void signal(byte val)
{
/// !!! непонятно!!! вот тут может быть рекурсия,(может даже вечная). К примеру на один регистер пришел сигнал
//// и передается значение дальше, а где-то там впереди, требуется вычислить значение регистра, до которого функция signal() и work() еще не дошла.
/// CPuDevice устройство к примеру регистер, сумматор, Алу элемент.....
Queue<CpuDevice> queue = getComponets(); // Получить все подключенные регистры, устройства, триггеры.
/// обойти каждый элемент последовательно обработать
foreach (var device in queue)
{
byte output = device.Work(); // выполнить .... работу на устройстве
// допустим элемент "НЕ". пришла 1, вернуть 0.
device.signal(output); /// передать дальше сигнал, подключенным outputDevices устройствам
}
}