Наборы
›
Банкомат
RU
EN
ES
Содержание
Вступление
История: от бумажного чека до чипа
Урок 1. Процессор банкомата: тот же, что в карте
1.1. Идея: один процессор — разные машины
1.2. Идея: адреса устройств
1.3. Идея: шина чтения — ИЛИ всех устройств
1.4. Сборка
1.5. Проверка
Вставка урока 1 (Cmd+I)
Урок 2. Клавиатура: 12 кнопок — 4 провода
2.1. Идея: шифратор
2.2. Идея: одно нажатие — один такт
2.3. Идея: код × 16
2.4. Сборка
2.5. Проверка
Вставка урока 2 (Cmd+I)
Урок 3. Экран: слова и цифры
3.1. Идея: экран ничего не помнит
3.2. Идея: процессор пишет число, а не сегменты
3.3. Идея: подписи горят вместе с цифрой
3.4. Сборка
3.5. Проверка
Вставка урока 3 (Cmd+I)
Урок 4. Банк: ключи карт и остатки
4.1. Идея: банк знает ключ карты
4.2. Идея: ключ читается по одному адресу
4.3. Идея: деньги не стираются сбросом
4.4. Сборка
4.5. Проверка
Вставка урока 4 (Cmd+I)
Урок 5. Порт карты: гнездо и случайный вызов
5.1. Идея: тестер — порт банкомата
5.2. Идея: гнездо на две карты
5.3. Идея: случайный вызов
5.4. Сборка
5.5. Проверка
Вставка урока 5 (Cmd+I)
Урок 6. Сеанс: ПИН и проверка карты
6.1. Идея: ПИН проверяет карта, а не банкомат
6.2. Идея: вызов-ответ
6.3. Идея: тот же шифр — в программе банкомата
6.4. Сборка
6.5. Проверка
Урок 7. Деньги: сумма, остаток, выдача
7.1. Идея: программа — это сеанс
7.2. Идея: число из нажатий
7.3. Идея: хватает ли денег
7.4. Идея: число — в три цифры
7.5. Идея: остаток живёт в банке
7.6. Сборка
7.7. Проверка
Урок 8. Подделка и банкомат в чипе
8.1. Идея: подделать можно всё, кроме ключа
8.2. Идея: банкомат — тоже прибор
8.3. Сборка
8.4. Проверка
Вставка урока 8 (Cmd+I)
Итоги
Все детали
Инструкция в картинках
Урок 1 в картинках
← К уроку: Урок 1. Процессор банкомата: тот же, что в карте
1
Процессор из карты
копия ядра карты → чип CPU, ПЗУ, адреса устройств
kh
HT-02
0000 0001
0000 0001
CARD
CPU
ПЗУ банкомата — снаружи процессора, как в уроке 2 карты
OR
8×
IN
26×
OUT
17×
NOT
3×
OR3
1×
AND
91×
NOR
1×
DEC8
1×
OR8
8×
8×
4b
0
A
1×
ROM
256×16
1×
∞
Ctrl
+
G
CPU
© 2026 Даниил Ханин · khanin.info · HT-02
4
ХОЛСТ
1
Library
…
CARD
⌘
C
⌘
V
CARD → Редактировать → выделить всё → копировать → выйти без сохранения → вставить
2
в копии удалить то, что есть только у карты: ПЗУ, матрицу, TRY, порт IO, ноги, старые ИЛИ
ROM
256×16
×1
NOT
×11
AND
×13
AND3
×2
×8
OR4
×1
OR3
×1
OR
×6
RBIT
×3
N
×23
C1
×6
C7
×2
удалить 77 деталей — полный список в уроке 1, шаг 2
3
OR
3×
9×
OR
I0
ram0
I1
ext0
O0
din0
OR
I0
ram1
I1
ext1
O0
din1
OR
I0
ram2
I1
ext2
O0
din2
© 2026 Даниил Ханин · khanin.info · HT-02
5
ХОЛСТ …
4
OR
3×
9×
OR
I0
ram3
I1
ext3
O0
din3
OR
I0
ram4
I1
ext4
O0
din4
OR
I0
ram5
I1
ext5
O0
din5
5
OR
2×
6×
OR
I0
ram6
I1
ext6
O0
din6
OR
I0
ram7
I1
ext7
O0
din7
6
IN
5×
CLK ← CLK
RST ← RST
ir0 ← ir0
ir1 ← ir1
ir2 ← ir2
7
IN
5×
ir3 ← ir3
ir4 ← ir4
ir5 ← ir5
ir6 ← ir6
ir7 ← ir7
8
IN
5×
ir8 ← ir8
ir9 ← ir9
ir10 ← ir10
ir11 ← ir11
ir12 ← ir12
© 2026 Даниил Ханин · khanin.info · HT-02
6
ХОЛСТ …
9
IN
5×
ir13 ← ir13
ir14 ← ir14
ir15 ← ir15
ext0 ← ext0
ext1 ← ext1
10
IN
5×
ext2 ← ext2
ext3 ← ext3
ext4 ← ext4
ext5 ← ext5
ext6 ← ext6
11
IN
1×
OUT
4×
ext7 ← ext7
pc0 ← pc0
pc1 ← pc1
pc2 ← pc2
pc3 ← pc3
12
OUT
5×
pc4 ← pc4
pc5 ← pc5
pc6 ← pc6
pc7 ← pc7
acc0 ← acc0
© 2026 Даниил Ханин · khanin.info · HT-02
7
ХОЛСТ …
13
OUT
5×
acc1 ← acc1
acc2 ← acc2
acc3 ← acc3
acc4 ← acc4
acc5 ← acc5
14
OUT
3×
acc6 ← acc6
acc7 ← acc7
oST ← oST
15
Ctrl
+
G
Library
…
Chip N
2×
Library
…
CPU
Enter
CPU
CLK
RST
ir0–ir15
ext0–ext7
pc0–pc7
acc0–acc7
oST
16
CPU
1×
43×
CPU
CLK
CLK
RST
RST
ir0–ir15
ir0…ir15
ext0–ext7
ext0…ext7
pc0–pc7
pc0…pc7
acc0–acc7
acc0…acc7
oST
oST
17
NOT
1×
2×
NOT
I0
RST
O0
nR
© 2026 Даниил Ханин · khanin.info · HT-02
8
ХОЛСТ …
18
OR3
1×
AND
1×
NOR
1×
10×
OR3
A
ir12
B
ir13
C
ir14
Y
op9
AND
I0
ir15
I1
op9
O0
isJ
NOR
I0
isJ
I1
ir11
O0
nJI
19
AND
1×
NOT
2×
7×
AND
I0
ir4
I1
nJI
O0
dev
NOT
I0
ir5
O0
nir5
NOT
I0
ir3
O0
nir3
20
AND
3×
9×
AND
I0
dev
I1
nir5
O0
s1x
AND
I0
dev
I1
ir5
O0
s3x
AND
I0
s1x
I1
nir3
O0
s10
© 2026 Даниил Ханин · khanin.info · HT-02
9
ХОЛСТ …
21
AND
3×
9×
AND
I0
s1x
I1
ir3
O0
s18
AND
I0
s3x
I1
nir3
O0
s30
AND
I0
s3x
I1
ir3
O0
s38
22
DEC8
1×
11×
DEC8
I0
ir0
I1
ir1
I2
ir2
Y0
a0
Y1
a1
Y2
a2
Y3
a3
Y4
a4
Y5
a5
Y6
a6
Y7
a7
23
AND
3×
9×
AND
I0
s10
I1
a0
O0
selKEYB
AND
I0
s18
I1
a0
O0
selBAL1
AND
I0
s18
I1
a1
O0
selBAL2
© 2026 Даниил Ханин · khanin.info · HT-02
10
ХОЛСТ …
24
AND
3×
9×
AND
I0
s18
I1
a2
O0
selKEY
AND
I0
s18
I1
a3
O0
selRND
AND
I0
s18
I1
a4
O0
selTD
25
AND
3×
9×
AND
I0
s18
I1
a5
O0
selTC
AND
I0
s18
I1
a6
O0
selWRD
AND
I0
s18
I1
a7
O0
selACCT
26
AND
3×
9×
AND
I0
s30
I1
a0
O0
selD0
AND
I0
s30
I1
a1
O0
selD1
AND
I0
s30
I1
a2
O0
selD2
© 2026 Даниил Ханин · khanin.info · HT-02
11
ХОЛСТ …
27
AND
3×
9×
AND
I0
s30
I1
a3
O0
selD3
AND
I0
s30
I1
a4
O0
selD4
AND
I0
s30
I1
a5
O0
selD5
28
AND
3×
9×
AND
I0
s30
I1
a6
O0
selD6
AND
I0
s30
I1
a7
O0
selD7
AND
I0
s38
I1
a2
O0
selKEYH
29
AND
3×
9×
AND
I0
oST
I1
selBAL1
O0
stBAL1
AND
I0
oST
I1
selBAL2
O0
stBAL2
AND
I0
oST
I1
selKEY
O0
stKEY
© 2026 Даниил Ханин · khanin.info · HT-02
12
ХОЛСТ …
30
AND
3×
9×
AND
I0
oST
I1
selTD
O0
stTD
AND
I0
oST
I1
selTC
O0
stTC
AND
I0
oST
I1
selWRD
O0
stWRD
31
AND
3×
9×
AND
I0
oST
I1
selACCT
O0
stACCT
AND
I0
oST
I1
selD0
O0
stD0
AND
I0
oST
I1
selD1
O0
stD1
32
AND
3×
9×
AND
I0
oST
I1
selD2
O0
stD2
AND
I0
oST
I1
selD3
O0
stD3
AND
I0
oST
I1
selD4
O0
stD4
© 2026 Даниил Ханин · khanin.info · HT-02
13
ХОЛСТ …
33
AND
3×
9×
AND
I0
oST
I1
selD5
O0
stD5
AND
I0
oST
I1
selD6
O0
stD6
AND
I0
oST
I1
selD7
O0
stD7
34
AND
3×
9×
AND
I0
kq0
I1
selKEYB
O0
eq0
AND
I0
bal1_0
I1
selBAL1
O0
eb1_0
AND
I0
bal2_0
I1
selBAL2
O0
eb2_0
35
AND
3×
9×
AND
I0
key0
I1
selKEY
O0
ek0
AND
I0
rn0
I1
selRND
O0
er0
AND
I0
sr0
I1
selTD
O0
es0
© 2026 Даниил Ханин · khanin.info · HT-02
14
ХОЛСТ …
36
AND
1×
3×
AND
I0
lamp
I1
selTC
O0
elp
37
OR8
1×
9×
OR8
A
eq0
B
eb1_0
C
eb2_0
D
ek0
E
er0
F
es0
G
elp
H
GND
Y
ext0
38
AND
3×
9×
AND
I0
kq1
I1
selKEYB
O0
eq1
AND
I0
bal1_1
I1
selBAL1
O0
eb1_1
AND
I0
bal2_1
I1
selBAL2
O0
eb2_1
© 2026 Даниил Ханин · khanin.info · HT-02
15
ХОЛСТ …
39
AND
3×
9×
AND
I0
key1
I1
selKEY
O0
ek1
AND
I0
rn1
I1
selRND
O0
er1
AND
I0
sr1
I1
selTD
O0
es1
40
OR8
1×
9×
OR8
A
eq1
B
eb1_1
C
eb2_1
D
ek1
E
er1
F
es1
G
GND
H
GND
Y
ext1
41
AND
3×
9×
AND
I0
kq2
I1
selKEYB
O0
eq2
AND
I0
bal1_2
I1
selBAL1
O0
eb1_2
AND
I0
bal2_2
I1
selBAL2
O0
eb2_2
© 2026 Даниил Ханин · khanin.info · HT-02
16
ХОЛСТ …
42
AND
3×
9×
AND
I0
key2
I1
selKEY
O0
ek2
AND
I0
rn2
I1
selRND
O0
er2
AND
I0
sr2
I1
selTD
O0
es2
43
OR8
1×
9×
OR8
A
eq2
B
eb1_2
C
eb2_2
D
ek2
E
er2
F
es2
G
GND
H
GND
Y
ext2
44
AND
3×
9×
AND
I0
kq3
I1
selKEYB
O0
eq3
AND
I0
bal1_3
I1
selBAL1
O0
eb1_3
AND
I0
bal2_3
I1
selBAL2
O0
eb2_3
© 2026 Даниил Ханин · khanin.info · HT-02
17
ХОЛСТ …
45
AND
3×
9×
AND
I0
key3
I1
selKEY
O0
ek3
AND
I0
rn3
I1
selRND
O0
er3
AND
I0
sr3
I1
selTD
O0
es3
46
OR8
1×
9×
OR8
A
eq3
B
eb1_3
C
eb2_3
D
ek3
E
er3
F
es3
G
GND
H
GND
Y
ext3
47
AND
3×
9×
AND
I0
kq4
I1
selKEYB
O0
eq4
AND
I0
bal1_4
I1
selBAL1
O0
eb1_4
AND
I0
bal2_4
I1
selBAL2
O0
eb2_4
© 2026 Даниил Ханин · khanin.info · HT-02
18
ХОЛСТ …
48
AND
3×
9×
AND
I0
key0
I1
selKEYH
O0
ek4
AND
I0
rn4
I1
selRND
O0
er4
AND
I0
sr4
I1
selTD
O0
es4
49
OR8
1×
9×
OR8
A
eq4
B
eb1_4
C
eb2_4
D
ek4
E
er4
F
es4
G
GND
H
GND
Y
ext4
50
AND
3×
9×
AND
I0
kq5
I1
selKEYB
O0
eq5
AND
I0
bal1_5
I1
selBAL1
O0
eb1_5
AND
I0
bal2_5
I1
selBAL2
O0
eb2_5
© 2026 Даниил Ханин · khanin.info · HT-02
19
ХОЛСТ …
51
AND
3×
9×
AND
I0
key1
I1
selKEYH
O0
ek5
AND
I0
rn5
I1
selRND
O0
er5
AND
I0
sr5
I1
selTD
O0
es5
52
OR8
1×
9×
OR8
A
eq5
B
eb1_5
C
eb2_5
D
ek5
E
er5
F
es5
G
GND
H
GND
Y
ext5
53
AND
3×
9×
AND
I0
kq6
I1
selKEYB
O0
eq6
AND
I0
bal1_6
I1
selBAL1
O0
eb1_6
AND
I0
bal2_6
I1
selBAL2
O0
eb2_6
© 2026 Даниил Ханин · khanin.info · HT-02
20
ХОЛСТ …
54
AND
3×
9×
AND
I0
key2
I1
selKEYH
O0
ek6
AND
I0
rn6
I1
selRND
O0
er6
AND
I0
sr6
I1
selTD
O0
es6
55
OR8
1×
9×
OR8
A
eq6
B
eb1_6
C
eb2_6
D
ek6
E
er6
F
es6
G
GND
H
GND
Y
ext6
56
AND
3×
9×
AND
I0
kq7
I1
selKEYB
O0
eq7
AND
I0
bal1_7
I1
selBAL1
O0
eb1_7
AND
I0
bal2_7
I1
selBAL2
O0
eb2_7
© 2026 Даниил Ханин · khanin.info · HT-02
21
ХОЛСТ …
57
AND
3×
9×
AND
I0
key3
I1
selKEYH
O0
ek7
AND
I0
down
I1
selKEY
O0
edn
AND
I0
rn7
I1
selRND
O0
er7
58
AND
1×
3×
AND
I0
sr7
I1
selTD
O0
es7
59
OR8
1×
9×
OR8
A
eq7
B
eb1_7
C
eb2_7
D
ek7
E
edn
F
er7
G
es7
H
GND
Y
ext7
© 2026 Даниил Ханин · khanin.info · HT-02
22
ХОЛСТ …
60
5×
5×
acc7
acc6
acc5
acc4
acc3
61
3×
4b
0
A
1×
3×
acc2
acc1
acc0
8b
0
pc
62
Memory (RAM) → ⚙: 256 words · 16b data · 16b addr · CLR выкл
63
ноги A8–A15, WE, CLK, D0–D15 — на GND: в ПЗУ не пишут
64
ноги подряд — одной строкой: A0–A7 → pc0…pc7 значит A0 → pc0, A1 → pc1 … A7 → pc7
© 2026 Даниил Ханин · khanin.info · HT-02
23
ХОЛСТ …
65
ROM
256×16
1×
50×
Memory (RAM)
A0–A7
pc0…pc7
A8–A15
GND
WE
GND
CLK
GND
D0–D15
GND
Q0–Q15
ir0…ir15
66
2
1Hz
2Hz
10Hz
60Hz
4kHz
…
MAX
67
ROM
256 × 16
Memory
⬆
⬇
0801 0802 0804
0808 0810 0820
0840 0880 E011
02-lights.rom.json
1
RST
1 → 0
8b
0
pc
8b
7
pc
8b
17
pc
© 2026 Даниил Ханин · khanin.info · HT-02
24
← К уроку
Урок 1. Процессор банкомата: тот же, что в карте