Kits
›
The Payment Card
RU
EN
ES
Contents
Introduction
History: from cardboard to a computer
Lesson 0. Gates from transistors: for those who start from scratch
0.1. The idea: a transistor is a switch
0.2. Building
0.3. Check
Lesson 0 paste (Cmd+I)
Lesson 1. The ALU and register A: a calculator on switches
1.1. The idea: one action per clock
1.2. The idea: one adder for four operations
1.3. The idea: flags are the memory of the result
1.4. Building
1.5. Checking
Lesson 1 paste (Cmd+I)
Lesson 2. The program counter and ROM: lights by the program
2.1. The idea: a program is a list of commands
2.2. The idea: jumps and a subroutine
2.3. Building
2.4. Checking
Lesson 2 paste (Cmd+I)
Lesson 3. RAM from latches: a light through memory
3.1. The idea: the address is in the command
3.2. The idea: a latch writes while it is open
3.3. The idea: memory at power-on is garbage
3.4. Building
3.5. Checking
Lesson 3 paste (Cmd+I)
Lesson 4. Loops and conditions: multiplication by repeated addition
4.1. The idea: a counter down to zero
4.2. The program
4.3. Checking
Lesson 5. The IO wire and the card tester: echo
5.1. The idea: one wire for two
5.2. The idea: a byte bit by bit
5.3. The idea: the "exchange — wait" lamp
5.4. Building
5.5. Checking
Lesson 5 paste (Cmd+I)
Lesson 6. Personal data and the try counter: the card checks the PIN
6.1. The idea: the identity is in transistors
6.2. The idea: tries that are not erased
6.3. Building
6.4. Checking
Lesson 6 paste (Cmd+I)
Lesson 7. The card program: challenge-response
7.1. The idea: a secret that never leaves
7.2. The idea: a long answer in two commands
7.3. The program
7.4. Checking
Lesson 8. The card — into a chip with 8 legs
8.1. The idea: a card is what is inside
8.2. The idea: two cards — one program
8.3. Building
8.4. Checking
Lesson 8 paste (Cmd+I)
Summary
All the parts
Instructions in pictures
Lesson 5 in pictures
← Back to the lesson: Lesson 5. The IO wire and the card tester: echo
5
The IO wire and the tester
a byte bit by bit over one wire
kh
HT-01
CARD
TERM
start
stop
IO · 65
65 → card → 66
AND
23×
0
RBIT
1×
1
N
2×
NOT
19×
0
1×
0
8×
Q
Q
1×
DFF
21×
1
OR
6×
0
AND3
5×
3
HA
7×
2
OR3
2×
2
AND4
5×
1
NOR
1×
0
MUX2
16×
1
9×
4b
0
A
1×
∞
© 2026 Daniil Khanin · khanin.info · HT-01
73
CANVAS
1
MAX
1Hz
2Hz
10Hz
60Hz
4kHz
…
MAX
2
AND
1×
0
RBIT
1×
1
8×
AND
I0
oST
I1
selIO
O0
wOUT
RBIT
D
acc0
LD
wOUT
nR
nR
CLK
CLK
Q
pull
3
N
1×
3×
IO
GND
G
N
pull
4
NOT
1×
0
1×
N
1×
7×
NOT
I0
RST
O0
nRT
VCC
IO
IO
GND
G
N
TPULL
5
0
5×
5×
0
T0
0
T1
0
T2
0
T3
0
T4
© 2026 Daniil Khanin · khanin.info · HT-01
74
CANVAS …
6
0
3×
Q
Q
1×
4×
0
T5
0
T6
0
T7
SEND
7
DFF
2×
1
NOT
1×
0
8×
DFF
D
SEND
CLK
CLK
Q
sendS
nQ
DFF
D
sendS
CLK
CLK
Q
sendP
nQ
NOT
I0
sendP
O0
nSendP
8
OR
1×
0
NOT
1×
0
AND3
1×
3
9×
OR
I0
TXB
I1
RXB
O0
busy
NOT
I0
busy
O0
idle
AND3
A
sendS
B
nSendP
C
free
Y
goTX
© 2026 Daniil Khanin · khanin.info · HT-01
75
CANVAS …
9
NOT
1×
0
AND
1×
0
5×
NOT
I0
IO
O0
ioLow
AND
I0
ioLow
I1
idle
O0
goRX
10
HA
3×
2
12×
HA
A
cn1
B
cn0
S
ci1
C
cc2
HA
A
cn2
B
cc2
S
ci2
C
cc3
HA
A
cn3
B
cc3
S
ci3
C
cc4
11
HA
3×
2
12×
HA
A
cn4
B
cc4
S
ci4
C
cc5
HA
A
cn5
B
cc5
S
ci5
C
cc6
HA
A
cn6
B
cc6
S
ci6
C
cc7
© 2026 Daniil Khanin · khanin.info · HT-01
76
CANVAS …
12
HA
1×
2
OR
1×
0
NOT
1×
0
9×
HA
A
cn7
B
cc7
S
ci7
C
cc8
OR
I0
busy
I1
WTB
O0
lamp
NOT
I0
lamp
O0
free
13
OR3
1×
2
NOT
1×
0
AND3
1×
3
10×
OR3
A
eTX
B
eRX
C
goRX
Y
cz
NOT
I0
cz
O0
ncz
AND3
A
lamp
B
nRT
C
ncz
Y
cntOn
© 2026 Daniil Khanin · khanin.info · HT-01
77
CANVAS …
14
AND
3×
0
9×
AND
I0
nc0
I1
cntOn
O0
cd0
AND
I0
ci1
I1
cntOn
O0
cd1
AND
I0
ci2
I1
cntOn
O0
cd2
15
AND
3×
0
9×
AND
I0
ci3
I1
cntOn
O0
cd3
AND
I0
ci4
I1
cntOn
O0
cd4
AND
I0
ci5
I1
cntOn
O0
cd5
16
AND
2×
0
DFF
1×
1
9×
AND
I0
ci6
I1
cntOn
O0
cd6
AND
I0
ci7
I1
cntOn
O0
cd7
DFF
D
cd0
CLK
CLK
Q
cn0
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
78
CANVAS …
17
DFF
3×
1
9×
DFF
D
cd1
CLK
CLK
Q
cn1
nQ
DFF
D
cd2
CLK
CLK
Q
cn2
nQ
DFF
D
cd3
CLK
CLK
Q
cn3
nQ
18
DFF
3×
1
9×
DFF
D
cd4
CLK
CLK
Q
cn4
nQ
DFF
D
cd5
CLK
CLK
Q
cn5
nQ
DFF
D
cd6
CLK
CLK
Q
cn6
nQ
19
DFF
1×
1
NOT
2×
0
7×
DFF
D
cd7
CLK
CLK
Q
cn7
nQ
NOT
I0
cn0
O0
nc0
NOT
I0
cn1
O0
nc1
20
NOT
3×
0
6×
NOT
I0
cn2
O0
nc2
NOT
I0
cn3
O0
nc3
NOT
I0
cn4
O0
nc4
© 2026 Daniil Khanin · khanin.info · HT-01
79
CANVAS …
21
NOT
3×
0
6×
NOT
I0
cn5
O0
nc5
NOT
I0
cn6
O0
nc6
NOT
I0
cn7
O0
nc7
22
AND4
2×
1
10×
AND4
A
nc4
B
nc5
C
nc6
D
nc7
Y
ph0
AND4
A
cn4
B
nc5
C
nc6
D
cn7
Y
ph9
23
NOR
1×
0
AND4
1×
1
8×
NOR
I0
ph0
I1
ph9
O0
inData
AND4
A
cn0
B
cn1
C
cn2
D
cn3
Y
sub15
24
AND4
1×
1
AND
1×
0
8×
AND4
A
cn0
B
cn1
C
cn2
D
nc3
Y
sub7
AND
I0
ph9
I1
sub15
O0
endTX
© 2026 Daniil Khanin · khanin.info · HT-01
80
CANVAS …
25
AND
1×
0
NOT
2×
0
7×
AND
I0
ph9
I1
sub7
O0
endRX
NOT
I0
endTX
O0
nEndTX
NOT
I0
endRX
O0
nEndRX
26
AND
2×
0
OR
1×
0
9×
AND
I0
TXB
I1
nEndTX
O0
txKeep
OR
I0
goTX
I1
txKeep
O0
txN
AND
I0
txN
I1
nRT
O0
txD
27
DFF
1×
1
AND
1×
0
OR
1×
0
9×
DFF
D
txD
CLK
CLK
Q
TXB
nQ
AND
I0
RXB
I1
nEndRX
O0
rxKeep
OR
I0
goRX
I1
rxKeep
O0
rxN
© 2026 Daniil Khanin · khanin.info · HT-01
81
CANVAS …
28
AND
1×
0
DFF
1×
1
6×
AND
I0
rxN
I1
nRT
O0
rxD
DFF
D
rxD
CLK
CLK
Q
RXB
nQ
29
AND3
2×
3
OR
1×
0
11×
AND3
A
TXB
B
inData
C
sub15
Y
shTX
AND3
A
RXB
B
inData
C
sub7
Y
shRX
OR
I0
shTX
I1
shRX
O0
sh
30
AND
1×
0
MUX2
2×
1
11×
AND
I0
RXB
I1
IO
O0
bitIn
MUX2
A
sr0
B
bitIn
S
sh
Y
sa0
MUX2
A
sr1
B
sr0
S
sh
Y
sa1
© 2026 Daniil Khanin · khanin.info · HT-01
82
CANVAS …
31
MUX2
3×
1
12×
MUX2
A
sr2
B
sr1
S
sh
Y
sa2
MUX2
A
sr3
B
sr2
S
sh
Y
sa3
MUX2
A
sr4
B
sr3
S
sh
Y
sa4
32
MUX2
3×
1
12×
MUX2
A
sr5
B
sr4
S
sh
Y
sa5
MUX2
A
sr6
B
sr5
S
sh
Y
sa6
MUX2
A
sr7
B
sr6
S
sh
Y
sa7
33
MUX2
3×
1
12×
MUX2
A
sa0
B
T0
S
goTX
Y
sb0
MUX2
A
sa1
B
T1
S
goTX
Y
sb1
MUX2
A
sa2
B
T2
S
goTX
Y
sb2
© 2026 Daniil Khanin · khanin.info · HT-01
83
CANVAS …
34
MUX2
3×
1
12×
MUX2
A
sa3
B
T3
S
goTX
Y
sb3
MUX2
A
sa4
B
T4
S
goTX
Y
sb4
MUX2
A
sa5
B
T5
S
goTX
Y
sb5
35
MUX2
2×
1
DFF
1×
1
11×
MUX2
A
sa6
B
T6
S
goTX
Y
sb6
MUX2
A
sa7
B
T7
S
goTX
Y
sb7
DFF
D
sb0
CLK
CLK
Q
sr0
nQ
36
DFF
3×
1
9×
DFF
D
sb1
CLK
CLK
Q
sr1
nQ
DFF
D
sb2
CLK
CLK
Q
sr2
nQ
DFF
D
sb3
CLK
CLK
Q
sr3
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
84
CANVAS …
37
DFF
3×
1
9×
DFF
D
sb4
CLK
CLK
Q
sr4
nQ
DFF
D
sb5
CLK
CLK
Q
sr5
nQ
DFF
D
sb6
CLK
CLK
Q
sr6
nQ
38
DFF
1×
1
3×
DFF
D
sb7
CLK
CLK
Q
sr7
nQ
39
NOT
1×
0
AND
1×
0
OR
1×
0
8×
NOT
I0
sr7
O0
nsr7
AND
I0
inData
I1
nsr7
O0
d0
OR
I0
ph0
I1
d0
O0
pl
© 2026 Daniil Khanin · khanin.info · HT-01
85
CANVAS …
40
AND
1×
0
3×
6×
AND
I0
TXB
I1
pl
O0
TPULL
sr7
sr6
sr5
41
5×
5×
sr4
sr3
sr2
sr1
sr0
42
4b
0
A
1×
8b
0
sr
43
AND
2×
0
6×
AND
I0
TXB
I1
endTX
O0
eTX
AND
I0
RXB
I1
endRX
O0
eRX
© 2026 Daniil Khanin · khanin.info · HT-01
86
CANVAS …
44
AND4
1×
1
AND
1×
0
8×
AND4
A
cn4
B
cn5
C
cn6
D
cn7
Y
hi15
AND
I0
sub15
I1
hi15
O0
c255
45
NOT
1×
0
AND
1×
0
OR3
1×
2
9×
NOT
I0
c255
O0
nc255
AND
I0
WTB
I1
nc255
O0
wKeep
OR3
A
eTX
B
eRX
C
wKeep
Y
wN
46
NOT
1×
0
AND3
1×
3
DFF
1×
1
9×
NOT
I0
goRX
O0
nGoRX
AND3
A
wN
B
nGoRX
C
nRT
Y
wD
DFF
D
wD
CLK
CLK
Q
WTB
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
87
CANVAS …
47
1×
1×
lamp
48
ROM
256 × 16
Memory
⬆
⬇
0801 0802 0804
0808 0810 0820
0840 0880 E011
05-echo.rom.json
1
RST
1 → 0
—
0
T7
1
T6
0
T5
0
T4
0
T3
0
T2
0
T1
1
T0
0100 0001 $41
SEND
SEND
lamp
66
65 + 1
1
T7
1
T6
1
T5
1
T4
1
T3
1
T2
1
T1
1
T0
1111 1111 $FF
SEND
SEND
lamp
0
255 + 1 = 0
© 2026 Daniil Khanin · khanin.info · HT-01
88
← Back to the lesson
Lesson 5. The IO wire and the card tester: echo