Elara S. Novikova
Projects
A complete Iskra-226 on a
table in a flat in Almaty, with the screen dark.

In my books I wake the ghosts of the Soviet past. In my code I wake the ghosts in the wires.

The Iskra-226 was a Soviet desktop computer, drawn up in Leningrad between 1974 and 1978 and built at Kursk from the beginning of the eighties. Nobody had ever written an emulator for it. Now somebody has, and you can use it further down this page.

67commits
8interpreter builds
23programs decoded
5,842lines of BASIC
14disks you can run
58%still unknown

Why I did this

Because of one disk. It came to me in 2009, when I was nine, out of a flat in Petropavlovsk-Kamchatsky that was being emptied. I was allowed to keep something and I chose the strangest object in the room: a black square as wide as a sheet of paper, limp in the hand, with two lines of ballpoint on a paper label. My grandmother's writing. Her initials, the year 1989, and underneath, in pencil, не стирать. Do not erase.

I have carried it with me through every move since. For seventeen years it was an object and not a text, which is a distinction I have spent my whole working life on and had never had lying in a drawer.

The room that never emptied

In April I was in Kyiv with it in my bag. I went early, before the school groups, to a room where machines of that generation still stand and a small circle of people keep them running. I did not ask, and then I did not ask again, and by noon there were teenagers on phones between me and the drive.

On the last day I got the next best thing, which turned out to be the better thing. A drive can spin a disk and read the flux off it in ten minutes, and nobody watches that; running a program needs the whole machine and an empty room. So I went home with a raw magnetic flux stream and no idea what was in it. Flux is not sectors. Sectors are not files. Files are not text. Each of those steps is a layer, and I did not have a single one of them.

That is the whole reason this exists. If I could have borrowed a machine for an hour, I would never have written a line of this.

Run it

The emulator below is the same Python that sits in the repository, running in your browser. Pick a disk and press Run. The screen is 80 by 24 in KOI-8, because that is what the machine had. There is also a full screen version with the line printer beside it, which is the only way to watch a payment sheet come off the machine one character at a time.

ИСКРА·226
МИНПРИБОР СССР · ПО «СЧЁТМАШ» г.КУРСК
ТУ 25-01.1206-81 · ЗАВ.№ 8804712
НГМД·A
B

The Russian here is byte for byte what is on the disk. I decoded it and I left it alone. Anything else you put in the language box is a translation made now, in 2026, and this machine never spoke a word of it. The numbers, the dates, the program names and the plate on the case stay as they are, because those are what the thing is called, not what it says to you. The menus are laid out by column, so a label that will not fit its old width comes back shortened rather than pushing the numbers out of line.

This runs the software, not the CPU. The interpreter firmware is not executed, and the reason is on the project page. The arrow keys and the number pad drive SNAKE and TETRIS; everything else answers with the text field. Nothing you do here leaves your browser, except the screen when you ask for it in another language.

What it can do

It loads a disk image, decodes the tokenized BASIC 02 program on it and executes it: PRINT with AT and TAB, INPUT, assignment, IF and its relations, GOTO, GOSUB and RETURN, ON..GOTO, REM, STOP, string and numeric variables, key polling, and chain-loading between program segments. All 23 programs on the two recovered application sides load and run without a crash. I counted them off the status byte in the catalog rather than by eye, which is how the number came down from 24: one of those entries is not a program at all, it is a data file.

There are six recovered sides in total and I have written up every one of them: what is on it, sector by sector, who wrote it and when as far as the bytes will say, where the bytes came from, and what is still unexplained. That is a separate set of pages, because this one is the story and those are the evidence.

The six sides of 880.rar, one page each, with the boot slot tables read straight out of the images  ·  The machine itself, who built it and who wrote the manuals

What it does not do is execute the CPU. The interpreter firmware is not run. I will come back to that, because the gap has a shape and I would rather draw it than hide it.

The proof

