Elara S. Novikova
Iskra-226

PLAN

Плановое хозяйство

My own, 2026, in the line of the early BASIC resource games

Ten years of grain. Every year you split what is in the barn between food and seed, twenty units feed one person, every unit sown comes back threefold. Feed the village short and the population drops to the number the ration actually covered, and it stays there. Twenty-six lines, two sectors, and no weather to blame it on.

sectors
20-21
source lines
26
years
10
harvest
sown grain x3
The first year of the plan: a hundred people, 2800 grain, and the two questions. They were fed 1600 instead of 2000 and eighty of them are left.
The first year of the plan: a hundred people, 2800 grain, and the two questions. They were fed 1600 instead of 2000 and eighty of them are left.

Run this disk · The image, 256,256 bytes

A planning game on a planning machine

The point of this one is where it runs. The largest body of software recovered from this machine is BAM, a database and reporting suite that came out of the Gosplan planning institute of the Latvian SSR in Riga and was developed further in Leningrad. Nineteen programs, roughly 4,650 lines: classifiers, indicators, a form designer, a query subsystem, import from magnetic tape. All of it built so that a plan could be filled in, checked and reported upward. Putting a ten-year planning game on the same machine family required no irony from me. It was already sitting in the catalog next door.

The year loop

Population starts at 100, the barn at 2,800. Each year asks two numbers: grain for food, at twenty per person, and hectares to sow, one unit of grain to the hectare. Both come off the barn, the sown hectares return at three to one, and then the ration is checked. If it covers fewer people than are alive, the population falls to that number and ГОЛОД! prints. There is no plague, no land market, no bad year. What is left is the arithmetic of a fixed point: sow enough that the next harvest carries both the eaters and the next sowing, and hold it for a decade.

What it cost the interpreter

PLAN was among the first three programs I assembled rather than only read, and that direction is the harder one. A decoder can be wrong and still produce something plausible. An encoder cannot: emit the wrong bytes and an independently written parser stops at once. That test caught a mistake sitting directly under this game's yearly check. I had the relation tokens for greater than and less than as D7 and D6. The parser table in the corpus says D4 and CF. The exit condition of the whole ten-year loop is one such comparison, and until the round trip ran it was resting on two guessed bytes.

Not a find

No Soviet games disk was recovered, here or anywhere in this project. This one was written in 2026, in a dialect I reconstructed from payroll and planning software, and assembled into an image the emulator loads like any original. The resource game as a form is common property and goes back to the BASIC teaching programs of the late sixties; none of that code is reprinted here, and the Russian in the strings is mine. What is genuinely old is the container: header in sector 0, one catalog entry, program body from sector 20, the way an application disk for the Iskra-226 looked.

What I checked

PLAN: yearly cycle, harvest, population loss on famine. The single disk was loaded, started and played to an outcome.

What this does not show

What is tested is the emulator, not the hardware. The bytes follow the attested rules, but only a test on a surviving Iskra-226 could show whether real firmware accepts them. The game itself has no chance in it either: the harvest factor is flat at three and nothing is drawn at random, so a plan that works once works every time it is repeated.

Where to read more

The source

PLAN.bas, 26 lines, assembled onto the image with iskra_asm.py

26 lines of BASIC
10 REM PLAN GAME
20 PRINT "*** ПЛАНОВОЕ ХОЗЯЙСТВО ***"
30 PRINT "ВЫ РУКОВОДИТЕ ХОЗЯЙСТВОМ 10 ЛЕТ"
40 V01 = 100
50 V02 = 2800
60 V04 = 1
80 PRINT "--- ГОД";V04
90 PRINT "НАСЕЛЕНИЕ";V01;" ЗЕРНО";V02
120 PRINT "ЗЕРНА НА ЕДУ (20 НА ЧЕЛОВЕКА)"
130 INPUT V05
140 PRINT "ГЕКТАРОВ ЗАСЕЯТЬ (1 ЗЕРНО = 1 ГА)"
150 INPUT V06
160 V02 = V02 - V05
170 V02 = V02 - V06
180 V07 = V06 * 3
190 V02 = V02 + V07
200 V08 = V05 / 20
210 IF V08 > V01 GOTO 240
220 V01 = V08
230 PRINT "ГОЛОД! ЛЮДЕЙ ОСТАЛОСЬ";V01
240 V04 = V04 + 1
250 IF V04 > 10 GOTO 270
260 GOTO 80
270 PRINT "*** КОНЕЦ ПЛАНА ***"
280 PRINT "НАСЕЛЕНИЕ";V01;" ЗЕРНО";V02
300 END

Back to Iskra-226