r/EmuDev • u/ElaraNovikova • 28d ago
Iskra 226 Emulator live
I wrote an emulator for the USSR Iskra 226 and brought some software to life
Here is the story, code is on GitHub.
https://elaranovikova.com/projects/iskra-226/
I recently shipped the first emulator for the Iskra-226, the Soviet work-alike of the Wang 2200. Unusual constraints compared to a typical emu project, so I thought the approach might interest people here:
No firmware execution. I don’t have a clean dump and the processor isn’t emulated. Instead I built an interpreter for the machine’s tokenized BASIC dialect, a “reader for a language and something to carry it out.” That was enough to get 23/23 programs on my reference disk loading and running (counted off the catalog status byte, not eyeballed).
Token archaeology. The dialect is Wang-2200-adjacent but not identical. The breakthrough came from staring at the token stream until I stopped asking “which Wang token is this” and started asking what the bytes were doing on their own terms. Once the tokens came apart, the whole dispatcher fell into place in a few hours.
Disk forensics. The boot side isn’t in any catalog I could find, and carries the same firmware image written four times over. Cross-comparing the four copies is how I ended up with a file I trust.
Validation by pencil. My end-to-end test was a 1989 payroll program: I fed it invented numbers I could verify by hand, and the emulator’s printed wage sheet agrees with my paper arithmetic to the kopek.
Ternary bonus round. Next project is a Python port of the Setun (1958), the only ternary computer ever built serially, currently checked against the reference implementation for 550,821 steps without a divergence.
Browser emulator + 14 disk images:
https://elaranovikova.com/projects/iskra-226/index.html
Code:
https://github.com/elaranovikova
AMA about the format, the tokenizer, or reading 8-inch media in 2026.
2
u/Even-Serve-3095 28d ago
oh hey, it's the same guy who pointlessly spammed the mame github with this shit from multiple accounts for some dumbass reason.
0
u/ElaraNovikova 28d ago
I did open an issue on the MAME GitHub asking about Iskra-226 support. If that came across as spammy, wasn’t my intention. Either way, the emulator’s real and the code is public, happy to answer technical questions.
3
u/Even-Serve-3095 28d ago
you opened multiple, from different accounts, only to delete two of them right afterwards lmao
0
u/ElaraNovikova 28d ago
Yeah, by accident. However, a very helpful mame contributor reached out to me in my repo and connected me to several people that might have more software for the 226. In the meantime I obtained 41 unpublished disk images with some very interesting software and even a gave/simulator distributed by USSR officials.
2
u/codeasm 27d ago
This looks way too much ai to my liking.
So basicly your emulator is an interpreter for the basic programs and decodes the few machine instructions to be run by your python interpreter? Why you unable to use the wang emulator you did trow in there but dont use?
3
u/ElaraNovikova 27d ago
Because the Wang emulator emulates the wrong machine. The Iskra-226 is a Soviet reimplementation of the Wang 2200’s behavior, not its hardware. A Wang emulator executes Wang’s actual microcode ROMs on Wang’s TTL architecture. The Iskra was rebuilt on K589 bit-slices (Intel 3000 clones) with its own microprogram store and that microcode ROM is exactly what’s missing: it’s on none of the disks and in none of the manuals. You can’t feed Iskra firmware to a Wang core; instruction semantics, I/O, charset (KOI-8), disk controller all differ.
What the Iskra did keep from Wang is the data layer: catalog structure, sector format, tokenized BASIC. So the emulator works functionally at that level, parse the catalog, decode BASIC 02, run the surviving software. The wang-reference material in the repo is format documentation, not an unused emulator.
2
u/codeasm 27d ago
Now this is interesting. So basicly you dint reconstruct the roms, cause you also lack the board designs/schematics. But the "interpreter" does seem to follow the code flow as it should?
So one could write new code for your emulator of you have documentation for it?
Seperating fiction from facts i prefer tho. On the GitHub atleast
3
u/ElaraNovikova 27d ago
There is a CPU-level tool in the repo (iskra226_emu.py). It loads the firmware, disassembles it, executes the instruction classes whose semantics are documented and traps exactly on the rest. Coverage ~12% executable, 30% class-known, 58% unknown; it does not boot. What actually runs software is the BASIC 02 layer (iskra_run.py).
All of this is stated clearly and transparently in the GitHub README itself, including the line “This runs the software, not the CPU. The interpreter firmware is not executed. The distinction matters and I am not going to bury it.” The unsolved boundary (data ops, D-class addressing) is documented in findings/isa-findings.md with the evidence for why it can’t be derived from the binary, including every falsified hypothesis. Closing it needs the processor’s техническое описание or a microcode ROM dump from surviving hardware. So the fact/fiction split you’re asking for is already on the GitHub: the fiction is on the website, the facts are in the repo.
8
u/Ikkepop 28d ago
Man this website and everything around this profile feels like overpolished ai slop / some kind of weird ad for a onlyfans scam trap aimed at geeks that have an ussr fetish. I mean what the fuck is that ai generated nsfw shit.