Elara S. Novikova
Iskra-226

TETRIS

Падающие блоки

Alexey Pajitnov, 1984

All seven tetrominoes, a bordered well, a score and a line count, and keys read while the piece is still falling. It is 432 lines across 30 sectors, which makes it the largest program on any disk I wrote, and it replaced two earlier attempts that each got part of the way.

sectors
20-49
source lines
432
pieces
7
keys
4 left, 6 right, 8 rotate, 2 down
The pit, with walls of exclamation marks and a floor of equals signs. Four pieces are down, one is still in the air, and the counters for points and lines stand to the right.
The pit, with walls of exclamation marks and a floor of equals signs. Four pieces are down, one is still in the air, and the counters for points and lines stand to the right.

Run this disk · The image, 256,256 bytes

Why this one matters

Alexey Pajitnov wrote the first version in Moscow in 1984, on an Elektronika 60, and it left the country through a chain of copies nobody was tracking. There is no other program with that shape of history: written inside the system, escaped it, and came back as the thing everyone outside thought of when they thought of Soviet software at all. Putting it on a machine from Kursk is not a joke about that. It is the shortest way to say that this machine and that program are from the same place and the same decade.

What makes it hard on hardware like this is not the rules. It is that the piece has to keep falling while the keyboard is being read, and a BASIC that was decoded from payroll software has no idea that anybody would want that.

What it does

A well with walls drawn as exclamation marks and a floor of forty-two equals signs. Pieces are drawn as pairs of characters, cell by cell, because overwriting one cell at a time is the only way to move something on a screen with no bitmap. The counters read ОЧКОВ and ЛИНИЙ, points and lines, and the end of it says *** ИГРА ОКОНЧЕНА ***. Four keys: 4 goes left, 6 right, 8 rotates, 2 drops.

What it cost the interpreter

Every large constant on these disks has to be assembled from smaller ones, because a numeric literal above 99 is read as a reference to a program line. The two earlier attempts on this well are where that showed up first, and where the cost of redrawing a character cell screen got measured. Neither of those findings went away when the disks did. Key polling is the other one: the routine that reads a key was writing the code into both variable spaces at once, so every comparison against it failed and nothing ever responded. That was found on the snake and fixed there, and this disk is the program that would have been impossible without it.

What this disk is not

This disk was written in 2026. The falling block game is common property in its mechanics and I implemented them; the code in the image is mine, written against a dialect I reconstructed from six recovered sides. Nothing here was excavated. No Soviet games disk has ever surfaced for this machine, and if one ever does it will look nothing like this. There is one thing I owe the reader about this particular image: unlike every other disk here, it has no source file in the repository. I have the image and I can show that an independent parser loads and runs it, and that is a narrower claim than the one I can make about the others.

What I checked

The disk loads and runs under iskra_run.py with keystrokes supplied through key_source. Pieces fall on their own, the four keys move and rotate them, filled lines clear, and the counters advance.

What this does not show

What is tested is the emulator, not the hardware. The image follows the attested format rules; whether a surviving Iskra-226 accepts it can only be shown on a real machine. And unlike the other thirteen disks I wrote, this one has no BASIC source in games-src/, so the round trip from source to image and back is not demonstrated for it.

Where to read more

The source

There is none for this one. Every other disk here was assembled from a file in games-src/, and that file is the proof the format works in both directions. For this disk I have the image and not the source, so the only thing I can show you is that an independent parser loads it and runs it.

I wrote about this at the time

Back to Iskra-226