The dispatcher of SPTU-132, drawn from the disk bytes. The banner reads 01.09.88.
The dispatcher of SPTU-132, drawn from the disk bytes. The banner reads 01.09.88.
Payment sheet No. 2, printed by the 1989 program from figures I typed in. 212.30 roubles net.
Payment sheet No. 2, printed by the 1989 program from figures I typed in. 212.30 roubles net.
The calculation segment, mid-run.
The calculation segment, mid-run.

The second one is the one I sat and looked at for a while. It is payment sheet number two, computed by software that three people wrote at a vocational school in 1989 and printed by a machine that has not existed for thirty years. 144.50 and 105.00 gross, 249.50 accrued, 37.20 withheld, 212.30 net. I checked every one of those against a hand calculation before I let myself believe it.

It is not a surviving document, and I want to be exact about that. No sheet came down to us. The program is the one from 1989 and it is unaltered; the figures on it are ones I typed in to give it something to work on, and the three names in the left column are three I made up for the same reason. What the sheet shows is that the arithmetic still runs, which is the smaller claim and the true one.

The software can also read its rows out of a data file that sits on the same side of the same disk, and what is in there is presumably a school's student records from 1989. I have not decoded it and I am not going to.

Then I wrote my own

Once a machine runs, the first thing you want is to make it do something it has not done before. Reading a format can be wrong without anyone noticing; writing one that an independent parser then executes cannot. So there is an assembler, and there are fourteen disks that were not recovered from anywhere. They are mine, written in 2026, and the mechanics of the older titles are common property.

LIFEЖизнь КонвеяConway / Gardner, 1970Generation six of Conway's rules on a ten by eight board, a one for every living cell.LUNARПосадка на ЛунуJim Storer, 1969The seventeenth turn, with the last altitude, speed and fuel reading above the touchdown.HAMURAХаммурапиDyment / Ahl, 1968The second year of the reign: a hectare costs 22, the year asks its three questions, the harvest comes in at 4 to the hectare and 55 people are dead of hunger.WUMPUSОхота на ВумпусаGregory Yob, 1973Four moves through the caves. In cave 8 the smell of the wumpus comes up one of the tunnels, the arrow goes into cave 1, and that is the end of the hunt.BAGELSБагельDavid Ahl, 1973Three guesses at a three digit number, and all three kinds of answer the program has: bagel for a guess with nothing in it, the fermi and pico counts, and the line that ends it.DEPTHГлубинная бомбаDavid Ahl, 1973One salvo into a cube eight by eight by eight, and the three corrections that come back: further east, further south, deeper.STARTRKЗвездный путьMike Mayfield, 1971A warp jump out of the empty quadrant 28 into 24, where three klingons are.UGADAYУгадай числоmineThe machine has a number between 1 and 99 and answers every guess with larger or smaller.TABLITТаблица умноженияmineThe seven times table, all nine questions and the closing line.PLANПлановое хозяйствоmineThe first year of the plan: a hundred people, 2800 grain, and the two questions.ARTILАртиллерийская дуэльmineA shot at 30 degrees with power 40 falls 143 short, and the program says by how much before it asks for the next angle.TETRISПадающие блокиmineThe pit, with walls of exclamation marks and a floor of equals signs.SNAKEЗмейкаmineThe step the second apple is eaten on, with the score at 2 and the next apple already placed at 2, 2.CHATТерминал связиmineThe terminal writes a question to line 015 and prints what comes back.

They earned their place by breaking things. Payroll software needs no randomness and no key polling, so the corpus never exercised either, and four errors in the interpreter had been sitting there quietly: a minus sign disambiguated the wrong way, a return instruction confused with a load, an unattested range of numeric literals, and a key code written into two variable spaces at once so that every comparison against it failed. The games found all four. A payroll ledger never would have.

What is solved

Byte order. The boot vector table. Fixed one-word instruction length. All four transfer types. Computed goto with inline address tables. The device polling loop at word 0x01B7. The message table. The keyword and descriptor table at word 0x0B67, with its 86 entries. The complete on-disk file and token format, in both directions.

