Урок 8. Карта — в чип с 8 ногами
В картинкахВсё, что собрано за семь уроков, — это и есть компьютер карты. Сворачиваем его в один чип с восемью ногами, делаем вторую карту с другой личностью — и меняем карты в тестере, как в банкомате.
8.1. Идея: карта — это то, что внутри
Снаружи у карты только то, что даёт ей терминал: питание, земля, сброс, такт и провод данных. Всё остальное — процессор, память, программа, личность — внутри. Входы карты — Input port, провод данных IO — Output port: карта сама прижимает его. Если поставить землю или FAC выходом, редактор покажет молнию: два выхода на одном проводе.
8.2. Идея: две карты — одна программа
Вторая карта — копия чипа (кнопка ⧉ в библиотеке) с другой матрицей. Программа, процессор, память — те же. Снаружи карты одинаковые; разница — 29 транзисторов из 6 500. На один вызов они отвечают по-разному — так банк и отличает карты.
8.3. Сборка
Тот же проект, что в уроке 7.
| C1 VCC | GND C5 |
|---|---|
| C2 RST | FAC C6 |
| C3 CLK | IO C7 |
| C4 — | — C8 |
Шаг 1. Что остаётся снаружи
Снаружи чипа — то, что принадлежит терминалу, а не карте:
Clock(тактCLK), тумблерыRSTиFAC;- весь переходник урока 5: резистор и транзистор
TPULLна проводеIO, тумблерыT0–T7, кнопкаSEND, всё отsendSдоWTB, лампыsr0–sr7иlamp; PowerиGround.
Всё остальное — карта: от DEC16 урока 1 до транзисторов матрицы урока 6, вместе с табло и лампами A и PC (они окажутся внутри чипа — их видно, если провалиться в него двойным кликом).
Шаг 2. Восемь ног — порты
Возле карты поставь 8 портов. Всё, что карта получает от терминала (питание, земля, сброс, такт, FAC), — Input port: C1–C6 столбиком сверху вниз (порядок сверху вниз = порядок ног у чипа). IO — данные в обе стороны, карта сама прижимает этот провод — Output port C7, под ним пустой C8. Имя порта — двойной клик по нему. К порту — метка (сеть внутри карты):
| Деталь | Имя порта | Метка | Что |
|---|---|---|---|
| Input port | C1 | VCC | питание |
| Input port | C2 | RST | сброс |
| Input port | C3 | CLK | такт |
| Input port | C4 | — | не используется |
| Input port | C5 | GND | земля |
| Input port | C6 | FAC | заводская подготовка |
| Output port | C7 | IO | данные |
| Output port | C8 | — | не используется |
C4 и C8 ни к чему не подключены — так и на настоящих картах: эти контакты есть, но не используются.
У чипа входы рисуются слева, выходы справа, поэтому ноги встанут так: слева C1–C6, справа C7 и C8 — не как на площадке, 4 и 4. Если поставить GND или FAC выходом (Output port), редактор покажет красную молнию: чип «выдаёт» сигнал на провод, который уже ведут земля и тумблер, — два выхода на одном проводе.
Шаг 3. Свернуть
Выдели рамкой карту и 8 портов (без того, что в шаге 1) → Ctrl+G → имя CARD. Программа в ПЗУ запекается в чип сама.
Шаг 4. Вставить карту в терминал
| Деталь | Нога | Метка |
|---|---|---|
| CARD | C1 C2 C3 C4 C5 C6 C7 C8 | VCC RST CLK — (не подключать) GND FAC IO — (не подключать) |
8.4. Проверка
То же, что в уроке 7, — но теперь через 8 ног чипа. Сначала заводская подготовка: после свёртки чип запускается заново.
| № | Что сделать | Лампы (● горит) | Что это |
|---|---|---|---|
| 1 | Clock — MAX | ||
| 2 | включить FAC и RST, подождать секунду, выключить оба | ○○●●●○●● 59 | карта-чип поздоровалась |
| 3 | тумблеры T7…T0 = 0100 1110, нажать SEND | ○○○○○○○● 1 | N — счёт 1 |
| 4 | тумблеры T7…T0 = 0101 0000, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 5 | тумблеры T7…T0 = 0001 0010, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 6 | тумблеры T7…T0 = 0011 0100, нажать SEND | ●○○●○○○○ 144 | P 12 34 — ПИН верный |
| 7 | тумблеры T7…T0 = 0100 0001, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 8 | тумблеры T7…T0 = 1010 0101, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 9 | тумблеры T7…T0 = 0011 1100, нажать SEND | ○●●○●○○○ 104 | A A5 3C — первый байт ответа ($68) |
| 10 | тумблеры T7…T0 = 0101 0010, нажать SEND | ●●●●○●●● 247 | R — второй байт ($F7) |
Шаг 5. Вторая карта: копия с другой личностью
В библиотеке у чипа CARD — кнопка ⧉ (копия) → имя CARD2. Копия — то же устройство: процессор, программа в ПЗУ, память. Отличаться будет только личность — транзисторы матрицы.
CARD2 → «Редактировать». Найди матрицу: 7 строк pr0–pr6 (байты 16–22) и 8 столбцов pb7–pb0 (биты). Иди по строкам сверху вниз и в каждой клетке делай то, что написано:
| Строка | Байт: было → стало | pb7 | pb6 | pb5 | pb4 | pb3 | pb2 | pb1 | pb0 | Что |
|---|---|---|---|---|---|---|---|---|---|---|
| pr0 | 01 → 02 | · | · | · | · | · | · | + | ✕ | номер счёта |
| pr1 | 12 → 43 | · | + | · | ✕ | · | · | ● | + | ПИН, цифры 1–2 |
| pr2 | 34 → 21 | · | · | ● | ✕ | · | ✕ | · | + | ПИН, цифры 3–4 |
| pr3 | 5A → 21 | · | ✕ | + | ✕ | ✕ | · | ✕ | + | ключ, байт 1 |
| pr4 | C3 → 9F | ● | ✕ | · | + | + | + | ● | ● | ключ, байт 2 |
| pr5 | 17 → E4 | + | + | + | ✕ | · | ● | ✕ | ✕ | ключ, байт 3 |
| pr6 | 8E → 3B | ✕ | · | + | + | ● | ✕ | ● | + | ключ, байт 4 |
● — транзистор есть и остаётся, не трогать · ✕ — удалить · + — поставить новый · · — пусто и остаётся пустым. Новый транзистор — nmos: затвор на строку pr, сток на столбец pb, исток на GND.
Итог: удалить 14, поставить 15, оставить 8 — в матрице CARD2 ровно 23 транзистора.
Сохрани чип.
Шаг 6. Вынуть одну карту, вставить другую
Поставь CARD2 на стол рядом с CARD. В терминал вставлена та карта, на ногах которой висят метки терминала (шаг 4). Вставлена всегда одна: две карты на одних метках — два выхода на проводе IO.
| Действие | Что сделать |
|---|---|
| вынуть CARD | снять с ног CARD метки VCC, RST, CLK, GND, FAC, IO (удалить метки или отцепить провода) |
| вставить CARD2 | повесить те же 6 меток на те же ноги CARD2: C1 VCC, C2 RST, C3 CLK, C5 GND, C6 FAC, C7 IO |
Новая карта ещё «с завода не пришла»: первый раз — FAC и RST. Потом проверка:
| № | Что сделать | Лампы (● горит) | Что это |
|---|---|---|---|
| 1 | включить FAC и RST, подождать секунду, выключить оба | ○○●●●○●● 59 | приветствие |
| 2 | тумблеры T7…T0 = 0100 1110, нажать SEND | ○○○○○○●○ 2 | N — уже счёт 2 |
| 3 | тумблеры T7…T0 = 0101 0000, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 4 | тумблеры T7…T0 = 0001 0010, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 5 | тумблеры T7…T0 = 0011 0100, нажать SEND | ○●●○○○●○ 98 | P 12 34 — ПИН карты 1 не подходит |
| 6 | тумблеры T7…T0 = 0101 0000, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 7 | тумблеры T7…T0 = 0100 0011, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 8 | тумблеры T7…T0 = 0010 0001, нажать SEND | ●○○●○○○○ 144 | P 43 21 — свой ПИН |
| 9 | тумблеры T7…T0 = 0100 0001, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 10 | тумблеры T7…T0 = 1010 0101, нажать SEND | ○○○○○○○○ гаснут | байт ушёл, карта ждёт следующий |
| 11 | тумблеры T7…T0 = 0011 1100, нажать SEND | ●●●○●○●○ 234 | A A5 3C — другой ответ ($EA) |
| 12 | тумблеры T7…T0 = 0101 0010, нажать SEND | ●●○●●●○● 221 | R — ($DD) |
На тот же вызов A5 3C карта 1 отвечала 68 F7, карта 2 — EA DD. Снаружи чипы одинаковые; разница — в 29 транзисторах матрицы из 6 500. Так банк и отличает карты: не по виду, а по ответу, который может дать только своя карта.
Вставь обратно CARD (метки — снова на её ноги), FAC и RST — и N снова отвечает 1: личность карты 1 никуда не делась, она в её транзисторах.
Шаг 7. Тестер — тоже в чип
Тестер карт (переходник урока 5) — тоже прибор: внутри электроника, снаружи панель. Свернём и его, чтобы на столе были два понятных устройства: карта и тестер. Лампы и табло внутри чипа на холсте не видны, поэтому всё, на что смотришь и что нажимаешь, остаётся снаружи: тумблеры T0–T7, кнопка SEND, лампы sr0–sr7 и lamp, табло.
Возле тестера поставь порты (имя порта = метка, двойной клик — переименовать):
| Деталь | Имя порта и метка |
|---|---|
| Input port | CLK |
| Input port | RST |
| Input port | SEND |
| Input port | T0 |
| Input port | T1 |
| Input port | T2 |
| Input port | T3 |
| Input port | T4 |
| Input port | T5 |
| Input port | T6 |
| Input port | T7 |
| Output port | sr0 |
| Output port | sr1 |
| Output port | sr2 |
| Output port | sr3 |
| Output port | sr4 |
| Output port | sr5 |
| Output port | sr6 |
| Output port | sr7 |
| Output port | lamp |
| Output port | IO |
IO — выход: тестер сам прижимает провод. Выдели рамкой электронику тестера (резистор, транзистор TPULL, всё от NOT(RST) = nRT до DFF → WTB) и порты — без тумблеров, кнопки, ламп и табло → Ctrl+G → имя TERM. Ноги TERM — на метки с теми же именами:
| Деталь | Нога | Метка |
|---|---|---|
| TERM | CLK RST SEND T0 T1 T2 T3 T4 T5 T6 T7 sr0 sr1 sr2 sr3 sr4 sr5 sr6 sr7 lamp IO | CLK RST SEND T0 T1 T2 T3 T4 T5 T6 T7 sr0 sr1 sr2 sr3 sr4 sr5 sr6 sr7 lamp IO |
Проверка — любая строка шага «Проверка руками»: N → табло 1. Тестер внутри — 1 729 транзисторов и резистор.
⚠ Частая ошибка. При перепрошивке карты 2 удалены и транзисторы, которые у карт общие (● в сетке). Номер счёта при этом верный, а ПИН и ключ — нет. В матрице карты 2 должно быть ровно 23 транзистора.
Вставка урока 8 (Cmd+I)
Восемь портов карты — поставить возле карты, потом выделить карту вместе с ними и Ctrl+G.
# Урок 8 — 8 ног карты: порты (поставить возле карты, потом выделить карту с ними и Ctrl+G → CARD).portIn{name=C1}(VCC)portIn{name=C2}(RST)portIn{name=C3}(CLK)portIn{name=C4}(nc4)portIn{name=C5}(GND)portIn{name=C6}(FAC)portOut{name=C7}(IO)portOut{name=C8}(nc8)Не получается? Что-то не работает →