Урок 1. Процессор банкомата: тот же, что в карте

В картинках

После этого урока у банкомата есть сердце — процессор, ПЗУ с программой и шина, по которой процессор читает устройства. Процессор мы не собираем заново: копируем его из своей карты и сворачиваем в чип CPU. Огонёк бежит по лампам — тот же, что в уроке 2 карты.


1.1. Идея: один процессор — разные машины

Процессор карты ничего не знает о картах. Он умеет складывать, сравнивать, переходить и читать-писать ячейки по адресу — и всё. Карту из него делает программа и то, что подключено к его адресам: матрица с ключом, провод IO. Поставь тот же процессор в банкомат, подключи клавиатуру, экран и банк — и это банкомат. Так устроены настоящие машины: один и тот же процессор стоит в стиральной машине, в клавиатуре и в банкомате.

CPU8 бит, 16 командкартаПЗУ: программа картыматрица: счёт, ПИН, ключпровод IOбанкоматПЗУ: программа банкоматаклавиатураэкранбанкпорт карты, гнездослучайное числотот же чип
Процессор один и тот же. Карту из него делают программа карты и её матрица, банкомат — программа банкомата и его устройства.

1.2. Идея: адреса устройств

У процессора 8-битный адрес. Ячейки 0–7 — его ОЗУ (внутри CPU). Все устройства банкомата живут на адресах, где бит 4 = 1: так их выбор не задевает ОЗУ. Устройство выбирают только команды с данными — LD, ST, ADD, CMP… Число в команде (LD #26) и адрес перехода (JMP 26) устройство не трогают.

АдресЧтениеЗапись
$00–$07ОЗУ процессораОЗУ процессора
$10ключ банка, байт за байтом (урок 4)—
$18, $19остатки счетов 1 и 2 (урок 4)остатки счетов 1 и 2
$1Aклавиатура: нажата + код (урок 2)«нажата» — сбросить
$1Bслучайное число (урок 5)—
$1Cответ карты (урок 5)байт для карты
$1Dлампа «обмен»SEND, сброс карты
$1E—слова экрана (урок 3)
$1F—счёт для банка (урок 4)
$30–$37—цифры экрана (урок 3)
$3Aкод клавиши × 16 (урок 2)—

1.3. Идея: шина чтения — ИЛИ всех устройств

Что прочитать, процессор узнаёт по ногам ext0–ext7. Каждое устройство подаёт свой байт через AND со своим сигналом выбора: невыбранное даёт нули. Все байты сходятся в OR8 — на выходе только байт выбранного устройства. Внутри CPU этот байт ещё раз проходит OR с ОЗУ: din = ram | ext. Пока устройств нет, ext — чёткие нули, и процессор работает как в карте.

клавиатураselKEYбанкselKEYBкартаselTDLFSRselRNDOR8extвнутри чипа CPUОЗУdin
Шина чтения. Каждое устройство подаёт свой байт через AND со своим выбором: невыбранные дают нули, и OR8 пропускает только выбранное. Внутри процессора этот байт ещё раз проходит OR с ОЗУ. (Каждая линия здесь — восемь проводов, по одному на бит.)

1.4. Сборка

Тот же проект, где собрана «Платёжная карта»: на холсте CARD, CARD 2, TERM, генератор Clock, тумблеры RST и FAC. Банкомат строим справа от них.

Шаг 1. Копия ядра карты

Процессор банкомата — тот же, что в карте. Берём его из карты, а не собираем заново.

CARD → «Редактировать» → выделить всё → копировать → выйти без сохранения (сама карта не меняется) → вставить на свободное место холста, справа от карты. Дальше работаем только с копией.

Шаг 2. Убрать то, что есть только у карты

В копии остаётся ядро: АЛУ, регистр A, флаги, PC, стек, дешифратор команд, ОЗУ. Убираем то, что принадлежит карте: ПЗУ с её программой (у банкомата будет своё, снаружи процессора), личные данные (матрица), счётчик попыток TRY, порт IO, восемь ног-портов и старые ИЛИ чтения din (их заменим в шаге 3). Метки возле удалённых деталей можно оставить — ничему не мешают.

ЭлементКак найтиДействие
Memory (RAM)ПЗУ картыудалить
NOTвыход которого = nir3удалить
NOTвыход которого = nir2удалить
ANDвыход которого = selPудалить
AND3выход которого = selTRYудалить
AND3выход которого = selIOудалить
ANDвыход которого = pr0удалить
ANDвыход которого = pr1удалить
ANDвыход которого = pr2удалить
ANDвыход которого = pr3удалить
ANDвыход которого = pr4удалить
ANDвыход которого = pr5удалить
ANDвыход которого = pr6удалить
Resistorмежду VCC и pb0удалить
Resistorмежду VCC и pb1удалить
Resistorмежду VCC и pb2удалить
Resistorмежду VCC и pb3удалить
Resistorмежду VCC и pb4удалить
Resistorмежду VCC и pb5удалить
Resistorмежду VCC и pb6удалить
Resistorмежду VCC и pb7удалить
NOTвыход которого = pq0удалить
NOTвыход которого = pq1удалить
NOTвыход которого = pq2удалить
NOTвыход которого = pq3удалить
NOTвыход которого = pq4удалить
NOTвыход которого = pq5удалить
NOTвыход которого = pq6удалить
NOTвыход которого = pq7удалить
ANDвыход которого = t0удалить
ANDвыход которого = t1удалить
ANDвыход которого = io0удалить
OR4выход которого = din0удалить
OR3выход которого = din1удалить
ORвыход которого = din2удалить
ORвыход которого = din3удалить
ORвыход которого = din4удалить
ORвыход которого = din5удалить
ORвыход которого = din6удалить
ORвыход которого = din7удалить
ANDвыход которого = wOUTудалить
RBITвыход которого = pullудалить
nmosзатвор pull, сток IOудалить
NOTвыход которого = nFACудалить
ANDвыход которого = wTRYудалить
RBITвыход которого = try0удалить
RBITвыход которого = try1удалить
nmosзатвор pr0, сток pb0удалить
nmosзатвор pr1, сток pb1удалить
nmosзатвор pr1, сток pb4удалить
nmosзатвор pr2, сток pb2удалить
nmosзатвор pr2, сток pb4удалить
nmosзатвор pr2, сток pb5удалить
nmosзатвор pr3, сток pb1удалить
nmosзатвор pr3, сток pb3удалить
nmosзатвор pr3, сток pb4удалить
nmosзатвор pr4, сток pb0удалить
nmosзатвор pr4, сток pb1удалить
nmosзатвор pr4, сток pb6удалить
nmosзатвор pr4, сток pb7удалить
nmosзатвор pr5, сток pb0удалить
nmosзатвор pr5, сток pb1удалить
nmosзатвор pr5, сток pb2удалить
nmosзатвор pr5, сток pb4удалить
nmosзатвор pr6, сток pb1удалить
nmosзатвор pr6, сток pb2удалить
nmosзатвор pr6, сток pb3удалить
nmosзатвор pr6, сток pb7удалить
nmosзатвор pr3, сток pb6удалить
Input portимя C1удалить
Input portимя C2удалить
Input portимя C3удалить
Input portимя C4удалить
Output portимя C7удалить
Output portимя C8удалить
Input portимя C5удалить
Input portимя C6удалить

Шаг 3. Чтение: ОЗУ или снаружи

Процессор читает либо свою ОЗУ (адреса 0–7), либо то, что придёт снаружи по ext0–ext7 — от устройств банкомата. Вставка 01-cpu-a.netlist.txt (Cmd+I) — эти 8 ИЛИ и порты шага 4; поставь их возле копии.

ДетальНогаМетка
ORI0
I1
O0
ram0
ext0
din0
ORI0
I1
O0
ram1
ext1
din1
ORI0
I1
O0
ram2
ext2
din2
ORI0
I1
O0
ram3
ext3
din3
ORI0
I1
O0
ram4
ext4
din4
ORI0
I1
O0
ram5
ext5
din5
ORI0
I1
O0
ram6
ext6
din6
ORI0
I1
O0
ram7
ext7
din7

Шаг 4. Ноги процессора — порты

Имя порта = метка. Входы: такт, сброс, слово команды из ПЗУ (ir0–ir15), чтение снаружи (ext0–ext7). Выходы: адрес команды для ПЗУ (pc0–pc7), регистр A (acc0–acc7 — его пишут в устройства), oST — «команда ST», запись в устройство.

ДетальНогаМетка
Input portимя CLKCLK
Input portимя RSTRST
Input portимя ir0ir0
Input portимя ir1ir1
Input portимя ir2ir2
Input portимя ir3ir3
Input portимя ir4ir4
Input portимя ir5ir5
Input portимя ir6ir6
Input portимя ir7ir7
Input portимя ir8ir8
Input portимя ir9ir9
Input portимя ir10ir10
Input portимя ir11ir11
Input portимя ir12ir12
Input portимя ir13ir13
Input portимя ir14ir14
Input portимя ir15ir15
Input portимя ext0ext0
Input portимя ext1ext1
Input portимя ext2ext2
Input portимя ext3ext3
Input portимя ext4ext4
Input portимя ext5ext5
Input portимя ext6ext6
Input portимя ext7ext7
Output portимя pc0pc0
Output portимя pc1pc1
Output portимя pc2pc2
Output portимя pc3pc3
Output portимя pc4pc4
Output portимя pc5pc5
Output portимя pc6pc6
Output portимя pc7pc7
Output portимя acc0acc0
Output portимя acc1acc1
Output portимя acc2acc2
Output portимя acc3acc3
Output portимя acc4acc4
Output portимя acc5acc5
Output portимя acc6acc6
Output portимя acc7acc7
Output portимя oSToST

Шаг 5. Свернуть в чип

Выдели рамкой копию, 8 ИЛИ и порты → Ctrl+G → имя CPU. На холсте останется чип CPU без меток — удали его: чип уже в библиотеке, в шаге 7 он встанет с метками на всех ногах.

Шаг 6. ПЗУ банкомата

Memory (RAM) из палитры, ⚙: 256 words, 16b data, 16b addr, CLR выключен (как ПЗУ карты в уроке 2). Ноги A8–A15, WE, CLK и все D0–D15 — на GND.

ДетальНогаМетка
Memory (RAM) ROMA0
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
A11
A12
A13
A14
A15
Q0
Q1
Q2
Q3
Q4
Q5
Q6
Q7
Q8
Q9
Q10
Q11
Q12
Q13
Q14
Q15
pc0
pc1
pc2
pc3
pc4
pc5
pc6
pc7
GND
GND
GND
GND
GND
GND
GND
GND
ir0
ir1
ir2
ir3
ir4
ir5
ir6
ir7
ir8
ir9
ir10
ir11
ir12
ir13
ir14
ir15

Шаг 7. Процессор, адреса устройств, шина чтения

Вставка 01-cpu-b.netlist.txt (Cmd+I). Устройства банкомата живут на адресах с битом 4 = 1 (мимо ОЗУ процессора): дешифратор зажигает провод выбора sel…, а ST в выбранное устройство — провод записи st…. Всё, что процессор читает снаружи, сходится ИЛИ в ext0–ext7 — каждое через AND со своим выбором. Самих устройств ещё нет: их метки (key, bal, rn, kq…) пока пустые, но AND с невыбранным устройством даёт чёткий 0. Устройство выбирают только команды с данными — не «число» (LD #16) и не переход.

ДетальНогаМетка
CPUCLK
RST
ir0
ir1
ir2
ir3
ir4
ir5
ir6
ir7
ir8
ir9
ir10
ir11
ir12
ir13
ir14
ir15
ext0
ext1
ext2
ext3
ext4
ext5
ext6
ext7
pc0
pc1
pc2
pc3
pc4
pc5
pc6
pc7
acc0
acc1
acc2
acc3
acc4
acc5
acc6
acc7
oST
CLK
RST
ir0
ir1
ir2
ir3
ir4
ir5
ir6
ir7
ir8
ir9
ir10
ir11
ir12
ir13
ir14
ir15
ext0
ext1
ext2
ext3
ext4
ext5
ext6
ext7
pc0
pc1
pc2
pc3
pc4
pc5
pc6
pc7
acc0
acc1
acc2
acc3
acc4
acc5
acc6
acc7
oST
NOTI0
O0
RST
nR
OR3A
B
C
Y
ir12
ir13
ir14
op9
ANDI0
I1
O0
ir15
op9
isJ
NORI0
I1
O0
isJ
ir11
nJI
ANDI0
I1
O0
ir4
nJI
dev
NOTI0
O0
ir5
nir5
NOTI0
O0
ir3
nir3
ANDI0
I1
O0
dev
nir5
s1x
ANDI0
I1
O0
dev
ir5
s3x
ANDI0
I1
O0
s1x
nir3
s10
ANDI0
I1
O0
s1x
ir3
s18
ANDI0
I1
O0
s3x
nir3
s30
ANDI0
I1
O0
s3x
ir3
s38
DEC8I0
I1
I2
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
ir0
ir1
ir2
a0
a1
a2
a3
a4
a5
a6
a7
ANDI0
I1
O0
s10
a0
selKEYB
ANDI0
I1
O0
s18
a0
selBAL1
ANDI0
I1
O0
s18
a1
selBAL2
ANDI0
I1
O0
s18
a2
selKEY
ANDI0
I1
O0
s18
a3
selRND
ANDI0
I1
O0
s18
a4
selTD
ANDI0
I1
O0
s18
a5
selTC
ANDI0
I1
O0
s18
a6
selWRD
ANDI0
I1
O0
s18
a7
selACCT
ANDI0
I1
O0
s30
a0
selD0
ANDI0
I1
O0
s30
a1
selD1
ANDI0
I1
O0
s30
a2
selD2
ANDI0
I1
O0
s30
a3
selD3
ANDI0
I1
O0
s30
a4
selD4
ANDI0
I1
O0
s30
a5
selD5
ANDI0
I1
O0
s30
a6
selD6
ANDI0
I1
O0
s30
a7
selD7
ANDI0
I1
O0
s38
a2
selKEYH
ANDI0
I1
O0
oST
selBAL1
stBAL1
ANDI0
I1
O0
oST
selBAL2
stBAL2
ANDI0
I1
O0
oST
selKEY
stKEY
ANDI0
I1
O0
oST
selTD
stTD
ANDI0
I1
O0
oST
selTC
stTC
ANDI0
I1
O0
oST
selWRD
stWRD
ANDI0
I1
O0
oST
selACCT
stACCT
ANDI0
I1
O0
oST
selD0
stD0
ANDI0
I1
O0
oST
selD1
stD1
ANDI0
I1
O0
oST
selD2
stD2
ANDI0
I1
O0
oST
selD3
stD3
ANDI0
I1
O0
oST
selD4
stD4
ANDI0
I1
O0
oST
selD5
stD5
ANDI0
I1
O0
oST
selD6
stD6
ANDI0
I1
O0
oST
selD7
stD7
ANDI0
I1
O0
kq0
selKEYB
eq0
ANDI0
I1
O0
bal1_0
selBAL1
eb1_0
ANDI0
I1
O0
bal2_0
selBAL2
eb2_0
ANDI0
I1
O0
key0
selKEY
ek0
ANDI0
I1
O0
rn0
selRND
er0
ANDI0
I1
O0
sr0
selTD
es0
ANDI0
I1
O0
lamp
selTC
elp
OR8A
B
C
D
E
F
G
H
Y
eq0
eb1_0
eb2_0
ek0
er0
es0
elp
GND
ext0
ANDI0
I1
O0
kq1
selKEYB
eq1
ANDI0
I1
O0
bal1_1
selBAL1
eb1_1
ANDI0
I1
O0
bal2_1
selBAL2
eb2_1
ANDI0
I1
O0
key1
selKEY
ek1
ANDI0
I1
O0
rn1
selRND
er1
ANDI0
I1
O0
sr1
selTD
es1
OR8A
B
C
D
E
F
G
H
Y
eq1
eb1_1
eb2_1
ek1
er1
es1
GND
GND
ext1
ANDI0
I1
O0
kq2
selKEYB
eq2
ANDI0
I1
O0
bal1_2
selBAL1
eb1_2
ANDI0
I1
O0
bal2_2
selBAL2
eb2_2
ANDI0
I1
O0
key2
selKEY
ek2
ANDI0
I1
O0
rn2
selRND
er2
ANDI0
I1
O0
sr2
selTD
es2
OR8A
B
C
D
E
F
G
H
Y
eq2
eb1_2
eb2_2
ek2
er2
es2
GND
GND
ext2
ANDI0
I1
O0
kq3
selKEYB
eq3
ANDI0
I1
O0
bal1_3
selBAL1
eb1_3
ANDI0
I1
O0
bal2_3
selBAL2
eb2_3
ANDI0
I1
O0
key3
selKEY
ek3
ANDI0
I1
O0
rn3
selRND
er3
ANDI0
I1
O0
sr3
selTD
es3
OR8A
B
C
D
E
F
G
H
Y
eq3
eb1_3
eb2_3
ek3
er3
es3
GND
GND
ext3
ANDI0
I1
O0
kq4
selKEYB
eq4
ANDI0
I1
O0
bal1_4
selBAL1
eb1_4
ANDI0
I1
O0
bal2_4
selBAL2
eb2_4
ANDI0
I1
O0
key0
selKEYH
ek4
ANDI0
I1
O0
rn4
selRND
er4
ANDI0
I1
O0
sr4
selTD
es4
OR8A
B
C
D
E
F
G
H
Y
eq4
eb1_4
eb2_4
ek4
er4
es4
GND
GND
ext4
ANDI0
I1
O0
kq5
selKEYB
eq5
ANDI0
I1
O0
bal1_5
selBAL1
eb1_5
ANDI0
I1
O0
bal2_5
selBAL2
eb2_5
ANDI0
I1
O0
key1
selKEYH
ek5
ANDI0
I1
O0
rn5
selRND
er5
ANDI0
I1
O0
sr5
selTD
es5
OR8A
B
C
D
E
F
G
H
Y
eq5
eb1_5
eb2_5
ek5
er5
es5
GND
GND
ext5
ANDI0
I1
O0
kq6
selKEYB
eq6
ANDI0
I1
O0
bal1_6
selBAL1
eb1_6
ANDI0
I1
O0
bal2_6
selBAL2
eb2_6
ANDI0
I1
O0
key2
selKEYH
ek6
ANDI0
I1
O0
rn6
selRND
er6
ANDI0
I1
O0
sr6
selTD
es6
OR8A
B
C
D
E
F
G
H
Y
eq6
eb1_6
eb2_6
ek6
er6
es6
GND
GND
ext6
ANDI0
I1
O0
kq7
selKEYB
eq7
ANDI0
I1
O0
bal1_7
selBAL1
eb1_7
ANDI0
I1
O0
bal2_7
selBAL2
eb2_7
ANDI0
I1
O0
key3
selKEYH
ek7
ANDI0
I1
O0
down
selKEY
edn
ANDI0
I1
O0
rn7
selRND
er7
ANDI0
I1
O0
sr7
selTD
es7
OR8A
B
C
D
E
F
G
H
Y
eq7
eb1_7
eb2_7
ek7
edn
er7
es7
GND
ext7
LEDвходacc7
LEDвходacc6
LEDвходacc5
LEDвходacc4
LEDвходacc3
LEDвходacc2
LEDвходacc1
LEDвходacc0
Display⚙ширина 8, DEC, шина pc

Шаг 8. Программа в ПЗУ

⚙ у ROM → ⬆ → 02-lights.rom.json (огоньки из урока 2 карты). Clock — клик по корпусу до 2Hz.

1.5. Проверка

Сброс: RST включить на один-два такта (табло PC = 0) и выключить. Генератор шагает сам.

Табло — номер команды (PC, адрес в ПЗУ), восемь ламп — регистр A: огонёк бежит по лампам, а табло показывает, какая команда сейчас выполняется. Программа 02-lights:

ТактТабло PCКомандаAЛампы acc7…acc0Что видно
10LD #11○○○○○○○●
21LD #22○○○○○○●○
32LD #44○○○○○●○○
43LD #88○○○○●○○○
54LD #1616○○○●○○○○
65LD #3232○○●○○○○○
76LD #6464○●○○○○○○
87LD #128128●○○○○○○○огонёк дошёл до края
98CALL 17128●○○○○○○○табло прыгает на 17
1017LD #255255●●●●●●●●вспышка
1118LD #00○○○○○○○○
1219RET0○○○○○○○○табло возвращается на 9
139LD #6464○●○○○○○○огонёк бежит вправо

Потом ⚙ у ROM → ⬆ → 03-shift.rom.json, RST включить и выключить: огонёк бежит влево через ОЗУ — по одной лампе за 3 такта (ST 0, ADD 0, JNC), после 128 гаснет на 3 такта и начинает сначала.

  • Всё то же, что в уроках 2 и 3 карты: процессор из карты переехал в банкомат целым.
  • 03-shift складывает A с ячейкой ОЗУ: если огонёк стоит на месте или горят все — в шаге 3 перепутаны входы ИЛИ (ram и ext → din), или у одного из OR8 шины чтения пустая нога (должна быть GND).
  • Метки будущих устройств (key0, bal1_0, rn0, kq0…) пока ни к чему не подключены — так и должно быть: их источники появятся в уроках 2–5. А ext0–ext7 — уже чёткие 0.

CPU в библиотеке, плата не сворачивается — дальше к ней добавятся клавиатура, экран, банк и порт карты.


Вставка урока 1 (Cmd+I)

Вставка A — возле копии ядра карты (шаг 3 и 4), потом выделить всё и Ctrl+G → CPU.

# Урок 1 банкомата, вставка A — возле копии ядра карты: 8 ИЛИ чтения и 43 порта (потом выделить всё и Ctrl+G → CPU). # ---------- Чтение: ОЗУ или снаружи ----------OR(ram0, ext0, din0)OR(ram1, ext1, din1)OR(ram2, ext2, din2)OR(ram3, ext3, din3)OR(ram4, ext4, din4)OR(ram5, ext5, din5)OR(ram6, ext6, din6)OR(ram7, ext7, din7) # ---------- Ноги процессора ----------portIn{name=CLK}(CLK)portIn{name=RST}(RST)portIn{name=ir0}(ir0)portIn{name=ir1}(ir1)portIn{name=ir2}(ir2)portIn{name=ir3}(ir3)portIn{name=ir4}(ir4)portIn{name=ir5}(ir5)portIn{name=ir6}(ir6)portIn{name=ir7}(ir7)portIn{name=ir8}(ir8)portIn{name=ir9}(ir9)portIn{name=ir10}(ir10)portIn{name=ir11}(ir11)portIn{name=ir12}(ir12)portIn{name=ir13}(ir13)portIn{name=ir14}(ir14)portIn{name=ir15}(ir15)portIn{name=ext0}(ext0)portIn{name=ext1}(ext1)portIn{name=ext2}(ext2)portIn{name=ext3}(ext3)portIn{name=ext4}(ext4)portIn{name=ext5}(ext5)portIn{name=ext6}(ext6)portIn{name=ext7}(ext7)portOut{name=pc0}(pc0)portOut{name=pc1}(pc1)portOut{name=pc2}(pc2)portOut{name=pc3}(pc3)portOut{name=pc4}(pc4)portOut{name=pc5}(pc5)portOut{name=pc6}(pc6)portOut{name=pc7}(pc7)portOut{name=acc0}(acc0)portOut{name=acc1}(acc1)portOut{name=acc2}(acc2)portOut{name=acc3}(acc3)portOut{name=acc4}(acc4)portOut{name=acc5}(acc5)portOut{name=acc6}(acc6)portOut{name=acc7}(acc7)portOut{name=oST}(oST)

Вставка B — на холст, справа от карт: процессор с метками, адреса устройств, шина чтения, лампы и табло.

# Урок 1 банкомата, вставка B — на холст: процессор CPU с метками, адреса устройств, шина чтения, лампы A, табло PC.# ПЗУ (Memory (RAM) ROM) — ставится вручную: шаг 5. # ---------- Процессор ----------CPU(CLK=CLK, RST=RST, ir0=ir0, ir1=ir1, ir2=ir2, ir3=ir3, ir4=ir4, ir5=ir5, ir6=ir6, ir7=ir7, ir8=ir8, ir9=ir9, ir10=ir10, ir11=ir11, ir12=ir12, ir13=ir13, ir14=ir14, ir15=ir15, ext0=ext0, ext1=ext1, ext2=ext2, ext3=ext3, ext4=ext4, ext5=ext5, ext6=ext6, ext7=ext7, pc0=pc0, pc1=pc1, pc2=pc2, pc3=pc3, pc4=pc4, pc5=pc5, pc6=pc6, pc7=pc7, acc0=acc0, acc1=acc1, acc2=acc2, acc3=acc3, acc4=acc4, acc5=acc5, acc6=acc6, acc7=acc7, oST=oST)NOT(RST, nR) # ---------- Адреса устройств ----------OR3(A=ir12, B=ir13, C=ir14, Y=op9)AND(ir15, op9, isJ)NOR(isJ, ir11, nJI)AND(ir4, nJI, dev)NOT(ir5, nir5)NOT(ir3, nir3)AND(dev, nir5, s1x)AND(dev, ir5, s3x)AND(s1x, nir3, s10)AND(s1x, ir3, s18)AND(s3x, nir3, s30)AND(s3x, ir3, s38)DEC8(I0=ir0, I1=ir1, I2=ir2, Y0=a0, Y1=a1, Y2=a2, Y3=a3, Y4=a4, Y5=a5, Y6=a6, Y7=a7)AND(s10, a0, selKEYB)AND(s18, a0, selBAL1)AND(s18, a1, selBAL2)AND(s18, a2, selKEY)AND(s18, a3, selRND)AND(s18, a4, selTD)AND(s18, a5, selTC)AND(s18, a6, selWRD)AND(s18, a7, selACCT)AND(s30, a0, selD0)AND(s30, a1, selD1)AND(s30, a2, selD2)AND(s30, a3, selD3)AND(s30, a4, selD4)AND(s30, a5, selD5)AND(s30, a6, selD6)AND(s30, a7, selD7)AND(s38, a2, selKEYH)AND(oST, selBAL1, stBAL1)AND(oST, selBAL2, stBAL2)AND(oST, selKEY, stKEY)AND(oST, selTD, stTD)AND(oST, selTC, stTC)AND(oST, selWRD, stWRD)AND(oST, selACCT, stACCT)AND(oST, selD0, stD0)AND(oST, selD1, stD1)AND(oST, selD2, stD2)AND(oST, selD3, stD3)AND(oST, selD4, stD4)AND(oST, selD5, stD5)AND(oST, selD6, stD6)AND(oST, selD7, stD7) # ---------- Шина чтения ----------AND(kq0, selKEYB, eq0)AND(bal1_0, selBAL1, eb1_0)AND(bal2_0, selBAL2, eb2_0)AND(key0, selKEY, ek0)AND(rn0, selRND, er0)AND(sr0, selTD, es0)AND(lamp, selTC, elp)OR8(A=eq0, B=eb1_0, C=eb2_0, D=ek0, E=er0, F=es0, G=elp, H=GND, Y=ext0)AND(kq1, selKEYB, eq1)AND(bal1_1, selBAL1, eb1_1)AND(bal2_1, selBAL2, eb2_1)AND(key1, selKEY, ek1)AND(rn1, selRND, er1)AND(sr1, selTD, es1)OR8(A=eq1, B=eb1_1, C=eb2_1, D=ek1, E=er1, F=es1, G=GND, H=GND, Y=ext1)AND(kq2, selKEYB, eq2)AND(bal1_2, selBAL1, eb1_2)AND(bal2_2, selBAL2, eb2_2)AND(key2, selKEY, ek2)AND(rn2, selRND, er2)AND(sr2, selTD, es2)OR8(A=eq2, B=eb1_2, C=eb2_2, D=ek2, E=er2, F=es2, G=GND, H=GND, Y=ext2)AND(kq3, selKEYB, eq3)AND(bal1_3, selBAL1, eb1_3)AND(bal2_3, selBAL2, eb2_3)AND(key3, selKEY, ek3)AND(rn3, selRND, er3)AND(sr3, selTD, es3)OR8(A=eq3, B=eb1_3, C=eb2_3, D=ek3, E=er3, F=es3, G=GND, H=GND, Y=ext3)AND(kq4, selKEYB, eq4)AND(bal1_4, selBAL1, eb1_4)AND(bal2_4, selBAL2, eb2_4)AND(key0, selKEYH, ek4)AND(rn4, selRND, er4)AND(sr4, selTD, es4)OR8(A=eq4, B=eb1_4, C=eb2_4, D=ek4, E=er4, F=es4, G=GND, H=GND, Y=ext4)AND(kq5, selKEYB, eq5)AND(bal1_5, selBAL1, eb1_5)AND(bal2_5, selBAL2, eb2_5)AND(key1, selKEYH, ek5)AND(rn5, selRND, er5)AND(sr5, selTD, es5)OR8(A=eq5, B=eb1_5, C=eb2_5, D=ek5, E=er5, F=es5, G=GND, H=GND, Y=ext5)AND(kq6, selKEYB, eq6)AND(bal1_6, selBAL1, eb1_6)AND(bal2_6, selBAL2, eb2_6)AND(key2, selKEYH, ek6)AND(rn6, selRND, er6)AND(sr6, selTD, es6)OR8(A=eq6, B=eb1_6, C=eb2_6, D=ek6, E=er6, F=es6, G=GND, H=GND, Y=ext6)AND(kq7, selKEYB, eq7)AND(bal1_7, selBAL1, eb1_7)AND(bal2_7, selBAL2, eb2_7)AND(key3, selKEYH, ek7)AND(down, selKEY, edn)AND(rn7, selRND, er7)AND(sr7, selTD, es7)OR8(A=eq7, B=eb1_7, C=eb2_7, D=ek7, E=edn, F=er7, G=es7, H=GND, Y=ext7) # ---------- Лампы A и табло PC ----------led(acc7)led(acc6)led(acc5)led(acc4)led(acc3)led(acc2)led(acc1)led(acc0)display{bits=8, base="DEC", busSource="pc"}()

Не получается? Что-то не работает →