Also, and this one was a correction rather than a discovery: a boot side is not one interpreter written four times over. It is four slots, and the slots hold different builds. Averaging them, which is what I did for three weeks, produces a version of the machine that never existed. Taken apart properly, the three boot sides give eight distinct interpreter builds spanning 1981 to 1986, each byte-identical wherever it repeats. One of them is exactly the revision the database suite says it was written for.

What is not

The data operations. 49 arithmetic and logic instructions, and the D-class addressing modes. These are not derivable from the binary by structural or statistical means, and I spent a month proving that to myself the expensive way, asking what the microcode did before establishing that it was not microcode.

About 58 percent of the CPU level is unknown. What is missing physically is the machine's own ROM, which my three sources size at 8, at 16 and at 24 KB and which I am not going to pretend is settled, together with a microinstruction store of 2K words of 16 bits. Neither was ever on a disk, because neither was ever meant to be. Closing it needs the processor's техническое описание, or a dump from surviving hardware.

If you have either, I would like to hear from you.

The people in the material

I wrote about this at the time

L. N. Markelova wrote the operating manual in 1987. I found her on a title page in February 2025 and copied the name into a notebook by hand, which is a thing I do when I do not trust a screen to keep something.

For a year I went around saying she was the only woman named anywhere in the record of this machine. She is not. A catalog search turns up at least nine, and I was wrong in a way that is worth more than being right would have been, because of what the nine have in common: manuals, course books, institute recommendations. The men designed the machine and collected the prizes. The women wrote down how to use it. The one place that pattern breaks is on these disks, where Muchkina L. V. is not documenting somebody else's program. She is one of the three people who wrote it.

The men in that sentence have names, and for a long time I left them out, which turned a comparison into an accusation. Valentin Yevgenyevich Kuznetsov was the chief designer, at the Leningrad ГСКТБ «Счётмаш», where he had led the Iskra-125 and the Iskra-1256 from 1970 to 1978. In 1985 the State Prize of the USSR went to a group of developers and managers for the family of computing complexes built on this machine, and two of them are named in the record: V. I. Shuteev and F. A. Bubalo. Put those beside the title pages and the division of the work is plain enough. The design and the prize sit on one side, the manuals and the course books on the other, and nobody had to decide that for it to come out that way every time.

The database suite carries its own origin note, encoded inside the program: developed in Riga at the Gosplan planning institute of the Latvian SSR, department ПОМ, under Jaugietis A. V.; developed further in Leningrad at Lensistemotechnika, department 215, under Levitan L. I. Soviet software genealogy with real names in it is not common, and nobody put it there for posterity. Somebody put it there because that is what you do when you take over someone else's code.

The payroll system was written by Gorenburgov M. A., Vintskevich V. V. and Muchkina L. V., and dated 4 April 1989.

And the disks exist at all because of two people I have never spoken to. vazman owned them and gave them up; dk_spb read them in 2016 and put the images online. How he read them is written down nowhere I can find, and I have given that question a page of its own rather than an answer. The link died. A copy survived in a web archive snapshot and that is the only reason any of this happened. If you mirror this, mirror their names with it.

Everything is here

The code, the disk images, the eight firmware builds, 5,842 decoded lines of somebody else's software, the manuals, every finding and every hypothesis I got wrong with the criterion that killed it.

  • The repository, MIT for the code and CC BY for the prose
  • The machine, where it was drawn up and built, what it cost, and the people whose names are on the manuals
  • The six recovered sides, one page per disk, everything I know about each
  • wang2200.org, Jim Battle's collection, where the manuals came from

Except one thing

An 8-inch floppy disk
held in both hands, black jacket, a paper label with two lines of handwriting
on it.
The label is my grandmother's writing. Her initials, the year, and underneath, in pencil, do not erase.

There is a seventh image. It is not here and it will not be.

I read my grandmother's disk on 7 August 2026, thirty-seven years after she wrote the label and seventeen after it came to me. I know what is on it now. That is the entire sentence, and it is the only one I am going to write.

I have spent four books arguing that archives belong to everyone and that a state which keeps a file closed is telling you what it is ashamed of. I know exactly what I am doing here. The disk was not addressed to the public, and whatever else I am, I am not going to be the person who publishes it.