Звездный путь
Mike Mayfield, 1971
Mike Mayfield wrote this on a Sigma 7 in 1971, and by the middle of the decade it had been carried onto nearly every machine that had a BASIC and a terminal. On a lot of them it was the reason anyone wanted terminal time at all. Sixty-four quadrants, thirty stardates, and a Klingon count you have to bring to zero.

Run this disk · The image, 256,256 bytes
Mayfield wrote it in 1971 on a Sigma 7, and it went on to be the most ported game of the decade. It traveled the way software traveled then: by listing, by tape, by somebody typing it in again on a different machine and repairing whatever refused to run. On plenty of those machines it was the first reason anyone wanted an account at all. A generation worked out from games like this one that a computer does something other than arithmetic, and Star Trek was the loudest of them by a distance.
It reached this machine too, and I did not know that when I started. People who used an Iskra-226 remember a game on it called «Клинг атакует!», the Klingon attacks, and they remember a line it printed when you took a hit: «Радар поврежден, продолжайте на рулях». Radar damaged, carry on by hand. No copy of it exists, nobody kept a listing, and mine is not a version of it, because there is nothing left to work from. What that record settles is only this much: somebody sat at one of these machines and wrote Klingons for it, and wrote them well enough that a phrase outlived the software by forty years.
Sixty-four quadrants on a flat index from 1 to 64, warp as a jump to any of them for a hundred units of energy, phasers, photon torpedoes, a long range scan of the four neighbors, and starbases that refuel and rearm. What is missing: there is no sector grid inside a quadrant, so there is no navigating around stars and no aiming a torpedo along a course. Phasers work on a threshold, three hundred units or more destroys, instead of falling off with distance. That is a smaller game than Mayfield's, and I would rather write it here than have someone discover it.
The ship starts with 3000 units of energy and I could not write 3000. Short numeric literals in this format cover 0 to 99, and the two-byte form is read by the interpreter as a line reference instead, so large constants have to be assembled out of small ones rather than stated. The energy is therefore set in two steps, and set again at every starbase that refuels you. The code shows the gap instead of hiding it. Limits like this one only appear when you write for the machine rather than reading what other people wrote for it.
Nobody recovered this disk. I built it in 2026, and the only old thing on it is the shape of the game. Mayfield's mechanic is common property, this Russian implementation is not his and not anyone else's from that period, and no Soviet Star Trek disk has ever surfaced. If one does, it will look nothing like mine. The warning is on every page of this collection on purpose, because a fabricated artifact that gets quoted as evidence would poison the parts of this work that are real.
STARTRK, warp into the enemy quadrant, Klingon attack with damage, phaser fire, counter 3 to 2 to 1, plausible energy drain.
This is a compact version: 64 quadrants without sector detail, and phasers with a threshold rather than falloff with distance. The seed is fixed at 37, because no clock or timer atom is attested, so the same galaxy comes up every time you boot the disk. What is tested is the emulator, not the hardware; whether a surviving Iskra-226 would accept these bytes is unanswered.
STARTREK.bas, 131 lines, assembled onto the image with iskra_asm.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
10 REM STAR TREK 20 PRINT "*** ЗВЕЗДНЫЙ ПУТЬ ***" 30 PRINT "УНИЧТОЖЬТЕ КЛИНГОНОВ ЗА 30 ЗВ.ДНЕЙ." 40 V50 = 37 50 V05 = 0 60 FOR V30 = 1 TO 64 70 A40(V30) = 0 80 A41(V30) = 0 90 NEXT V30 100 FOR V30 = 1 TO 64 110 GOSUB 900 120 IF V50 > 82 GOTO 130 125 GOTO 150 130 V61 = V50 / 34 131 GOSUB 950 132 A40(V30) = V60 + 1 133 V05 = V05 + V60 134 V05 = V05 + 1 150 GOSUB 900 160 IF V50 > 90 GOTO 170 165 GOTO 180 170 A41(V30) = 1 180 NEXT V30 190 IF V05 < 3 GOTO 40 200 V01 = 28 210 V02 = 30 211 V02 = V02 * 100 220 V03 = 10 230 V04 = 0 240 PRINT "КЛИНГОНОВ ВСЕГО:";V05 300 V04 = V04 + 1 310 IF V04 > 30 GOTO 800 320 IF V05 < 1 GOTO 850 330 IF V02 < 1 GOTO 820 340 V06 = A40(V01) 350 PRINT "--- ЗВ.ДЕНЬ";V04;" КВАДРАНТ";V01 360 PRINT "ЭНЕРГИЯ";V02;" ТОРПЕД";V03;" КЛИНГОНОВ ЗДЕСЬ";V06 370 IF A41(V01) = 1 GOTO 375 371 GOTO 380 375 PRINT "ЗДЕСЬ БАЗА - ДОЗАПРАВКА" 376 V02 = 30 377 V02 = V02 * 100 378 V03 = 10 380 PRINT "1-ВАРП 2-ФАЗЕРЫ 3-ТОРПЕДА 4-СКАН" 390 INPUT V07 400 IF V07 = 1 GOTO 500 410 IF V07 = 2 GOTO 550 420 IF V07 = 3 GOTO 600 430 IF V07 = 4 GOTO 650 440 GOTO 380 500 PRINT "КВАДРАНТ (1-64)" 510 INPUT V08 520 IF V08 < 1 GOTO 500 521 IF V08 > 64 GOTO 500 530 V01 = V08 535 V02 = V02 - 100 540 GOTO 700 550 IF V06 < 1 GOTO 555 551 GOTO 560 555 PRINT "НЕТ ЦЕЛЕЙ." 556 GOTO 380 560 PRINT "МОЩНОСТЬ ФАЗЕРОВ" 570 INPUT V09 580 IF V09 > V02 GOTO 560 585 V02 = V02 - V09 590 IF V09 < 300 GOTO 595 591 V06 = V06 - 1 592 V05 = V05 - 1 593 A40(V01) = V06 594 PRINT "*** КЛИНГОН УНИЧТОЖЕН ***" 595 GOTO 700 600 IF V03 < 1 GOTO 605 601 GOTO 610 605 PRINT "ТОРПЕД НЕТ." 606 GOTO 380 610 V03 = V03 - 1 615 IF V06 < 1 GOTO 620 616 GOTO 625 620 PRINT "ТОРПЕДА УШЛА В ПУСТОТУ." 621 GOTO 700 625 GOSUB 900 630 IF V50 > 30 GOTO 635 631 PRINT "ПРОМАХ!" 632 GOTO 700 635 V06 = V06 - 1 636 V05 = V05 - 1 637 A40(V01) = V06 638 PRINT "*** ПОПАДАНИЕ! КЛИНГОН УНИЧТОЖЕН ***" 639 GOTO 700 650 PRINT "ДАЛЬНИЙ СКАН - СОСЕДНИЕ КВАДРАНТЫ:" 655 V20 = V01 - 1 656 IF V20 < 1 GOTO 660 657 PRINT "КВ";V20;" КЛИНГОНОВ";A40(V20) 660 V21 = V01 + 1 661 IF V21 > 64 GOTO 665 662 PRINT "КВ";V21;" КЛИНГОНОВ";A40(V21) 665 V22 = V01 - 8 666 IF V22 < 1 GOTO 670 667 PRINT "КВ";V22;" КЛИНГОНОВ";A40(V22) 670 V23 = V01 + 8 671 IF V23 > 64 GOTO 675 672 PRINT "КВ";V23;" КЛИНГОНОВ";A40(V23) 675 GOTO 380 700 V06 = A40(V01) 710 IF V06 < 1 GOTO 300 720 GOSUB 900 730 V61 = V50 / 2 731 GOSUB 950 732 V24 = V60 * V06 733 V02 = V02 - V24 740 PRINT "КЛИНГОНЫ АТАКУЮТ! УРОН";V24 750 GOTO 300 800 PRINT "*** ВРЕМЯ ВЫШЛО ***" 810 GOTO 860 820 PRINT "*** ЭНЕРГИЯ ИСЧЕРПАНА - КОРАБЛЬ ПОГИБ ***" 830 GOTO 860 850 PRINT "*** ВСЕ КЛИНГОНЫ УНИЧТОЖЕНЫ! ПОБЕДА! ***" 855 PRINT "ЗВ.ДНЕЙ ПОТРАЧЕНО:";V04 860 END 900 V50 = V50 * 21 910 V50 = V50 + 13 920 IF V50 < 100 GOTO 940 930 V50 = V50 - 100 935 GOTO 920 940 RETURN 950 V60 = 0 960 IF V61 < 1 GOTO 990 970 V60 = V60 + 1 980 V61 = V61 - 1 985 GOTO 960 990 RETURN