Reverse-engineered, commented Intel 8080 source of АЛМАЗ1, a 1989 arcade-puzzle game for the Soviet home computers Радио-86РК and Микроша. The original author is А. Бытко, Riga, 22 April 1989.
| Splash screen | Gameplay |
|---|---|
![]() |
![]() |
https://rk86.ru/beta/index.html?run=ALIAZ1.RK
This project exists for study, preservation, and archaeology of early Soviet microcomputer game programming. The original game was widely distributed on cassette tape in the late 1980s and has been publicly circulating on RK-86 / Микроша enthusiast sites for decades, but no modern annotated source was previously available.
- Original game © А. Бытко, 1989. All rights to the game and to the
tape image in
tape/ALIAZ1.RKremain with the original author. The 1989-era "т.282-6-5-6" signature left in the binary is preserved verbatim and is visible on the splash screen. - This repository's disassembly, annotations, labels, comments, and
tooling are © 2026 Alexander Demin, released under the MIT license
(see
LICENSE). The license covers the added work only — it does not grant rights in the underlying 1989 game. - The project aims at faithful documentation of an existing artifact,
not at producing a derivative work or a new game.
just civerifies that the committed source assembles byte-exact back to the original tape, so the representation is mechanical and lossless.
If you are (or know) the original author and would prefer different handling of this material, please open an issue.
| Path | Contents |
|---|---|
aliaz1.asm |
Commented 8080 source. Builds byte-exact to tape/ALIAZ1.RK. |
tape/ALIAZ1.RK |
Original RK-format tape image (17552 B). |
splash.txt |
Text rendering of the intro/help screen — see below. |
rooms/level_{1..7}.txt |
Text renderings of the seven game levels. |
disasm.py |
Minimal linear 8080 disassembler, asm8080-compatible output. |
Justfile |
just ci rebuilds and diffs the tape image. |
CLAUDE.md |
In-depth reverse-engineering notes (hardware map, variable roles, idioms, conventions). |
just ciThis runs:
bunx asm8080 --split -l --format rk --trailer-padding 1 aliaz1.asm
diff tape/ALIAZ1.RK aliaz1.rk # must be emptyThe --trailer-padding 1 is required: the original tape has a single
00h padding byte between the payload and the E6 cs_hi cs_lo checksum
trailer. Assembler: begoon/asm8080 via
bunx asm8080.
As part of understanding the binary, the following assets were extracted directly from the original code and data and saved as plain-text renderings. They are produced by walking the same bytes the game itself sends to video RAM, decoding control codes and block-graphic glyphs, and laying them out at the screen coordinates the game uses. No emulator or screen-capture was involved.
Contents of splash_data (offset 055Bh, 1954 bytes), streamed to
video memory starting at row 5, col 8 by copy_splash. Shows the
"АЛМАЗ1" block-graphics logo, the gameplay legend ("ДОРОГОЙ АЛМАЗ",
"ЭТО ДАЕТ ДОПОЛНИТЕЛЬНОЕ ВРЕМЯ", the L/J key mechanics, exit
arrow), and the author's signature line.
The levels are stored as raw video-memory snapshots inside the ROM image, not as a tile grid. Each level is exactly 1954 bytes long (same size as the splash) and lives at:
| Level | Offset | On-screen title (decoded) |
|---|---|---|
level_1 |
0CFDh |
(intro room with the inline legend) |
level_2 |
149Fh |
"2-АЯ КОМНАТА…ДОВОЛЬНО-ТАКИ ТРУДНАЯ" |
level_3 |
1C41h |
"3-Я КОМНАТА…СЛОЖНАЯ" |
level_4 |
23E3h |
"ВЫХОД ИЗ ДОМА…С ЭЛЕМЕНТАМИ ФАНТАСТИКИ" |
level_5 |
2B85h |
"ЗДЕСЬ ВСЕ - ОБМАН" |
level_6 |
3327h |
"КОПИ ЦАРЯ СОЛОМОНА" |
level_7 |
3AC9h |
"ЭТО ПОСЛЕДНЯЯ КОМНАТА, ЗА НЕЙ ИДЕТ ПЕРВАЯ…" |
draw_level (at 0483h) streams the current level's bytes to the same
destination the splash uses; level_ptr (RAM slot at 009Fh) advances
one whole level each call, and handle_esc resets it back to level_1
every seven keypresses so the game cycles.
Because levels are video-memory dumps, any Cyrillic text the player
sees on a level ("ВОЗЬМИ КЛЮЧИ", "УБИЙЦА ВРЕМЕНИ", "ПТИЧКА", "ЧЕРЕП",
"ВЫХОД", etc.) is literally embedded KOI-7 N2 bytes inside the level
blob — no string table, no loader. You can see each of those strings
in the rendered level_*.txt files at the exact column and row the
game draws them.
- Radio-86RK programmer's reference. RK86.md — memory map, peripherals, keyboard matrix, monitor jump-table, character set (KOI-7 N2), control codes, tape format, idioms.
- Mikrosha (Микроша) reference. MIKROSHA.md — Mikrosha's different peripheral map (КР580ВИ53 timer at D800h, etc.), the key to understanding this binary's hardware accesses.
- RK-86 Monitor ROM source. RK86 ROM Monitor — the 2 KB BIOS this game calls through (online).
- Online RK-86 emulator. rk86.ru — full implementation of the hardware in JavaScript, including tape I/O, video, keyboard, and loadable-on-URL support.
- The Riga phone number in the binary's signature ("т. 282-6-5-6") hints at the author's contact in 1989 — long since outdated, preserved only as provenance.
CLAUDE.md contains the full reverse-engineering notes: the code/data
region map, every named subroutine and RAM variable with its initial
value and role, the Mikrosha-specific I/O, the putc-hook trampoline,
the KOI-7 N2 Cyrillic encoding, and the conventions used throughout
aliaz1.asm.

