Вступление

Низкоуровневую работу микропроцессора мы будем демонстрировать с помощью простого клеточного автомата (википедия, но можно не ходить), визуализированного в виде обычной картинки, где каждая клетка - пиксель, чаще всего увеличенный для наглядности.

Эта каждая клетка является либо проводником (когда окрашена), либо “физически отсутствует” (когда нет). Мы будем раскрашивать клетки в разные цвета ради удобства нашего восприятия, но для клеточного автомата они все будут совершенно равнозначны. Есть цвет - проводник. Нет цвета (черный) - не проводник.

Вы вполне можете думать о каждой из них как о медном квадратике на печатной плате со слегка скругленными углами, который сверху покрыли цветным лаком. Скругленными, чтобы не было контакта между угловыми клетками, только между торцевыми; иначе это усложнит нам правила (формально описаны в следующем разделе).

Если к этому квадратику с любого торца подать напряжение (перевести в активное состояние, выставить 1, включить и т.д.), то он будет это напряжение через себя проводить во все стороны. А если не подавать, то не будет. Клетки “под напряжением” мы будем выделять более ярким цветом.

Схемы

Так как примеров у нас довольно много, а кроме того их часто требуется показывать в динамике, я буду вставлять наши схемы прямо в текст с помощью похожего на xpm формата с автоматической трансформацией в картинку по мере загрузки.
Вот такую, например:

:x white
+------------------------------------------+
|   x   x   x                              |
|   x   x   x     xx        xxxxxxxxxxx    |
|   xxxx xxx xxxxxx xx      xxxxxxxxxxx    |
|   x   x   x     xx x      xxxx   xxxx    |
|xxx xxxx   x        x      xxx xxx xxx    |
|   x   x   x     xx xx     xxxxxxx xxx    |
|   x   xxxx xxxxxx xx xxxxxxxxxx  xxxxxxxx|
|   x   x   x     xx xx     xxxxxxx xxx    |
|   x   x   x        x      xxx xxx xxx    |
|   x   x   x  xx xx x      xxxx   xxxx    |
|   x   x   xxxx xx xx      xxxxxxxxxxx    |
|   x   x   x  xx xx        xxxxxxxxxxx    |
|   x   x   x                              |
+------------------------------------------+

На месте схемы выше вы должны были сначала увидеть обычный текст, где описаны символы, их цвет и собственно схему в ASCII, а так же быстрое превращение всего этого в картинку. Если не увидели - не берите в голову, у вас хороший компьютер (смартфон, телевизор, …). Если же ничего никуда не конвертировалось, то жаль, у вас наоборот недостаточно шустрая машинка; ну либо не поддерживается wasm; или отключен js; надеюсь все же не я накосячил.

Это, на всякий случай, не трансформированный оригинал:

:x white
+------------------------------------------+
|   x   x   x                              |
|   x   x   x     xx        xxxxxxxxxxx    |
|   xxxx xxx xxxxxx xx      xxxxxxxxxxx    |
|   x   x   x     xx x      xxxx   xxxx    |
|xxx xxxx   x        x      xxx xxx xxx    |
|   x   x   x     xx xx     xxxxxxx xxx    |
|   x   xxxx xxxxxx xx xxxxxxxxxx  xxxxxxxx|
|   x   x   x     xx xx     xxxxxxx xxx    |
|   x   x   x        x      xxx xxx xxx    |
|   x   x   x  xx xx x      xxxx   xxxx    |
|   x   x   xxxx xx xx      xxxxxxxxxxx    |
|   x   x   x  xx xx        xxxxxxxxxxx    |
|   x   x   x                              |
+------------------------------------------+

Картинкой лучше, не так ли?

А вот такие у нас есть цвета (слева просто дорожка, справа дорожка под напряжением; напряжение, кстати, можно переключать мышкой, или пальцем, или пультом, … короче, кликом):

:* black
:r red :g green :b blue
:y yellow :m magenta :c cyan
:w white :o orange
+------------------------------+
|                              |
| rrrrrrrrrrrrr *rrrrrrrrrrrrr |
|                              |
| ggggggggggggg *ggggggggggggg |
|                              |
| bbbbbbbbbbbbb *bbbbbbbbbbbbb |
|                              |
| yyyyyyyyyyyyy *yyyyyyyyyyyyy |
|                              |
| mmmmmmmmmmmmm *mmmmmmmmmmmmm |
|                              |
| ccccccccccccc *ccccccccccccc |
|                              |
| wwwwwwwwwwwww *wwwwwwwwwwwww |
|                              |
| ooooooooooooo *ooooooooooooo |
|                              |
+------------------------------+

Кликнув на проводник можно изменить его состояние. Если вы, кликнув, подадите напряжение на проводник, то оно будет подаваться N тактов симуляции (по умолчанию - 5, в иных случаях будет сообщено отдельно). Если же таким образом отключите, то это произойдет только на текущий такт.

Еще у схем может быть кнопка запуска симуляции, нажав на которую мы сможем их оживить и в динамике проследить, что происходит (я запущу симуляцию автоматически, чтобы вы не напрягались, но так делать буду не всегда):

:x white :* yellow
:O yellow
+----------------------------------------------------------------------+
|                            ***                                       |
|                            * *                                       |
|                             x                                        |
|    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx   |
|    x x   x x   x x   x x   x x   x x   x x   x x   x x   x x   x x   |
|     O     O     O     O     O     O     O     O     O     O     O    |
|    OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO    |
|  OOO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO  |
|  O OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO OO O  |
|  O                                                                O  |
|  OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO  |
|         O                                                            |
|         O                                                            |
+----------------------------------------------------------------------+

Если в описании схемы есть символы “*” (сырую схему можно увидеть открыв исходный код страницы), то на них на старте напряжение подается автоматически, на такие же N тактов симуляции.

И последнее. На наших схемах теми же клетками-проводниками может быть выложен пиксельный текст. Это просто текст, никакой функциональной нагрузки он не несет. Но зато несет информационную. Так же делают, кстати, и на настоящих печатных платах.

:x white
+-------------------------------------------------+
|          x                                      |
|          x                                      |
|         x x                                     |
|      xxxxxxxxx                                  |
|      x   x   x      x               x           |
|     x x x x x x     x               x           |
|     xxx xxx xxx   xxx xxx xxx xxx xxx xxx xx    |
|      x   x   x    x x x x x   x x x x x x x     |
|     x x x x  x    xxx xx  xxx xxx xxx xx  x     |
|     xxx xxx  x                                  |
|      x   x   x                                  |
+-------------------------------------------------+

Дальше на очереди - Правила…

Copyright (c) 2023 Iaaa