Kits
›
La tarjeta de pago
RU
EN
ES
Contenido
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
Instructions in pictures
Download PDF — the whole book
kh
HOW THINGS WORK
build kits · khanin.info
Building
instructions
HT-01
The Payment Card
lessons 0–8 · a computer in the little gold square
simulator: cs.khanin.info
© 2026 Daniil Khanin · khanin.info · HT-01
1
How to read these instructions
3
step number — follow strictly in order
AND
2×
6×
parts for this step: how many to place
AND
A
x
B
y
Y
z
a part with labels on its pins
CLK
CLK
labels with the same name are connected
A
Y
chip ports: input [ and output ]
DFF
blue frame — building a chip
CANVAS
grey tab — the main canvas
low
yellow ring — what has changed
remove a part together with its labels
2×
double-click a label — new name
3
chip built in the lesson with this number
check: this is how it should work
Keys
V
VCC (1)
G
GND (0)
N
transistor
I
switch
O
lamp
L
label
K
clock
U
button
[
port in
]
port out
Ctrl+G — into a chip
on a Mac Ctrl = Cmd
© 2026 Daniil Khanin · khanin.info · HT-01
2
A little history
1950
cardboard
1959
plastic
1960s
stripe
1979
processor
now
you build it
In 1950 Diners Club issued the first cards — made of cardboard. In 1959 cards became plastic, and the number
was embossed: the merchant rolled the card through an imprinter and got a print on a paper slip.
In the late 1960s IBM put a magnetic stripe on the card — now a machine could read the number. But a stripe
is easy to copy: it only stores a number, it does not think.
In 1979 Bull made the CP8 — a card with a processor, memory and a program. Since then the card never shows
its secret: it answers the terminal's challenge. That is the computer you are going to build.
CLUB
MEMBER · 1950
4000 1234
4000 1234
CP8
Diners Club, IBM, Bull are trademarks of their respective owners. This kit is not affiliated with or endorsed by them; the names are mentioned to tell the story.
© 2026 Daniil Khanin · khanin.info · HT-01
3
0
Gates (optional)
NOT, NAND, NOR, AND, OR, XOR from transistors
kh
HT-01
NOT
NAND
NOR
AND
OR
XOR
VCC
1×
GND
1×
IN
11×
OUT
6×
P
11×
N
11×
∞
Ctrl
+
G
NOT
NAND
NOR
AND
OR
XOR
© 2026 Daniil Khanin · khanin.info · HT-01
4
CANVAS
NOT
1
VCC
1×
GND
1×
2×
VCC
VCC
GND
GND
2
IN
1×
OUT
1×
P
1×
N
1×
6×
I0
O0
VCC
O0
G
P
I0
O0
GND
G
N
I0
© 2026 Daniil Khanin · khanin.info · HT-01
5
NOT …
NAND
3
Ctrl
+
G
Library
…
Chip N
2×
Library
…
NOT
Enter
NOT
I0
O0
4
IN
2×
OUT
1×
P
2×
N
1×
9×
I0
I1
O0
VCC
O0
G
P
I0
VCC
O0
G
P
I1
O0
mid
G
N
I0
© 2026 Daniil Khanin · khanin.info · HT-01
6
NAND …
NOR
5
N
1×
3×
mid
GND
G
N
I1
6
Ctrl
+
G
Library
…
Chip N
2×
Library
…
NAND
Enter
NAND
I0
I1
O0
7
IN
2×
OUT
1×
P
2×
N
1×
9×
I0
I1
O0
VCC
mid
G
P
I0
mid
O0
G
P
I1
O0
GND
G
N
I0
© 2026 Daniil Khanin · khanin.info · HT-01
7
NOR …
AND
8
N
1×
3×
O0
GND
G
N
I1
9
Ctrl
+
G
Library
…
Chip N
2×
Library
…
NOR
Enter
NOR
I0
I1
O0
10
IN
2×
OUT
1×
P
2×
N
1×
9×
I0
I1
O0
VCC
n
G
P
I0
VCC
n
G
P
I1
n
mid
G
N
I0
© 2026 Daniil Khanin · khanin.info · HT-01
8
AND …
11
N
2×
P
1×
9×
mid
GND
G
N
I1
VCC
O0
G
P
n
O0
GND
G
N
n
12
Ctrl
+
G
Library
…
Chip N
2×
Library
…
AND
Enter
AND
I0
I1
O0
© 2026 Daniil Khanin · khanin.info · HT-01
9
OR
13
IN
2×
OUT
1×
P
2×
N
1×
9×
I0
I1
O0
VCC
mid
G
P
I0
mid
n
G
P
I1
n
GND
G
N
I0
14
N
2×
P
1×
9×
n
GND
G
N
I1
VCC
O0
G
P
n
O0
GND
G
N
n
15
Ctrl
+
G
Library
…
Chip N
2×
Library
…
OR
Enter
OR
I0
I1
O0
© 2026 Daniil Khanin · khanin.info · HT-01
10
XOR
16
IN
2×
OUT
1×
OR
1×
NAND
1×
AND
1×
9×
I0
I1
O0
OR
I0
I0
I1
I1
O0
o
NAND
I0
I0
I1
I1
O0
n
AND
I0
o
I1
n
O0
O0
17
Ctrl
+
G
Library
…
Chip N
2×
Library
…
XOR
Enter
XOR
I0
I1
O0
© 2026 Daniil Khanin · khanin.info · HT-01
11
1
ALU and register A
a calculator on switches: 9 operations, flags C and Z
kh
HT-01
8b
200
A
+
8b
100
bv
=
8b
44
A
C
200 + 100 = 300 − 256 = 44, C = 1
IN
36×
OUT
29×
NOR
3×
0
NOT
9×
0
AND
17×
0
NAND
3×
0
XOR
18×
0
OR
16×
0
VCC
1×
GND
1×
0
13×
Q
Q
1×
4b
0
A
1×
2×
∞
Ctrl
+
G
SRLatch
DLatch
DFF
MUX2
RBIT
FA
AND4
OR4
OR8
DEC16
© 2026 Daniil Khanin · khanin.info · HT-01
12
SRLatch
1
IN
2×
OUT
2×
NOR
2×
0
6×
R
S
Q
nQ
NOR
I0
R
I1
nQ
O0
Q
NOR
I0
S
I1
Q
O0
nQ
2
Ctrl
+
G
Library
…
Chip N
2×
Library
…
SRLatch
Enter
SRLatch
R
S
Q
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
13
DLatch
3
IN
2×
OUT
2×
NOT
1×
0
AND
2×
0
8×
D
EN
Q
nQ
NOT
I0
D
O0
nD
AND
I0
D
I1
EN
O0
setD
AND
I0
nD
I1
EN
O0
rstD
4
SRLatch
1×
4×
SRLatch
R
rstD
S
setD
Q
Q
nQ
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
14
DLatch …
DFF
5
Ctrl
+
G
Library
…
Chip N
2×
Library
…
DLatch
Enter
DLatch
D
EN
Q
nQ
6
IN
2×
OUT
2×
NOT
1×
0
DLatch
2×
9×
D
CLK
Q
nQ
NOT
I0
CLK
O0
nCLK
DLatch
D
D
EN
nCLK
Q
mid
nQ
DLatch
D
mid
EN
CLK
Q
Q
nQ
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
15
DFF …
MUX2
7
Ctrl
+
G
Library
…
Chip N
2×
Library
…
DFF
Enter
DFF
D
CLK
Q
nQ
8
IN
3×
OUT
1×
NOT
1×
0
NAND
2×
0
8×
A
B
S
Y
NOT
I0
S
O0
nS
NAND
I0
A
I1
nS
O0
na
NAND
I0
B
I1
S
O0
nb
© 2026 Daniil Khanin · khanin.info · HT-01
16
MUX2 …
RBIT
9
NAND
1×
0
3×
NAND
I0
na
I1
nb
O0
Y
10
Ctrl
+
G
Library
…
Chip N
2×
Library
…
MUX2
Enter
MUX2
A
B
S
Y
11
IN
4×
OUT
1×
MUX2
1×
AND
1×
0
DFF
1×
10×
D
LD
nR
CLK
Q
MUX2
A
Q
B
D
S
LD
Y
m
AND
I0
m
I1
nR
O0
d
DFF
D
d
CLK
CLK
Q
Q
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
17
RBIT …
FA
12
Ctrl
+
G
Library
…
Chip N
2×
Library
…
RBIT
Enter
RBIT
D
LD
nR
CLK
Q
13
IN
3×
OUT
2×
XOR
2×
0
AND
1×
0
9×
A
B
CI
S
CO
XOR
I0
A
I1
B
O0
p
XOR
I0
p
I1
CI
O0
S
AND
I0
A
I1
B
O0
g
14
AND
1×
0
OR
1×
0
6×
AND
I0
p
I1
CI
O0
pc
OR
I0
g
I1
pc
O0
CO
© 2026 Daniil Khanin · khanin.info · HT-01
18
FA …
AND4
15
Ctrl
+
G
Library
…
Chip N
2×
Library
…
FA
Enter
FA
A
B
CI
S
CO
16
IN
4×
OUT
1×
AND
3×
0
9×
A
B
C
D
Y
AND
I0
A
I1
B
O0
ab
AND
I0
ab
I1
C
O0
abc
AND
I0
abc
I1
D
O0
Y
© 2026 Daniil Khanin · khanin.info · HT-01
19
AND4 …
OR4
17
Ctrl
+
G
Library
…
Chip N
2×
Library
…
AND4
Enter
AND4
A
B
C
D
Y
18
IN
4×
OUT
1×
OR
3×
0
9×
A
B
C
D
Y
OR
I0
A
I1
B
O0
ab
OR
I0
C
I1
D
O0
cd
OR
I0
ab
I1
cd
O0
Y
© 2026 Daniil Khanin · khanin.info · HT-01
20
OR4 …
OR8
19
Ctrl
+
G
Library
…
Chip N
2×
Library
…
OR4
Enter
OR4
A
B
C
D
Y
20
IN
8×
OUT
1×
A
B
C
D
E
F
G
H
Y
21
OR4
2×
10×
OR4
A
A
B
B
C
C
D
D
Y
lo
OR4
A
E
B
F
C
G
D
H
Y
hi
© 2026 Daniil Khanin · khanin.info · HT-01
21
OR8 …
DEC16
22
OR
1×
0
3×
OR
I0
lo
I1
hi
O0
Y
23
Ctrl
+
G
Library
…
Chip N
2×
Library
…
OR8
Enter
OR8
A
B
C
D
E
F
G
H
Y
24
IN
4×
OUT
16×
I0
I1
I2
I3
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
Y8
Y9
Y10
Y11
Y12
Y13
Y14
Y15
25
NOT
3×
0
6×
NOT
I0
I0
O0
n0
NOT
I0
I1
O0
n1
NOT
I0
I2
O0
n2
© 2026 Daniil Khanin · khanin.info · HT-01
22
DEC16 …
26
NOT
1×
0
AND4
1×
7×
NOT
I0
I3
O0
n3
AND4
A
n3
B
n2
C
n1
D
n0
Y
Y0
27
AND4
2×
10×
AND4
A
n3
B
n2
C
n1
D
I0
Y
Y1
AND4
A
n3
B
n2
C
I1
D
n0
Y
Y2
28
AND4
2×
10×
AND4
A
n3
B
n2
C
I1
D
I0
Y
Y3
AND4
A
n3
B
I2
C
n1
D
n0
Y
Y4
© 2026 Daniil Khanin · khanin.info · HT-01
23
DEC16 …
29
AND4
2×
10×
AND4
A
n3
B
I2
C
n1
D
I0
Y
Y5
AND4
A
n3
B
I2
C
I1
D
n0
Y
Y6
30
AND4
2×
10×
AND4
A
n3
B
I2
C
I1
D
I0
Y
Y7
AND4
A
I3
B
n2
C
n1
D
n0
Y
Y8
31
AND4
2×
10×
AND4
A
I3
B
n2
C
n1
D
I0
Y
Y9
AND4
A
I3
B
n2
C
I1
D
n0
Y
Y10
© 2026 Daniil Khanin · khanin.info · HT-01
24
DEC16 …
32
AND4
2×
10×
AND4
A
I3
B
n2
C
I1
D
I0
Y
Y11
AND4
A
I3
B
I2
C
n1
D
n0
Y
Y12
33
AND4
2×
10×
AND4
A
I3
B
I2
C
n1
D
I0
Y
Y13
AND4
A
I3
B
I2
C
I1
D
n0
Y
Y14
34
AND4
1×
5×
AND4
A
I3
B
I2
C
I1
D
I0
Y
Y15
35
Ctrl
+
G
Library
…
Chip N
2×
Library
…
DEC16
Enter
DEC16
I0–I3
Y0–Y15
© 2026 Daniil Khanin · khanin.info · HT-01
25
CANVAS
36
VCC
1×
GND
1×
0
3×
5×
VCC
VCC
GND
GND
0
ir12
0
ir13
0
ir14
37
0
5×
5×
0
ir15
0
bv0
0
bv1
0
bv2
0
bv3
38
0
4×
Q
Q
1×
5×
0
bv4
0
bv5
0
bv6
0
bv7
CLK
39
0
1×
NOT
1×
0
3×
0
RST
NOT
I0
RST
O0
nR
© 2026 Daniil Khanin · khanin.info · HT-01
26
CANVAS …
40
DEC16
1×
20×
DEC16
I0–I3
ir12…ir15
Y0
oLD
Y1
oST
Y2
oADD
Y3
oADC
Y4
oSUB
Y5
oAND
Y6
oOR
Y7
oXOR
Y8
oCMP
Y9
oJMP
Y10
oJZ
Y11
oJNZ
Y12
oJC
Y13
oJNC
Y14
oCALL
Y15
oRET
41
NOR
1×
0
OR
1×
0
6×
NOR
I0
ir15
I1
oST
O0
wA
OR
I0
wA
I1
oCMP
O0
wZ
© 2026 Daniil Khanin · khanin.info · HT-01
27
CANVAS …
42
OR4
1×
OR
1×
0
8×
OR4
A
oADD
B
oADC
C
oSUB
D
oCMP
Y
wC
OR
I0
oSUB
I1
oCMP
O0
sub
43
XOR
3×
0
9×
XOR
I0
bv0
I1
sub
O0
bx0
XOR
I0
bv1
I1
sub
O0
bx1
XOR
I0
bv2
I1
sub
O0
bx2
44
XOR
3×
0
9×
XOR
I0
bv3
I1
sub
O0
bx3
XOR
I0
bv4
I1
sub
O0
bx4
XOR
I0
bv5
I1
sub
O0
bx5
© 2026 Daniil Khanin · khanin.info · HT-01
28
CANVAS …
45
XOR
2×
0
AND
1×
0
9×
XOR
I0
bv6
I1
sub
O0
bx6
XOR
I0
bv7
I1
sub
O0
bx7
AND
I0
oADC
I1
fC
O0
adcC
46
OR
1×
0
FA
2×
13×
OR
I0
sub
I1
adcC
O0
cin
FA
A
acc0
B
bx0
CI
cin
S
sm0
CO
c1
FA
A
acc1
B
bx1
CI
c1
S
sm1
CO
c2
47
FA
3×
15×
FA
A
acc2
B
bx2
CI
c2
S
sm2
CO
c3
FA
A
acc3
B
bx3
CI
c3
S
sm3
CO
c4
FA
A
acc4
B
bx4
CI
c4
S
sm4
CO
c5
© 2026 Daniil Khanin · khanin.info · HT-01
29
CANVAS …
48
FA
3×
15×
FA
A
acc5
B
bx5
CI
c5
S
sm5
CO
c6
FA
A
acc6
B
bx6
CI
c6
S
sm6
CO
c7
FA
A
acc7
B
bx7
CI
c7
S
sm7
CO
cout
49
AND
3×
0
9×
AND
I0
acc0
I1
bv0
O0
la0
AND
I0
acc1
I1
bv1
O0
la1
AND
I0
acc2
I1
bv2
O0
la2
50
AND
3×
0
9×
AND
I0
acc3
I1
bv3
O0
la3
AND
I0
acc4
I1
bv4
O0
la4
AND
I0
acc5
I1
bv5
O0
la5
© 2026 Daniil Khanin · khanin.info · HT-01
30
CANVAS …
51
AND
2×
0
OR
1×
0
9×
AND
I0
acc6
I1
bv6
O0
la6
AND
I0
acc7
I1
bv7
O0
la7
OR
I0
acc0
I1
bv0
O0
lo0
52
OR
3×
0
9×
OR
I0
acc1
I1
bv1
O0
lo1
OR
I0
acc2
I1
bv2
O0
lo2
OR
I0
acc3
I1
bv3
O0
lo3
53
OR
3×
0
9×
OR
I0
acc4
I1
bv4
O0
lo4
OR
I0
acc5
I1
bv5
O0
lo5
OR
I0
acc6
I1
bv6
O0
lo6
© 2026 Daniil Khanin · khanin.info · HT-01
31
CANVAS …
54
OR
1×
0
XOR
2×
0
9×
OR
I0
acc7
I1
bv7
O0
lo7
XOR
I0
acc0
I1
bv0
O0
lx0
XOR
I0
acc1
I1
bv1
O0
lx1
55
XOR
3×
0
9×
XOR
I0
acc2
I1
bv2
O0
lx2
XOR
I0
acc3
I1
bv3
O0
lx3
XOR
I0
acc4
I1
bv4
O0
lx4
56
XOR
3×
0
9×
XOR
I0
acc5
I1
bv5
O0
lx5
XOR
I0
acc6
I1
bv6
O0
lx6
XOR
I0
acc7
I1
bv7
O0
lx7
© 2026 Daniil Khanin · khanin.info · HT-01
32
CANVAS …
57
MUX2
3×
12×
MUX2
A
sm0
B
lx0
S
oXOR
Y
r1_0
MUX2
A
sm1
B
lx1
S
oXOR
Y
r1_1
MUX2
A
sm2
B
lx2
S
oXOR
Y
r1_2
58
MUX2
3×
12×
MUX2
A
sm3
B
lx3
S
oXOR
Y
r1_3
MUX2
A
sm4
B
lx4
S
oXOR
Y
r1_4
MUX2
A
sm5
B
lx5
S
oXOR
Y
r1_5
59
MUX2
3×
12×
MUX2
A
sm6
B
lx6
S
oXOR
Y
r1_6
MUX2
A
sm7
B
lx7
S
oXOR
Y
r1_7
MUX2
A
r1_0
B
lo0
S
oOR
Y
r2_0
© 2026 Daniil Khanin · khanin.info · HT-01
33
CANVAS …
60
MUX2
3×
12×
MUX2
A
r1_1
B
lo1
S
oOR
Y
r2_1
MUX2
A
r1_2
B
lo2
S
oOR
Y
r2_2
MUX2
A
r1_3
B
lo3
S
oOR
Y
r2_3
61
MUX2
3×
12×
MUX2
A
r1_4
B
lo4
S
oOR
Y
r2_4
MUX2
A
r1_5
B
lo5
S
oOR
Y
r2_5
MUX2
A
r1_6
B
lo6
S
oOR
Y
r2_6
62
MUX2
3×
12×
MUX2
A
r1_7
B
lo7
S
oOR
Y
r2_7
MUX2
A
r2_0
B
la0
S
oAND
Y
r3_0
MUX2
A
r2_1
B
la1
S
oAND
Y
r3_1
© 2026 Daniil Khanin · khanin.info · HT-01
34
CANVAS …
63
MUX2
3×
12×
MUX2
A
r2_2
B
la2
S
oAND
Y
r3_2
MUX2
A
r2_3
B
la3
S
oAND
Y
r3_3
MUX2
A
r2_4
B
la4
S
oAND
Y
r3_4
64
MUX2
3×
12×
MUX2
A
r2_5
B
la5
S
oAND
Y
r3_5
MUX2
A
r2_6
B
la6
S
oAND
Y
r3_6
MUX2
A
r2_7
B
la7
S
oAND
Y
r3_7
65
MUX2
3×
12×
MUX2
A
r3_0
B
bv0
S
oLD
Y
res0
MUX2
A
r3_1
B
bv1
S
oLD
Y
res1
MUX2
A
r3_2
B
bv2
S
oLD
Y
res2
© 2026 Daniil Khanin · khanin.info · HT-01
35
CANVAS …
66
MUX2
3×
12×
MUX2
A
r3_3
B
bv3
S
oLD
Y
res3
MUX2
A
r3_4
B
bv4
S
oLD
Y
res4
MUX2
A
r3_5
B
bv5
S
oLD
Y
res5
67
MUX2
2×
8×
MUX2
A
r3_6
B
bv6
S
oLD
Y
res6
MUX2
A
r3_7
B
bv7
S
oLD
Y
res7
68
RBIT
2×
10×
RBIT
D
res0
LD
wA
nR
nR
CLK
CLK
Q
acc0
RBIT
D
res1
LD
wA
nR
nR
CLK
CLK
Q
acc1
© 2026 Daniil Khanin · khanin.info · HT-01
36
CANVAS …
69
RBIT
2×
10×
RBIT
D
res2
LD
wA
nR
nR
CLK
CLK
Q
acc2
RBIT
D
res3
LD
wA
nR
nR
CLK
CLK
Q
acc3
70
RBIT
2×
10×
RBIT
D
res4
LD
wA
nR
nR
CLK
CLK
Q
acc4
RBIT
D
res5
LD
wA
nR
nR
CLK
CLK
Q
acc5
71
RBIT
2×
10×
RBIT
D
res6
LD
wA
nR
nR
CLK
CLK
Q
acc6
RBIT
D
res7
LD
wA
nR
nR
CLK
CLK
Q
acc7
© 2026 Daniil Khanin · khanin.info · HT-01
37
CANVAS …
72
OR8
1×
9×
OR8
A
res0
B
res1
C
res2
D
res3
E
res4
F
res5
G
res6
H
res7
Y
nz
73
NOT
1×
0
RBIT
1×
7×
NOT
I0
nz
O0
zr
RBIT
D
zr
LD
wZ
nR
nR
CLK
CLK
Q
fZ
74
RBIT
1×
5×
RBIT
D
cout
LD
wC
nR
nR
CLK
CLK
Q
fC
75
4b
0
A
1×
2×
2×
8b
0
acc
fZ
fC
LD
0000
1100 1000 (200)
CLK
CLK
8b
200
A
C
Z
ADD
0010
0110 0100 (100)
CLK
CLK
8b
44
A
C
Z
SUB
0100
0010 1100 (44)
CLK
CLK
8b
0
A
C
Z
© 2026 Daniil Khanin · khanin.info · HT-01
38
2
Program counter and ROM
the processor walks through the program by itself
kh
HT-01
8b
5
pc
LD #32
ROM[5]
IN
5×
OUT
3×
XOR
1×
0
AND
13×
0
OR
3×
0
Hz
1×
ROM
256×16
1×
NOT
3×
0
MUX2
24×
1
DFF
8×
1
RBIT
8×
1
4b
0
A
1×
8×
∞
Ctrl
+
G
HA
OR3
© 2026 Daniil Khanin · khanin.info · HT-01
39
CANVAS
HA
1
Delete
CLK
0
ir12
0
ir13
0
ir14
0
ir15
0
bv0
0
bv1
0
bv2
0
bv3
0
bv4
0
bv5
0
bv6
0
bv7
2
IN
2×
OUT
2×
XOR
1×
0
AND
1×
0
6×
A
B
S
C
XOR
I0
A
I1
B
O0
S
AND
I0
A
I1
B
O0
C
© 2026 Daniil Khanin · khanin.info · HT-01
40
HA …
OR3
3
Ctrl
+
G
Library
…
Chip N
2×
Library
…
HA
Enter
HA
A
B
S
C
4
IN
3×
OUT
1×
OR
2×
0
6×
A
B
C
Y
OR
I0
A
I1
B
O0
ab
OR
I0
ab
I1
C
O0
Y
© 2026 Daniil Khanin · khanin.info · HT-01
41
OR3 …
CANVAS
5
Ctrl
+
G
Library
…
Chip N
2×
Library
…
OR3
Enter
OR3
A
B
C
Y
6
Hz
1×
1×
2Hz
CLK
7
Memory (RAM) → ⚙: 256 words · 16b data · 16b addr · CLR off
8
legs A8–A15, WE, CLK, D0–D15 — to GND: nobody writes to a ROM
9
pins in a row — one line: A0–A7 → pc0…pc7 means A0 → pc0, A1 → pc1 … A7 → pc7
© 2026 Daniil Khanin · khanin.info · HT-01
42
CANVAS …
10
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
11
NOT
1×
0
HA
2×
10×
NOT
I0
pc0
O0
inc0
HA
A
pc1
B
pc0
S
inc1
C
ic2
HA
A
pc2
B
ic2
S
inc2
C
ic3
12
HA
3×
12×
HA
A
pc3
B
ic3
S
inc3
C
ic4
HA
A
pc4
B
ic4
S
inc4
C
ic5
HA
A
pc5
B
ic5
S
inc5
C
ic6
© 2026 Daniil Khanin · khanin.info · HT-01
43
CANVAS …
13
HA
2×
8×
HA
A
pc6
B
ic6
S
inc6
C
ic7
HA
A
pc7
B
ic7
S
inc7
C
ic8
14
NOT
2×
0
AND
1×
0
7×
NOT
I0
fZ
O0
nfZ
NOT
I0
fC
O0
nfC
AND
I0
oJZ
I1
fZ
O0
tJZ
15
AND
3×
0
9×
AND
I0
oJNZ
I1
nfZ
O0
tJNZ
AND
I0
oJC
I1
fC
O0
tJC
AND
I0
oJNC
I1
nfC
O0
tJNC
© 2026 Daniil Khanin · khanin.info · HT-01
44
CANVAS …
16
OR3
2×
OR
1×
0
11×
OR3
A
oJMP
B
oCALL
C
tJZ
Y
j1
OR3
A
tJNZ
B
tJC
C
tJNC
Y
j2
OR
I0
j1
I1
j2
O0
jmp
17
MUX2
3×
1
12×
MUX2
A
inc0
B
ir0
S
jmp
Y
jn0
MUX2
A
inc1
B
ir1
S
jmp
Y
jn1
MUX2
A
inc2
B
ir2
S
jmp
Y
jn2
18
MUX2
3×
1
12×
MUX2
A
inc3
B
ir3
S
jmp
Y
jn3
MUX2
A
inc4
B
ir4
S
jmp
Y
jn4
MUX2
A
inc5
B
ir5
S
jmp
Y
jn5
© 2026 Daniil Khanin · khanin.info · HT-01
45
CANVAS …
19
MUX2
3×
1
12×
MUX2
A
inc6
B
ir6
S
jmp
Y
jn6
MUX2
A
inc7
B
ir7
S
jmp
Y
jn7
MUX2
A
jn0
B
sk0
S
oRET
Y
nx0
20
MUX2
3×
1
12×
MUX2
A
jn1
B
sk1
S
oRET
Y
nx1
MUX2
A
jn2
B
sk2
S
oRET
Y
nx2
MUX2
A
jn3
B
sk3
S
oRET
Y
nx3
21
MUX2
3×
1
12×
MUX2
A
jn4
B
sk4
S
oRET
Y
nx4
MUX2
A
jn5
B
sk5
S
oRET
Y
nx5
MUX2
A
jn6
B
sk6
S
oRET
Y
nx6
© 2026 Daniil Khanin · khanin.info · HT-01
46
CANVAS …
22
MUX2
1×
1
AND
2×
0
10×
MUX2
A
jn7
B
sk7
S
oRET
Y
nx7
AND
I0
nx0
I1
nR
O0
pd0
AND
I0
nx1
I1
nR
O0
pd1
23
AND
3×
0
9×
AND
I0
nx2
I1
nR
O0
pd2
AND
I0
nx3
I1
nR
O0
pd3
AND
I0
nx4
I1
nR
O0
pd4
24
AND
3×
0
9×
AND
I0
nx5
I1
nR
O0
pd5
AND
I0
nx6
I1
nR
O0
pd6
AND
I0
nx7
I1
nR
O0
pd7
© 2026 Daniil Khanin · khanin.info · HT-01
47
CANVAS …
25
DFF
3×
1
9×
DFF
D
pd0
CLK
CLK
Q
pc0
nQ
DFF
D
pd1
CLK
CLK
Q
pc1
nQ
DFF
D
pd2
CLK
CLK
Q
pc2
nQ
26
DFF
3×
1
9×
DFF
D
pd3
CLK
CLK
Q
pc3
nQ
DFF
D
pd4
CLK
CLK
Q
pc4
nQ
DFF
D
pd5
CLK
CLK
Q
pc5
nQ
27
DFF
2×
1
6×
DFF
D
pd6
CLK
CLK
Q
pc6
nQ
DFF
D
pd7
CLK
CLK
Q
pc7
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
48
CANVAS …
28
RBIT
2×
1
10×
RBIT
D
inc0
LD
oCALL
nR
nR
CLK
CLK
Q
sk0
RBIT
D
inc1
LD
oCALL
nR
nR
CLK
CLK
Q
sk1
29
RBIT
2×
1
10×
RBIT
D
inc2
LD
oCALL
nR
nR
CLK
CLK
Q
sk2
RBIT
D
inc3
LD
oCALL
nR
nR
CLK
CLK
Q
sk3
30
RBIT
2×
1
10×
RBIT
D
inc4
LD
oCALL
nR
nR
CLK
CLK
Q
sk4
RBIT
D
inc5
LD
oCALL
nR
nR
CLK
CLK
Q
sk5
© 2026 Daniil Khanin · khanin.info · HT-01
49
CANVAS …
31
RBIT
2×
1
10×
RBIT
D
inc6
LD
oCALL
nR
nR
CLK
CLK
Q
sk6
RBIT
D
inc7
LD
oCALL
nR
nR
CLK
CLK
Q
sk7
32
MUX2
3×
1
12×
MUX2
A
din0
B
ir0
S
ir11
Y
bv0
MUX2
A
din1
B
ir1
S
ir11
Y
bv1
MUX2
A
din2
B
ir2
S
ir11
Y
bv2
33
MUX2
3×
1
12×
MUX2
A
din3
B
ir3
S
ir11
Y
bv3
MUX2
A
din4
B
ir4
S
ir11
Y
bv4
MUX2
A
din5
B
ir5
S
ir11
Y
bv5
© 2026 Daniil Khanin · khanin.info · HT-01
50
CANVAS …
34
MUX2
2×
1
8×
MUX2
A
din6
B
ir6
S
ir11
Y
bv6
MUX2
A
din7
B
ir7
S
ir11
Y
bv7
35
4b
0
A
1×
4×
4×
8b
0
pc
acc7
acc6
acc5
acc4
36
4×
4×
acc3
acc2
acc1
acc0
37
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 Daniil Khanin · khanin.info · HT-01
51
3
RAM from latches
8 memory cells and room for the personal data
kh
HT-01
0
1
2
3
4
5
6
7
ST 0
A → cell 0
ADD 0
A + cell 0
IN
16×
OUT
17×
AND
37×
0
NOT
15×
0
DLatch
8×
1
OR8
8×
1
8×
OR4
1×
1
OR3
1×
2
OR
6×
0
∞
Ctrl
+
G
AND3
DEC8
WORD8
© 2026 Daniil Khanin · khanin.info · HT-01
52
AND3
DEC8
1
IN
3×
OUT
1×
AND
2×
0
6×
A
B
C
Y
AND
I0
A
I1
B
O0
ab
AND
I0
ab
I1
C
O0
Y
2
Ctrl
+
G
Library
…
Chip N
2×
Library
…
AND3
Enter
AND3
A
B
C
Y
3
IN
3×
OUT
8×
I0
I1
I2
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
© 2026 Daniil Khanin · khanin.info · HT-01
53
DEC8 …
4
NOT
3×
0
6×
NOT
I0
I0
O0
n0
NOT
I0
I1
O0
n1
NOT
I0
I2
O0
n2
5
AND3
3×
12×
AND3
A
n2
B
n1
C
n0
Y
Y0
AND3
A
n2
B
n1
C
I0
Y
Y1
AND3
A
n2
B
I1
C
n0
Y
Y2
© 2026 Daniil Khanin · khanin.info · HT-01
54
DEC8 …
6
AND3
3×
12×
AND3
A
n2
B
I1
C
I0
Y
Y3
AND3
A
I2
B
n1
C
n0
Y
Y4
AND3
A
I2
B
n1
C
I0
Y
Y5
7
AND3
2×
8×
AND3
A
I2
B
I1
C
n0
Y
Y6
AND3
A
I2
B
I1
C
I0
Y
Y7
8
Ctrl
+
G
Library
…
Chip N
2×
Library
…
DEC8
Enter
DEC8
I0
I1
I2
Y0
Y1
Y2
Y3
Y4
Y5
Y6
Y7
© 2026 Daniil Khanin · khanin.info · HT-01
55
WORD8
9
IN
10×
OUT
8×
D0
D1
D2
D3
D4
D5
D6
D7
W
R
O0
O1
O2
O3
O4
O5
O6
O7
10
DLatch
3×
1
9×
DLatch
D
D0
EN
W
Q
q0
nQ
DLatch
D
D1
EN
W
Q
q1
nQ
DLatch
D
D2
EN
W
Q
q2
nQ
11
DLatch
3×
1
9×
DLatch
D
D3
EN
W
Q
q3
nQ
DLatch
D
D4
EN
W
Q
q4
nQ
DLatch
D
D5
EN
W
Q
q5
nQ
© 2026 Daniil Khanin · khanin.info · HT-01
56
WORD8 …
12
DLatch
2×
1
AND
1×
0
9×
DLatch
D
D6
EN
W
Q
q6
nQ
DLatch
D
D7
EN
W
Q
q7
nQ
AND
I0
q0
I1
R
O0
O0
13
AND
3×
0
9×
AND
I0
q1
I1
R
O0
O1
AND
I0
q2
I1
R
O0
O2
AND
I0
q3
I1
R
O0
O3
14
AND
3×
0
9×
AND
I0
q4
I1
R
O0
O4
AND
I0
q5
I1
R
O0
O5
AND
I0
q6
I1
R
O0
O6
© 2026 Daniil Khanin · khanin.info · HT-01
57
WORD8 …
CANVAS
15
AND
1×
0
3×
AND
I0
q7
I1
R
O0
O7
16
Ctrl
+
G
Library
…
Chip N
2×
Library
…
WORD8
Enter
WORD8
D0
D1
D2
D3
D4
D5
D6
D7
W
R
O0
O1
O2
O3
O4
O5
O6
O7
17
NOT
3×
0
6×
NOT
I0
ir4
O0
selRAM
NOT
I0
ir3
O0
nir3
NOT
I0
ir2
O0
nir2
© 2026 Daniil Khanin · khanin.info · HT-01
58
CANVAS …
18
AND
1×
0
AND3
2×
11×
AND
I0
ir4
I1
nir3
O0
selP
AND3
A
ir4
B
ir3
C
nir2
Y
selTRY
AND3
A
ir4
B
ir3
C
ir2
Y
selIO
19
DEC8
1×
11×
DEC8
I0
ir0
I1
ir1
I2
ir2
Y0
row0
Y1
row1
Y2
row2
Y3
row3
Y4
row4
Y5
row5
Y6
row6
Y7
row7
20
NOT
1×
0
AND3
1×
AND
1×
0
9×
NOT
I0
CLK
O0
nCLK
AND3
A
oST
B
selRAM
C
nCLK
Y
weRAM
AND
I0
row0
I1
selRAM
O0
rr0
© 2026 Daniil Khanin · khanin.info · HT-01
59
CANVAS …
21
AND
3×
0
9×
AND
I0
row1
I1
selRAM
O0
rr1
AND
I0
row2
I1
selRAM
O0
rr2
AND
I0
row3
I1
selRAM
O0
rr3
22
AND
3×
0
9×
AND
I0
row4
I1
selRAM
O0
rr4
AND
I0
row5
I1
selRAM
O0
rr5
AND
I0
row6
I1
selRAM
O0
rr6
23
AND
3×
0
9×
AND
I0
row7
I1
selRAM
O0
rr7
AND
I0
row0
I1
weRAM
O0
rw0
AND
I0
row1
I1
weRAM
O0
rw1
© 2026 Daniil Khanin · khanin.info · HT-01
60
CANVAS …
24
AND
3×
0
9×
AND
I0
row2
I1
weRAM
O0
rw2
AND
I0
row3
I1
weRAM
O0
rw3
AND
I0
row4
I1
weRAM
O0
rw4
25
AND
3×
0
9×
AND
I0
row5
I1
weRAM
O0
rw5
AND
I0
row6
I1
weRAM
O0
rw6
AND
I0
row7
I1
weRAM
O0
rw7
26
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw0
R
rr0
O0
m0_0
O1
m0_1
O2
m0_2
O3
m0_3
O4
m0_4
O5
m0_5
O6
m0_6
O7
m0_7
© 2026 Daniil Khanin · khanin.info · HT-01
61
CANVAS …
27
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw1
R
rr1
O0
m1_0
O1
m1_1
O2
m1_2
O3
m1_3
O4
m1_4
O5
m1_5
O6
m1_6
O7
m1_7
28
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw2
R
rr2
O0
m2_0
O1
m2_1
O2
m2_2
O3
m2_3
O4
m2_4
O5
m2_5
O6
m2_6
O7
m2_7
29
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw3
R
rr3
O0
m3_0
O1
m3_1
O2
m3_2
O3
m3_3
O4
m3_4
O5
m3_5
O6
m3_6
O7
m3_7
© 2026 Daniil Khanin · khanin.info · HT-01
62
CANVAS …
30
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw4
R
rr4
O0
m4_0
O1
m4_1
O2
m4_2
O3
m4_3
O4
m4_4
O5
m4_5
O6
m4_6
O7
m4_7
31
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw5
R
rr5
O0
m5_0
O1
m5_1
O2
m5_2
O3
m5_3
O4
m5_4
O5
m5_5
O6
m5_6
O7
m5_7
32
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw6
R
rr6
O0
m6_0
O1
m6_1
O2
m6_2
O3
m6_3
O4
m6_4
O5
m6_5
O6
m6_6
O7
m6_7
© 2026 Daniil Khanin · khanin.info · HT-01
63
CANVAS …
33
WORD8
1×
18×
WORD8
D0
acc0
D1
acc1
D2
acc2
D3
acc3
D4
acc4
D5
acc5
D6
acc6
D7
acc7
W
rw7
R
rr7
O0
m7_0
O1
m7_1
O2
m7_2
O3
m7_3
O4
m7_4
O5
m7_5
O6
m7_6
O7
m7_7
34
OR8
1×
1
9×
OR8
A
m0_0
B
m1_0
C
m2_0
D
m3_0
E
m4_0
F
m5_0
G
m6_0
H
m7_0
Y
ram0
35
OR8
1×
1
9×
OR8
A
m0_1
B
m1_1
C
m2_1
D
m3_1
E
m4_1
F
m5_1
G
m6_1
H
m7_1
Y
ram1
© 2026 Daniil Khanin · khanin.info · HT-01
64
CANVAS …
36
OR8
1×
1
9×
OR8
A
m0_2
B
m1_2
C
m2_2
D
m3_2
E
m4_2
F
m5_2
G
m6_2
H
m7_2
Y
ram2
37
OR8
1×
1
9×
OR8
A
m0_3
B
m1_3
C
m2_3
D
m3_3
E
m4_3
F
m5_3
G
m6_3
H
m7_3
Y
ram3
38
OR8
1×
1
9×
OR8
A
m0_4
B
m1_4
C
m2_4
D
m3_4
E
m4_4
F
m5_4
G
m6_4
H
m7_4
Y
ram4
© 2026 Daniil Khanin · khanin.info · HT-01
65
CANVAS …
39
OR8
1×
1
9×
OR8
A
m0_5
B
m1_5
C
m2_5
D
m3_5
E
m4_5
F
m5_5
G
m6_5
H
m7_5
Y
ram5
40
OR8
1×
1
9×
OR8
A
m0_6
B
m1_6
C
m2_6
D
m3_6
E
m4_6
F
m5_6
G
m6_6
H
m7_6
Y
ram6
41
OR8
1×
1
9×
OR8
A
m0_7
B
m1_7
C
m2_7
D
m3_7
E
m4_7
F
m5_7
G
m6_7
H
m7_7
Y
ram7
42
AND
3×
0
9×
AND
I0
row0
I1
selP
O0
pr0
AND
I0
row1
I1
selP
O0
pr1
AND
I0
row2
I1
selP
O0
pr2
© 2026 Daniil Khanin · khanin.info · HT-01
66
CANVAS …
43
AND
3×
0
9×
AND
I0
row3
I1
selP
O0
pr3
AND
I0
row4
I1
selP
O0
pr4
AND
I0
row5
I1
selP
O0
pr5
44
AND
1×
0
2×
7×
AND
I0
row6
I1
selP
O0
pr6
VCC
pb0
VCC
pb1
45
3×
6×
VCC
pb2
VCC
pb3
VCC
pb4
© 2026 Daniil Khanin · khanin.info · HT-01
67
CANVAS …
46
3×
6×
VCC
pb5
VCC
pb6
VCC
pb7
47
NOT
3×
0
6×
NOT
I0
pb0
O0
pq0
NOT
I0
pb1
O0
pq1
NOT
I0
pb2
O0
pq2
48
NOT
3×
0
6×
NOT
I0
pb3
O0
pq3
NOT
I0
pb4
O0
pq4
NOT
I0
pb5
O0
pq5
49
NOT
2×
0
4×
NOT
I0
pb6
O0
pq6
NOT
I0
pb7
O0
pq7
© 2026 Daniil Khanin · khanin.info · HT-01
68
CANVAS …
50
AND
3×
0
9×
AND
I0
try0
I1
selTRY
O0
t0
AND
I0
try1
I1
selTRY
O0
t1
AND
I0
IO
I1
selIO
O0
io0
51
OR4
1×
1
OR3
1×
2
9×
OR4
A
ram0
B
pq0
C
t0
D
io0
Y
din0
OR3
A
ram1
B
pq1
C
t1
Y
din1
52
OR
3×
0
9×
OR
I0
ram2
I1
pq2
O0
din2
OR
I0
ram3
I1
pq3
O0
din3
OR
I0
ram4
I1
pq4
O0
din4
© 2026 Daniil Khanin · khanin.info · HT-01
69
CANVAS …
53
OR
3×
0
9×
OR
I0
ram5
I1
pq5
O0
din5
OR
I0
ram6
I1
pq6
O0
din6
OR
I0
ram7
I1
pq7
O0
din7
54
ROM
256 × 16
Memory
⬆
⬇
0801 0802 0804
0808 0810 0820
0840 0880 E011
03-shift.rom.json
1
2
4
8
128
0
3 × CLK: ST 0 · ADD 0 · JNC
© 2026 Daniil Khanin · khanin.info · HT-01
70
4
Loops and conditions
no new parts: 13 × 11 by repeated addition
kh
HT-01
13 × 11
13 + 13 + … + 13 (11 times)
8b
143
A
© 2026 Daniil Khanin · khanin.info · HT-01
71
CANVAS
1
ROM
256 × 16
Memory
⬆
⬇
0801 0802 0804
0808 0810 0820
0840 0880 E011
04-mul.rom.json
1
RST
1 → 0
8b
12
pc
8b
143
A
© 2026 Daniil Khanin · khanin.info · HT-01
72
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
6
Personal data and PIN
number, PIN and key — in transistors
kh
HT-01
pb7
pb6
pb5
pb4
pb3
pb2
pb1
pb0
pr0
01
pr1
12
pr2
34
pr3
5A
pr4
C3
pr5
17
pr6
8E
account 01
PIN 12 34
key 5A C3 17 8E
0
1×
NOT
1×
0
AND
1×
0
RBIT
2×
1
N
22×
∞
© 2026 Daniil Khanin · khanin.info · HT-01
89
CANVAS
1
0
1×
NOT
1×
0
AND
1×
0
6×
0
FAC
NOT
I0
FAC
O0
nFAC
AND
I0
oST
I1
selTRY
O0
wTRY
2
RBIT
2×
1
10×
RBIT
D
acc0
LD
wTRY
nR
nFAC
CLK
CLK
Q
try0
RBIT
D
acc1
LD
wTRY
nR
nFAC
CLK
CLK
Q
try1
3
N
3×
9×
pb0
GND
G
N
pr0
pb1
GND
G
N
pr1
pb4
GND
G
N
pr1
© 2026 Daniil Khanin · khanin.info · HT-01
90
CANVAS …
4
N
3×
9×
pb2
GND
G
N
pr2
pb4
GND
G
N
pr2
pb5
GND
G
N
pr2
5
N
3×
9×
pb1
GND
G
N
pr3
pb3
GND
G
N
pr3
pb4
GND
G
N
pr3
6
N
3×
9×
pb6
GND
G
N
pr3
pb0
GND
G
N
pr4
pb1
GND
G
N
pr4
© 2026 Daniil Khanin · khanin.info · HT-01
91
CANVAS …
7
N
3×
9×
pb6
GND
G
N
pr4
pb7
GND
G
N
pr4
pb0
GND
G
N
pr5
8
N
3×
9×
pb1
GND
G
N
pr5
pb2
GND
G
N
pr5
pb4
GND
G
N
pr5
9
N
3×
9×
pb1
GND
G
N
pr6
pb2
GND
G
N
pr6
pb3
GND
G
N
pr6
10
N
1×
3×
pb7
GND
G
N
pr6
© 2026 Daniil Khanin · khanin.info · HT-01
92
CANVAS …
11
ROM
256 × 16
Memory
⬆
⬇
0801 0802 0804
0808 0810 0820
0840 0880 E011
06-pin.rom.json
1
RST
1
FAC
1 → 0
59
$3B
0
T7
1
T6
0
T5
0
T4
1
T3
1
T2
1
T1
0
T0
0100 1110 $4E
SEND
SEND
lamp
1
N
0
T7
1
T6
0
T5
1
T4
0
T3
0
T2
0
T1
0
T0
0101 0000 $50
SEND
SEND
lamp
—
P
0
T7
0
T6
0
T5
1
T4
0
T3
0
T2
1
T1
0
T0
0001 0010 $12
SEND
SEND
lamp
—
12
0
T7
0
T6
1
T5
1
T4
0
T3
1
T2
0
T1
0
T0
0011 0100 $34
SEND
SEND
lamp
144
34 → $90
© 2026 Daniil Khanin · khanin.info · HT-01
93
7
The card program
challenge → response: the secret never leaves
kh
HT-01
A5 3C
K
68 F7
L += K · H ^= L · ⟲ 1 × 4
© 2026 Daniil Khanin · khanin.info · HT-01
94
CANVAS
1
ROM
256 × 16
Memory
⬆
⬇
0801 0802 0804
0808 0810 0820
0840 0880 E011
07-card.rom.json
1
RST
1 → 0
59
$3B
0
T7
1
T6
0
T5
0
T4
0
T3
0
T2
0
T1
1
T0
0100 0001 $41
SEND
SEND
lamp
—
A
1
T7
0
T6
1
T5
0
T4
0
T3
1
T2
0
T1
1
T0
1010 0101 $A5
SEND
SEND
lamp
—
A5
0
T7
0
T6
1
T5
1
T4
1
T3
1
T2
0
T1
0
T0
0011 1100 $3C
SEND
SEND
lamp
105
$69: no PIN
… P 12 34 → 144
0
T7
0
T6
1
T5
1
T4
1
T3
1
T2
0
T1
0
T0
0011 1100 $3C
SEND
SEND
lamp
104
A A5 3C → $68
0
T7
1
T6
0
T5
1
T4
0
T3
0
T2
1
T1
0
T0
0101 0010 $52
SEND
SEND
lamp
247
R → $F7
© 2026 Daniil Khanin · khanin.info · HT-01
95
8
The card as a chip
8 legs, a second card, the tester as a chip too
kh
HT-01
0000 0001
0000 0001
CARD
CARD
C1
VCC
C2
RST
C3
CLK
C4
C5
GND
C6
FAC
C7
IO
C8
IN
17×
OUT
12×
CARD2
1×
∞
Ctrl
+
G
CARD
TERM
© 2026 Daniil Khanin · khanin.info · HT-01
96
CANVAS
1
outside: Clock, RST, FAC, the tester, Power, Ground
2
IN
5×
C1 ← VCC
C2 ← RST
C3 ← CLK
C4 ← nc4
C5 ← GND
3
IN
1×
OUT
2×
C6 ← FAC
C7 ← IO
C8 ← nc8
4
Ctrl
+
G
Library
…
Chip N
2×
Library
…
CARD
Enter
CARD
C1
C2
C3
C4
C5
C6
C7
C8
5
CARD
1×
6×
CARD
C1
VCC
C2
RST
C3
CLK
C4
C5
GND
C6
FAC
C7
IO
C8
© 2026 Daniil Khanin · khanin.info · HT-01
97
CANVAS …
1
RST
1
FAC
1 → 0
59
$3B
0
T7
1
T6
0
T5
0
T4
1
T3
1
T2
1
T1
0
T0
0100 1110 $4E
SEND
SEND
lamp
1
N → 1
… P 12 34 → 144 · A A5 3C → 104
0
T7
1
T6
0
T5
1
T4
0
T3
0
T2
1
T1
0
T0
0101 0010 $52
SEND
SEND
lamp
247
R → $F7
6
Library
…
CARD
⧉
Library
…
CARD
CARD2
Enter
copy of the chip
© 2026 Daniil Khanin · khanin.info · HT-01
98
CANVAS …
7
Edit → matrix pr0–pr6 × pb7–pb0
pb7
pb6
pb5
pb4
pb3
pb2
pb1
pb0
pr0
01 → 02
pr1
12 → 43
pr2
34 → 21
pr3
5A → 21
pr4
C3 → 9F
pr5
17 → E4
pr6
8E → 3B
there, keep
remove
add: nmos(pr, pb, GND)
empty
remove 14 · add 15 · keep 8
8
CARD
C1
VCC
C2
RST
C3
CLK
C4
C5
GND
C6
FAC
C7
IO
C8
CARD2
C1
VCC
C2
RST
C3
CLK
C4
C5
GND
C6
FAC
C7
IO
C8
take out CARD — insert CARD2: the same 6 labels on the same legs
9
CARD2
1×
6×
CARD2
C1
VCC
C2
RST
C3
CLK
C4
C5
GND
C6
FAC
C7
IO
C8
© 2026 Daniil Khanin · khanin.info · HT-01
99
CANVAS …
1
RST
1
FAC
1 → 0
59
$3B
0
T7
1
T6
0
T5
0
T4
1
T3
1
T2
1
T1
0
T0
0100 1110 $4E
SEND
SEND
lamp
2
N → 2
… P 43 21 → 144 · A A5 3C → 234 ($EA)
0
T7
1
T6
0
T5
1
T4
0
T3
0
T2
1
T1
0
T0
0101 0010 $52
SEND
SEND
lamp
221
R → $DD
10
switches, SEND, lamps and display stay outside
11
IN
11×
OUT
10×
CLK
RST
SEND
T0
T1
T2
T3
T4
T5
T6
T7
sr0
sr1
sr2
sr3
sr4
sr5
sr6
sr7
lamp
IO
© 2026 Daniil Khanin · khanin.info · HT-01
100
CANVAS …
12
Ctrl
+
G
Library
…
Chip N
2×
Library
…
TERM
Enter
TERM
CLK
RST
SEND
T0
T1
T2
T3
T4
T5
T6
T7
sr0
sr1
sr2
sr3
sr4
sr5
sr6
sr7
lamp
IO
13
TERM
1×
21×
TERM
CLK
CLK
RST
RST
SEND
SEND
T0
T0
T1
T1
T2
T2
T3
T3
T4
T4
T5
T5
T6
T6
T7
T7
sr0
sr0
sr1
sr1
sr2
sr2
sr3
sr3
sr4
sr4
sr5
sr5
sr6
sr6
sr7
sr7
lamp
lamp
IO
IO
© 2026 Daniil Khanin · khanin.info · HT-01
101
Kit parts
how many times you place each part over all the lessons
N
35×
P
11×
9×
VCC
2×
GND
2×
0
22×
19×
ROM
256×16
1×
4b
0
A
3×
Hz
1×
Q
Q
2×
IN
85×
OUT
67×
1917×
© 2026 Daniil Khanin · khanin.info · HT-01
102
Kit chips
you build them yourself: each one is made of the ones before
OR
32×
0
NAND
4×
0
AND
92×
0
NOR
4×
0
NOT
47×
0
XOR
19×
0
SRLatch
1×
1
DLatch
10×
1
MUX2
73×
1
DFF
30×
1
OR4
4×
1
AND4
21×
1
DEC16
1×
1
FA
8×
1
RBIT
21×
1
OR8
9×
1
HA
14×
2
OR3
5×
2
AND3
16×
3
DEC8
1×
3
WORD8
8×
3
CARD
1×
8
CARD2
1×
8
TERM
1×
8
© 2026 Daniil Khanin · khanin.info · HT-01
103
Done!
0000 0001
0000 0001
CARD
A5 3C
68 F7
a card of 6,495 transistors answers the tester's challenge
insert CARD2 — the same program, other transistors, another answer
© 2026 Daniil Khanin · khanin.info · HT-01
104
Copyright
© 2026 Daniil Khanin, khanin.info. All rights reserved.
These instructions, the drawings and circuits are original work.
Reprinting, publishing online, selling or passing it on to others,
in whole or in part, is prohibited without the written permission of the author.
The latest version is at khanin.info.
kh
khanin.info
HT-01
© 2026 Daniil Khanin · khanin.info · HT-01
105