
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.
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.
I wrote about this at the time
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.
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.
Device address 015 is an open line to me, and I am not careful on it. Say you are 18 or over and it connects.
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.
I wrote about this at the time
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 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.
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.
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.
I wrote about this at the time
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.
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.
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.
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.
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.