Гравилёт XXI


Главная / ЭКВМ / Программы для ЭКВМ / Игры

Автор программы: paul-161.

Опубликовано: http://community.livejournal.com/mk_152/45235.html


Всем доброго времени!

Ну вот, кажется, и достигнут апогей космической программы на ЭКВМ. 12 января 2012 года состоялась первая межпланетная экспедиция к Меркурию на космическом корабле с гравитационным двигателем, впервые открытом в мае 1987 года Клубом электронных игр на страницах журнала "Техника - молодёжи".

Краткий отчет об экспедиции и её итогах - ниже.

А пока - описание корабля, на котором она состоялась.

Программа "Гравилёт-XXI" имеет два режима работы, которые предлагаются пилоту после запуска (В/О С/П).

С версии 1.1 возможно также сохранение и восстановление состояния программы. Используется файл десятичных данных Grav главного каталога внутреннего диска.

Гравилёт - выбор локации

I. Исследование окрестностей пульсара (нейтронной звезды)

После описанного в "ТМ" первого случайного полёта Коршунов и Перепёлкин, разумеется, начали исследование "своей" системы, в которой, помимо нейтронной звезды, были обнаружены несколько вращающихся вокруг неё малых безатмосферных планет радиусом от 100 до 1000 км. Все орбиты планет находятся между границей опасного рентгеновского излучения пульсара (см. ниже) и орбитой базы (1 миллион километров от центра звезды). На каждой из планет находится какой-либо ценный металл - Медь, Титан, Серебро, Золото или Платина. На борту гравилёта исследователи обнаружили, кроме пульта управления, резервуаров с кислородом и бортового компьютера, хранилище для собранных образцов, которые специальный автоматический зонд пытается получить при приближении к поверхности планеты менее, чем на 1000 км (чем ближе, тем выше вероятность успешного сбора образца).

Программа имеет два режима индикации. Полёт начинается в режиме "Планета", переключение режимов производится клавишей "ВП". При работе программы на дисплее высвечиваются :

Гравилёт - начало полёта

1) DORB - расстояние до орбиты выбранной планеты

2) в режиме "Система": ANGL - угловое отклонение корабля от оси звезда-планета

в режиме "Планета": DHOR - расстояние вдоль орбиты до центра планеты

3) DPLN - расстояние до поверхности выбранной планеты

Гравилёт - режим Планета

4) в режиме "Система": DSTR - расстояние до центра звезды

в режиме "Планета": RPLN - радиус выбранной планеты

5) трансверсальная скорость UTRN

в режиме "Система": относительно звезды

в режиме "Планета": относительно выбранной планеты

6) радиальная скорость VRAD

7) оставшийся ресурс (кислород, вода, пища) в часах и минутах

Гравилёт - режим Ситема

С версии 1.5 добавлен режим просмотра дополнительных параметров. Для включения в режиме "Планета" нажать клавишу "<->". На экране отображаются, помимо номера и названия/минерала планеты, следующие данные:

  • DORB, DHOR, DPLN - как и раньше.
  • SCOR - счет игры;
  • TTRN - время, за которое гравилет с текущей трансверсальной скоростью пройдет текущее угловое расстояние до выбранной планеты;
  • TRAD - время, за которое гравилет с текущей радиальной скоростью пройдет текущее расстояние до орбиты выбранной планеты;
  • Время полёта (вместо оставшегося ресурса).

Вернуться в режим "Планета" можно повторным нажатием "<->".


Цифровыми клавишами 0-9 можно выбрать планету, для которой индицируются параметры. База имеет номер 0.

Для задания манёвра нужно нажать клавишу "В↑". На дисплее (в стеке) - обе скорости и параметры предыдущего манёвра (можно, не меняя ничего, просто нажать С/П для его повторения). Манёвр вводится так:

коэффициент гравитации (по модулю не больше 10); В↑; время манёвра в секундах; C/П

Время маневра автоматически ограничивается характерными временами (R/U и R/V). Также в режиме индикации можно клавишей "СX" повторить предыдущий заданный манёвр (любое число раз).

Помимо иссякания ресурса (которое приводит к гибели пилотов от удушья и концу полёта), в системе есть следующие опасности для корабля:

1. При приближении к звезде менее чем на 100000 км появляется возрастающая опасность поражения корабля её рентгеновским излучением. В случае пробоя защиты экипаж корабля погибает и полёт заканчивается.

2. Через систему постоянно проходят рои метеоритов, подобные тому, что когда-то уничтожил "Лагранж". Корабль всегда имеет вероятность оказаться в таком рое. При полёте в рое бортовой компьютер сосредотачивает почти всю мощность на уклонении от метеоритов, поэтому выводимые данные ограничиваются пунктами 4-7, а режим "Планета" недоступен. Тем не менее, при длительном полёте внутри роя, есть некоторая вероятность поражения корабля, о чем выводится соответствующее сообщение. Точка поражения выбирается случайно:

1) Поражено хранилище образцов: теряются все найденные образцы, счёт (регистр D) обнуляется.

2) Поражены резервуары с кислородом: на случайную величину сокращается оставшийся ресурс полёта.

3) Поражен бортовой компьютер: на время ремонта выводится только оставшийся ресурс (пункт 7).

4) Поражен двигатель корабля: на время ремонта невозможно задание манёвра, корабль летит по последним заданным параметрам.

5) Поражена кабина пилотов. Разгерметизация. Экипаж погиб, полёт окончен.

Ремонт производится автоматически, длительность его случайна (зависит от тяжести повреждения).

При выходе из роя индикация всех параметров восстанавливается (если не поврежден бортовой компьютер).

При старте программы система создаётся случайным образом (орбиты, углы, размеры планет, их ценные металлы). Астероид-база всегда имеет орбиту 1000000 км и радиус 1 км. Лунолёт стартует с его внешней стороны. Туда он и должен вернуться (игра заканчивается, в регистре X - счёт пилота). В случае касания базы со стороны звезды, столкновения с любой другой планетой или посадки на базу с суммарной скоростью больше 10 м/с корабль и его пилоты погибают.

В начале ископаемые планет неизвестны пилоту (кроме базы, не содержащей их). При успешном запуске зонда (см. выше) к счету добавляется от 100 до 500 очков (в зависимости от найденного металла, который после этого в режиме индикации указывается для данной планеты). Ресурс полёта при старте даётся в зависимости от выбранного при старте числа планет (6 часов на каждую планету плюс 6 часов на возвращение).

Миссия "Спасение"

Выбирается ответом "1" на соответствующий вопрос на экране запуска, если выбрана локация "нейтронная звезда" (с v1.3).

Второй гравилёт, спустя некоторое время найденный Коршуновым и Перепёлкиным на базе Пятой культуры, решили испытать прибывшие с Земли два их сменщика. Но в первом же полёте в корабль попал крупный метеорит, полностью уничтоживший двигатель и бортовой компьютер. Гравилёт оказался на орбите пульсара, его положение неизвестно. Шансов самостоятельно исправить аппаратуру у пилотов нет. На корабле быстро кончается кислород...

Конечно, Коршунов и его бессменный штурман отправляются на втором гравилёте на поиски товарищей. К счастью, на аварийном корабле уцелел радиомаяк, подающий сигналы, по которым гравилет спасателей может узнать пеленг (PLNG) и дистанцию до цели (RANG). Задача пилота - угадывая орбиту и угловое отклонение цели, подойти к аварийному кораблю на дистанцию менее 1000 км, чтобы с корабля-спасателя мог быть запущен автоматический зонд, заранее переоборудованный в ремонтного робота. За успех этой миссии (при удачном возвращении на базу) пилот получает 1000 очков. Эти очки сохраняются даже в случае попадания метеорита в хранилище корабля.

Параметры аварийного корабля можно узнать, нажав в режиме индикации клавишу "1". Остальные клавиши, как обычно, вызывают данные по планетам (можно, выручив второй экипаж, сразу лететь собирать образцы минералов).

Пеленг отсчитывается от оси гравилет-спасатель - звезда. Нулю градусов соответствует положение аварийного корабля точно между гравилетом и звездой.

Ресурс аварийного корабля, после исчерпания которого миссия считается проваленной, составляет случайную величину от 6 до 12 часов. При провале миссии счет обнуляется и очки за исследование планет даваться уже не будут.

Желаю успеха спасательной экспедиции!


II. Солнечная система

После возвращения Коршунова и Перепёлкина из экспедиции с поразительным "трофеем" в виде гравилёта Пятой культуры, учёные Земли смогли на его базе построить новый корабль - большего размера, с увеличенным ресурсом жизнеобеспечения и более мощным двигателем. На этом корабле (назовите его по своему вкусу) нам и предстоит исследовать окрестности родного светила.

Принципы работы программы - те же, что и ранее. Главное отличие - система не создаётся случайно, а являет собой модель Солнечной системы (пока без пояса астероидов, комет и спутников планет). Земля имеет номер 0. Остальные восемь планет получают случайные углы отклонения от оси Солнце-Земля, реальные радиусы орбит и размеры. Притяжение планет на корабль не действует - двигатель Пятой культуры управляется "лучом" гравитации, направленным к Солнцу.

Корабль стартует из точки на орбите Земли высотой 1000 км (у причала орбитальной станции "Мир-XXI"), точно "позади" планеты. Ресурс полёта - примерно месяц (700 часов). Сбором ископаемых заниматься нам не придётся, задача - пройти как можно ближе к выбранной для себя планете и вернуться на Землю (обязательно с "внешней" стороны - там будет находиться наша орбитальная станция, и скоростью не более 10 м/с).


С версии 1.5 если корабль находится между 330 и 540 миллионами километров от Солнца, он:

  • а) считается находящимся в метеоритном рое по обычным правилам;
  • б) имеет шанс обнаружить неизвестный астероид размером от 10 до 100 км - в таком случае размер астероида прибавляется к счету и выводится соответствующее сообщение.

При поврежденном компьютере и/или двигателе очки за астероиды не начисляются.

Режим "Задание"

(версия 1.5)

После выбора локации "Солнечная система" и отказа от поединка с Немезидой (см. ниже), нужно выбрать один из ответов на вопрос, заданный программой:

  • 0 - свободный полёт, очки начисляются за исследование любой планеты; начальный ресурс - 1200 часов (50 суток);
  • 1 - пилоту даётся задание исследовать одну из планет земной группы (Меркурий, Венера, Марс); начальный ресурс - 600 часов (25 суток);
  • 2 - пилоту даётся задание исследовать одну из планет-гигантов (Юпитер, Сатурн, Уран, Нептун); начальный ресурс - 1200 часов (50 суток);
  • 3 - пилоту даётся задание исследовать одну из планет пояса Койпера (Плутон, Эрида); начальный ресурс - 1800 часов (75 суток);
  • 4 - пилоту даётся задание исследовать одну из планет всей Солнечной системы; начальный ресурс - 1800 часов (75 суток);
  • 5 - пилоту даётся задание доставить исследовательскую станцию в окрестности Солнца (см. ниже).

После ответов с "1" по "4" в режиме индикации планета, являющаяся целью полёта, помечается звездочкой перед её названием. Очки даются только за исследование этой планеты (т.е. полёт максимальной длительности на как можно меньшей высоте над ней), плюс очки за найденные астероиды. При выборе пунктов 1-4 по сравнению со свободным полётом полученные за исследование планет очки удваиваются.

Полёт к Солнцу

(версия 1.5)

Для изучения солнечной активности и разработки новых источников энергии гравилёт должен доставить как можно ближе к Солнцу автоматическую научную станцию "Фаэтон", закрытую особым отражающим щитом, который позволит станции существовать в пылающей короне светила. Собственного двигателя "Фаэтон" не имеет.

Гравилёт, мощность двигателя которого намного меньше обычной из-за необходимости плотной тепловой защиты, толкает щит "Фаэтона" перед собой, двигаясь к Солнцу. В это время он полностью защищен как от излучения Солнца, так и от попаданий метеоритов.

Если DSTR сократится до 1 млн.км, то щит не выдерживает потока раскаленной плазмы - пилот, корабль и станция немедленно погибают. На как можно более близком расстоянии (параметр DSTR) нужно произвести расстыковку с остающимся на орбите светила "Фаэтоном" - ввести отрицательный коэффициэнт гравитации. В этот момент пилоту начисляются очки - тем больше, чем ближе к Солнцу произошла расстыковка (максимальное расстояние для получения очков - 25 млн.км). После расстыковки гравилёт уже не закрыт от Солнца щитом "Фаэтона" и должен как можно быстрее покинуть зону опасного теплового излучения (пролегающую примерно до половины орбиты Меркурия), а затем вернуться на Землю.

Миссия "Немезида"

(версия 1.5)

Прошло десять лет со дня первого нечаянного полёта Коршунова и Перепёлкина на маленьком гравилёте у нейтронной звезды.

Опытный корабль, построенный на Земле, исследовал одну за другой планеты, их спутники, пояс астероидов, окрестности Солнца... Он стал близок десяткам стажёров, изучающим непростую науку космического вождения. И их наставникам - опытным пилотам, проверяющим поведение корабля в экстремальных режимах. Опыты с гравитационными двигателями продолжались. Земля готовила новые корабли и новые экспедиции - теперь уже к далеким звездам.

И вдруг...

Космические телескопы, неспешно летящие по земной орбите, обнаружили далеко за орбитой Нептуна, в пяти миллиардах километров от Солнца, необычайно быстро двигающийся объект. Сфероид диаметром около 200 километров приближался с огромной, почти невозможной для небесных тел скоростью. Гравитация Солнца и планет-гигантов совершенно не действовала на объект, и это невольно наводило на мысли о том, что его создателями являлись те же существа Пятой культуры, которым Земля была обязана своим первым гравилётом. Простые расчеты показали то, от чего замерли на миг сердца всех тех, кто знал о происходящем. Потому что не позже чем через месяц прямая, как стрела, траектория объекта, очень скоро негласно прозванного малой планетой Немезида, обязательно должна была пересечься с орбитой Земли точно в месте нахождения единственного пока дома человечества.

А значит - не оставить в нём ничего живого.

Ни один обычный корабль не способен был догнать в глубинах космоса Немезиду, каждую секунду оставлявшую позади тысячи километров на своём роковом пути. Ничто на Земле не способно было заставить её свернуть в сторону. Единственной надеждой миллиардов людей оставался маленький корабль-гравилёт на орбите и его пилот по имени Александр Коршунов. "Звёздный Коршун". Который в этот раз уже не имел права на ошибку...

***


Миссия "Немезида", в которой пилоту гравилёта нужно совершить не более и не менее чем спасение Земли, выбирается ответом "1" на соответствующий вопрос после начального выбора локации "Солнечная система". При индикации параметры Немезиды просматриваются клавишей "9". В режиме "Планета" радиальная скорость VRAD выводится относительно радиальной скорости Немезиды (составляющей постоянную случайную величину от 2 до 4 тыс.км/с). Вместо радиуса RPLN выводится параметр DNEM - расстояние от Немезиды до орбиты Земли. Все переключения режимов и управление осуществляются, как обычно.

Если Немезида достигнет Земли - игра окончена (как и жизнь на планете).

Задача пилота - подойти к Немезиде на расстояние менее 1000 км и запустить к ней планетный зонд, несущий мощный термоядерный заряд. Для успешного запуска зонда гравилёт должен лететь параллельно Немезиде (т.е. его радиальная скорость должна быть отрицательной). Запуск зонда невозможен в метеоритном рое или в поясе астероидов. В случае успеха миссии пилот получает 3000 "несгораемых" очков, и Немезида исчезает из Солнечной системы. После этого нужно, как обычно, вернуться на Землю и быть встреченным как герой всей планеты.

Удачи в спасении Земли! И мягкой посадки, разумеется.




Первая экспедиция

Корабль "Ра", управяемый пилотом-стажёром, успешно стартовал с земной орбиты. Анализ положения планет показал, что оптимальной целью путешествия станет Меркурий, который менее чем на 2 градуса отставал от оси Солнце-Земля. Таким образом, кораблю осталось преодолеть всего около 92 миллионов километров. Стажёр, еще недавно пилотировавший учебные лунолёты, был полон радостного оптимизма.

Положение шарика на пульте двигателя - 10. Разгон почти до 2 тысяч километров в секунду. Быстро оставшаяся далеко позади Земля и точка Луны на её фоне. Полёт к растущему на экранах приборов Солнцу.

Спустя примерно сутки, когда до Меркурия оставалось менее 20 миллионов километров, пилот понял, что сильно обгоняет свою цель и пройдёт далеко впереди планеты. А за ней огромная сила солнечных лучей уже угрожала даже более чем серьезной защите корабля. Пилот передвинул шарик пульта на отметку "-10", и траектория корабля стала описывать огромную вытянутую петлю, удалясь от Меркурия ("в космосе нет прямых путей к цели" - вспомнилась пилоту фраза из учебника).

После выхода из петли (достигшей длины порядка 30 миллионов километров) корабль устремился уже прямо к Меркурию, догоняя его уже с гораздо меньшей скоростью. Серый диск, выжженный чудовищным жаром близкого светила, рос на глазах. Пилот заворожённо смотрел на это зрелище, забыв про шарик пульта, на котором лежала его рука. Взглянув на приборы, порадовался своему успеху - в первом же полёте одной корректирующей петлей добиться такой точности! А с возвращением проблем не будет, он был в этом уверен.

Кончались вторые сутки полёта. До планеты оставалось всего 10 тысяч километров - чуть больше её диаметра. Меркурий заполнил уже весь экран переднего обзора. Видна была огненная линия терминатора. И вдруг...

Пилот, наслаждавшийся видом столь близкой цели, вдруг осознал, что скорость корабля по-прежнему составляет не менее 200 километров в секунду! Его рука толкнула шарик еще до того, как мозг проанализировал этот ужасающий факт. Скорость пошла вниз... но гораздо медленнее, чем исчезали тысячи километров между стажёром с широко распахнутыми глазами и пепельной поверхностью планеты.

Через несколько часов после того, как корабль со скоростью более ста километров в секунду врезался в кратеры теневой стороны Меркурия, Солнце залило своим пламенем его немногочисленные останки, теперь лишившиеся активной защиты, и превратило в пепел большую их часть.

А на орбите Земли уже строился второй гравилёт. И его будущие пилоты (которые, как все верили, не повторят ошибок первопроходца) читали надпись на воротах дока станции "Мир-XXI". Надпись, взятую из книги одного древнего писателя, которого почему-то помнили и сейчас, забыв множество других.

Кораблю - взлёт!

Хроники гравилётчиков

(в качестве послесловия)

10.01.2012 - первый корабль с гравитационным двигателем сходит со стапеля.

12.01.2012 - неудачная экспедиция к Меркурию. Падение на большой скорости на теневую сторону планеты. Катастрофа корабля, гибель пилота.

20.01.2012 - гибель корабля-разведчика, посланного к Юпитеру. Слишком большая скорость, набранная в окрестностях Солнца, не даёт возможности вовремя затормозить в слабом гравитационном поле, и неуправляемый корабль уходит за пределы Солнечной системы.

25.01.2012 - первый успешный полёт к поясу астероидов (166 очков).

28.01.2012 - катастрофа марсианской экспедиции. Корабль получает попадание метеорита, разрушившее двигатель, входит в зону сильного солнечного излучения и там сгорает.

30.01.2012 - успех первой экспедиции к Венере. Корабль проходит в 210 км от дневной стороны Вечерней Звезды и возвращается на Землю через 16 суток после старта. Время нахождения в верхних слоях атмосферы - около 15 минут. 880 очков.

31.01.2012 - неудачная экспедиция к Сатурну. Из-за навигационных ошибок и сложной метеоритной обстановки корабль проходит в 7,5 млн. км от Сатурна и благополучно возвращается на Землю, не рискуя второй попыткой (остаток кислорода при приземлении - не более двух суток).




Версия 2.0. Первая Звёздная экспедиция.

1. Температура и радиация

Введен параметр температуры корабля, одновременно показывающий его радиационный уровень (если корабль находится в окрестностях звезды/Солнца/пульсара).

В открытом космосе T=-273 градуса. При приближении к звезде или входе в атмосферу планеты температура начинает расти. На корпусе корабля она может достигать 1000 градусов. От этой температуры зависит температура внутри корабля, которая при превышении значения 25 градусов автоматически показывается при индикации на месте параметра "Ресурс" в режиме "Система". Если внутренняя температура достигает 50 градусов (это соответствует 1000 градусов на корпусе) - корабль погибает (или от проникающей радиации гибнет его экипаж). Скорость роста температуры зависит от случайной величины солнечной активности (или плотности атмосферы) и состояния тепловой/радиационной защиты корабля (см. ниже).

При удалении за пределы атмосферы или излучения звезды температура постепенно снижается вплоть до -273 градусов.

2. Новая система повреждений от метеоритов

При попадании возможны следующие варианты:

- попадание в резервуар кислорода и компьютер: действуют как и раньше;

- попадание в двигатель: теряется случайная часть мощности двигателя;

- попадание в регулятор гравитации: двигатель заклинивается и время от времени (частота зависит от расстояния до источника гравитации - т.е. звезды) случайно меняет значение коэффициента до окончания ремонта;

- попадание в термозащиту: корабль сильнее нагревается/получает бОльшую дозу радиации в атмосферах планет и в окрестностях звезды.

3. Карьера пилота

Сохранение в файл теперь делается не только по команде клавишей "Ввод", но и автоматически при завершении полёта (удачном или неудачном). Файл загружается не из меню, а автоматически при старте программы. Гибель пилота обнуляет счёт в файле.

Таким образом, программа отслеживает все удачи и неудачи пилота - владельца ЭКВМ. При этом счет на экране дополнительных параметров - это общий счет пилота.

Новая клавиша управления в режиме индикации. "Выход" - самоубийство пилота с обнулением его счета (нужно при невозможности нормально завершить полёт - например, корабль набрал слишком большую скорость и потерял возможность её снизить).

4. Пилотский блокнот

Пилотский блокнот убран из программы.

К звёздам!

Цель: посещение системы звезды, близкой по типу к Солнцу (масса от 0,5 до 2 солнечной, расстояние от Земли от 5 до 10 световых лет). В системе имеется от 3 до 9 планет, при этом каждая похожа на одну из планет Солнечной системы (от Меркурия до Нептуна). Близлежащие к звезде планеты "земной" группы могут иметь условия для органической жизни, т.е. жидкую воду и высокий процент кислорода в атмосфере. Такая планета, если она будет найдена и исследована, получит название "НОВЫЙ ЭДЕМ".

План экспедиции:

1) Разгон

Для полёта к звезде нужно набрать скорость не менее 100000 км/с и удалиться за орбиту Нептуна - на расстояние 5 млрд. км от Солнца. Программа автоматически переходит в режим межзвездного полёта.

При поврежденном двигателе порог скорости уменьшается пропорционально степени повреждений.

Рекомендация: разгон выполнять из окрестностей Солнца, задавая положение регулятора "-10" и время манёвра не более 30 с (до орбиты Венеры), не более 60 с (до орбиты Марса) и любое после пояса астероидов.

2) Полёт

На экране индицируются: скорость корабля, время полёта и оценка полного пути до звезды в месяцах, интегральный показатель надежности бортовых систем и оставшийся запас энергии на корабле (изначально рассчитанный на полёт к звезде и обратно на скорости, равной половине световой, плюс 50 суток на маневры у звезды).

Управление в режиме межзвёздного полёта:

"8" - в следующем месяце увеличить скорость на 1%

"2" - в следующем месяце уменьшить скорость на 1%

"5" - в следующем месяце не менять скорость

"Ввод" - сохраниться в файл

Если скорость корабля выше половины световой (150000 км/с), надежность его систем постепенно снижается - при этом растет вероятность катастрофы и гибели корабля. При скорости ниже половины световой надежность восстанавливается вплоть до 100%. Скорость снижения и восстановления надежности определяется величиной отклонения скорости от значения 150000 км/с.

3) Исследование системы звезды

При удачном окончании полёта к звезде программа снова возвращается в стандартный режим. Параметры звезды можно просмотреть клавишей "0". Данные по планетам (начиная с "1") смотрятся как обычно. В режиме "Система" теперь показывается не параметр DORB, а параметр RORB - радиус орбиты планеты (это, кстати, верно и для системы пульсара, и для Солнечной системы).

Сразу после прибытия в систему нужно провести торможение (регулятор гравитации на "-10"). Чтобы уменьшить вероятность сгореть у звезды, желательно снизить скорость еще в конце межзвёздного перелёта (следя за запасом энергии на обратный путь).

Изначально типы планет (верхняя строка) неизвестны. При приближении к планете есть шанс "открыть" её (т.е. определить, на какую планету Солнечной системы она похожа). За это даётся 250 очков. Чем меньше параметр DPLN - тем выше шанс "открытия" (при удаче режим индикации автоматически переключается на вновь открытую планету).

При поврежденном компьютере планеты не открываются.

4) Открытие Нового Эдема

При обнаружении в системе звезды планеты типа "Земля" надо сблизиться с ней и войти в атмосферу (высота атмосферы задаётся случайным образом). За успех этой миссии пилот получает 1000 очков. На экране - картина Земли (нужно нажать СХ).

Корабль выпускает "челнок", доставляющий на поверхность планеты первых колонистов. И сразу вслед за этим покидает атмосферу, готовясь к возвращению на Землю (или к исследованию остальных планет).

5) Возвращение

Для старта обратно к Солнцу надо снова набрать радиальную скорость 100000 км/с (с возможной поправкой на поврежденный двигатель) и удалиться от звезды на расстояние, определяемое её размерами (от ~1,5 до 6 млрд. км). Режим обратного полёта выглядит точно так же, как описанный в п.2.

При падении запаса энергии до 0 раньше конца пути корабль погибает.

В Солнечной системе нужно, как обычно, сбросить полную скорость до 100 м/с и войти в атмосферу Земли для победного возвращения домой Первой Звёздной экспедиции.




Некоторые итоги.

Проект "Гравилёт-XXI" завершён.

Использовано 53% памяти программ ЭКВМ и 10% памяти десятичных данных. Оптимизация, если и возможна, то незначительная (или за счет свободных регистров, или за счет быстродействия). Расчет любых манёвров, по ощущениям, не превышает пары секунд (вдали от планет - еще меньше).

Больше хороших идей у меня нет. Реализовал всё, что хотел с давних времён, получилось, как мне кажется, неплохо. Из физической модели "Гравилёта" вряд ли можно выжать что-то еще (вариант с планетами вместо звезд и спутниками в роли планет я отбросил как мало отличающийся по сути от того, что уже есть). Дальше - правка теоретически возможных ошибок и, главное - простор для фантазии пользователей.

Мягкой посадки!




Версии

1.1

  • - загрузка из файла (в начальном меню) и сохранение (клавишей "Ввод" в режиме индикации);
  • - исправление мелких ошибок при полёте с поврежденным бортовым компьютером.

1.2

  • - исправлена ошибка возможности попадания в рой при переключении режимов индикации;
  • - исправлены радиусы планет Солнечной системы (вместо них были вписаны диаметры);
  • - исправлена невозможность создать 9 планет (плюс база) у пульсара;
  • - исправлена некорректная загрузка при отсутствии файла сохранения;
  • - значительно увеличена мощность двигателя в Солнечной системе, чтобы можно было долететь до самых её окраин;
  • - с этой же целью начальный ресурс полета увеличен до 1000 часов;
  • - улучшена метеоритная защита корабля в Солнечной системе, вместе с тем увеличено среднее время ремонта;
  • - кабина пилотов получила 100% защиту от метеоритов, мгновенная гибель при попадании теперь невозможна;
  • - предельная дальность работы планетного зонда в системе пульсара уменьшена до 500 км;
  • - добавлена десятая планета Солнечной системы - открытый в 2003 году ледяной карлик Эрида. За радиус орбиты взято среднее значение 10,2 млрд.км.;
  • - добавлены атмосферы планет Солнечной системы. Высота атмосфер Нептуна и Урана принята равной 1000 км, Сатурна 2000 км, Юпитера 5000 км, Венеры 250 км, Марса и Земли по 100 км. При заходе корабля в атмосферу появляется вероятность прогорания корпуса или попадания в грозу/шторм на газовых гигантах. Вероятность аварии растёт с "глубиной погружения". В случае такого события - гибель и конец игры;
  • - при гибели теперь выводится причина смерти (излучение, авария, нехватка кислорода и т.д.)
  • - ведется подсчет общего времени полета - хранится в регистре 73 и выводится при окончании в RY в виде ЧЧ,ММСС (в RX по-прежнему счёт);
  • - в Солнечной системе теперь ведется начисление очков. При приближении к любой планете (кроме Земли) на 100000 км очки начисляются в зависимости от времени пребывания у планеты, от достигнутого расстояния до планеты, от удаленности планеты от Солнца.

1.3

  • - исправлена некорректная привязка атмосфер к планетам;
  • - атмосфера Сатурна увеличена до 3000 км;
  • - вероятность гибели в атмосфере и у звезды/Солнца теперь зависит от времени пребывания в опасной зоне;
  • - метеоритные рои встречаются реже по мере удаления от Солнца.

  • В локацию "Нейтронная звезда" добавлен режим "Миссия 'Спасение'"

1.4

  • - программа оптимизирована по скорости, из рабочего цикла убраны ненужные в данный момент проверки;
  • - исправлен возможный некорректный подсчет очков в Солнечной системе;
  • - вблизи от Солнца метеоритов стало меньше;
  • - регистры 78 и 79 можно использовать как пилотский блокнот (например, для записи предполагаемой орбиты аварийного корабля в миссии "Спасение"). Эти регистры не используются программой, но сохраняются в файле вместе с рабочими регистрами;
  • - изменены условия возвращения на Землю. Теперь для удачного завершения полета надо войти в атмосферу (высота менее 100 км) с любой стороны Земли на полной скорости не более 100 м/с. В этом случае корабль переходит на гравитационное поле Земли и производит спуск на парашютах.

1.5

  • - все расстояния, скорости и размеры в программе теперь задаются в километрах, что повышает точность и уменьшает размер программы;
  • - более точно рассчитывается параметр DHOR, а также остаток ресурса;
  • - время полета и ресурс выводятся в виде Дни : Часы : Минуты;
  • - попадание метеорита в двигатель не фиксирует случайный коэффициент, а случайно меняет его (тем чаще, чем ближе к Солнцу/звезде), пока не закончится ремонт;
  • - увеличено среднее время ремонта двигателя и компьютера;
  • - попадание метеорита в хранилище образцов не обнуляет счет, а уменьшает его на случайную величину;
  • - граница опасной для корабля зоны солнечного излучения теперь находится на половине орбиты Меркурия (~29 млн.км);
  • - метеориты снова равномерно распределены по Солнечной системе;
  • - в Солнечной системе очки начинают начисляться при подлете на 10000 км к планете (вместо ста тысяч);
  • - после окончания полёта на экран выводятся его результат, суммарное время и окончательный счет, посмотрев, можно нажать CX или С/П;
  • - при возвращении на Землю и при уничтожении Немезиды (см. ниже) выводится изображение Земли (посмотрев, нажмите СX);
  • - для пилотского блокнота теперь используется регистр 90.

  • Режим просмотра дополнительных параметров
  • Главный пояс астероидов Солнечной системы
  • Режим "Задание"
  • Полёт к Солнцу
  • Миссия "Немезида"

2.0

  • - учитывается температура и радиация;
  • - новая система повреждений от метеоритов;
  • - запоминается карьера пилота;
  • - пилотский блокнот убран из программы.

  • Первая Звёздная экспедиция
  • Новый Эдем

2.1

Всего одно изменение. Вместо Эриды (слишком уж далёкой и сложной) теперь у нас куда более интересная Церера, крупнейший объект пояса астероидов. "Ледяные карлики" в меню выбора задания переименованы, соответственно, в "малые планеты". Коэффициент умножения очков у Цереры 3,5 - средний между 3 у Марса и 4 у Юпитера. Радиус и удаление от Солнца также взяты средними (487 км и 2,77 а.е.). Радар (первые 4 параметра) работает в нормальном режиме в поясе астероидов, если клавишей "9" выбрана Церера.

Будьте осторожнее при подходе к Церере, помните об астероидах!

И как обычно - мягкой посадки!

2.2

Последние штрихи картины. Некоторые исправления и улучшения.

  • - исправлен радиус Цереры (был завышен вдвое);
  • - уменьшен средний размер роёв в системе пульсара;
  • - все величины округляются при выводе до 3 знаков после запятой;
  • - корректно отображаются относительные скорости при миссии "Немезида";
  • - при отображении относительных скоростей они помечаются штрихом (').


Программа "Гравилёт XXI"

Версия 2.2 (5378 байт, КС 483646/62)

  0 1 2 3 4 5 6 7 8 9
0000 Cx P П 94 PP П 90 45 P ПП 36 65 1
0010 - P x≠0 00 43 1 + PP П 91 28 PP П
0020 91 23 PP П 91 28 PP П 91 24 ИП 3 P x≥0
0030 00 43 P x=0 03 25 P ИП 90 P x=0 31 04
0040 P БП 26 16 Cx П B P П 15 P П 17 P П
0050 21 P П 23 P П 24 P П 71 P П 73 P П
0060 75 P П 77 P П 78 P П 79 P П 90 P П
0070 92 P П 95 P П 97 4 4 6 7 P П
0080 19 6 0 П 9 5 P П 72 0 , 9
0090 9 9 P П 74 1 P П 70 /-/ P П 99
0100 1 8 0 F π ÷ П 5 9 ВП 3 П E
0110 2 1 + П D 2 + P П 91 1 0
0120 П 3 2 PP П 90 10 4 7 8 7 K П D
0130 1 6 B↑ 0 K П E 4 8 1 2 K П D
0140 3 2 B↑ 0 K П E 4 3 2 4 K П D
0150 4 0 B↑ 0 K П E 4 3 4 6 K П D
0160 P ПП 35 39 ИП 6 1 - P x≠0 25 71 P x<0
0170 01 60 5 6 K П E 4 3 6 8
0180 K П D P ПП 35 39 ИП C P x=0 01 94 K СЧ 9
0190 × 1 + K [x] П 3 П 0 4 4 0 1
0200 P П 19 0 P П 72 1 ВП 5 K СЧ +
0210 P П 18 1 ВП 1 1 П 4 1 ВП 6
0220 P П 20 1 P П 22 + П A 2 4 П 6
0230 P ПП 31 71 ИП 3 1 + П 3 5 6 B↑
0240 0 K П E 4 3 8 2 K П D P ПП 35 39
0250 ИП C P x≠0 02 76 1 P П 75 0 P П 27
0260 1 0 P П 29 K СЧ 2 1 6 0 0
0270 × F Bx + K [x] P П 76 1 0 П 0 7
0280 9 П 6 0 K П 6 PF L0 02 83 0 , 9
0290 9 P П 74 2 1 6 0 0 ИП 3 ×
0300 P П 93 ИП 4 P ИП 20 ÷ F √ П 0 P ИП 71
0310 P x≥0 03 25 P ИП 74 F √ P ПП 37 97 P x<0
0320 03 25 1 P П 71 2 PP П 90 10 ИП C
0330 5 × 1 9 + П 6 P ИП 71 P x≠0 03
0340 68 0 P П 17 P x<0 03 61 ИП C 9
0350 - P x≠0 03 68 4 1 6 8 P БП 05
0360 95 4 1 5 1 P БП 05 95 P ИП 75
0370 P x≠0 04 56 ИП C 1 - P x=0 04 56 P ИП
0380 29 P x<0 03 91 4 6 6 8 P БП 04
0390 47 P ИП 76 P x<0 04 03 4 7 0 1
0400 P БП 04 47 4 6 4 9 K П D 1 6
0410 B↑ 0 K П E 4 7 3 3 K П D P ИП 77
0420 P ПП 39 49 4 7 5 1 K П D 2 4
0430 B↑ 0 K П E 4 7 4 0 K П D P ИП 28
0440 P ПП 39 49 4 7 4 7 K П D 3 2
0450 B↑ 0 K П E P БП 07 35 ИП C 9 - P x=0
0460 04 83 P ИП 95 P x≠0 04 83 0 B↑ 3
0470 2 K П E 4 1 8 4 K П D 9 4 П 6
0480 P БП 04 92 4 1 4 2 K П D ИП C P ПП
0490 39 49 K ИП 6 П 7 8 B↑ 0 K П E P ИП 17
0500 P x=0 05 11 ИП 7 4 2 3 0 P БП 05
0510 18 ИП A ИП 7 - 4 2 2 3 K П D
0520 P ПП 39 49 4 7 4 7 K П D 1 6
0530 B↑ 0 K П E P ИП 17 P x=0 05 56 4 2
0540 0 9 K П D K ИП 6 П 2 P ПП 39 49 4 7
0550 5 1 K П D P БП 05 75 4 2 1 6
0560 K П D ИП A K ИП 6 П 2 × ИП 5 ÷ P ПП 39 49
0570 4 7 4 7 K П D 2 4 B↑ 0 K П E
0580 4 2 5 8 K П D K ИП 6 П 8 K ИП 6 P ПП 39
0590 49 4 7 4 7 K П D 3 2 B↑ 0
0600 K П E P ИП 17 P x<0 07 32 4 2 7 3
0610 K П D P ИП 94 P ПП 39 49 4 0 B↑ 0
0620 K П E 4 2 8 0 K П D ИП 2 P ИП 79 ИП 9
0630 ÷ P ИП 95 P x≠0 06 40 F O P БП 06 50
0640 F O ИП 4 ИП 7 ÷ F √ ИП 7 ÷ ИП 5 × -
0650 P x≠0 06 80 ÷ P x≥0 06 70 3 6 0
0660 ИП 2 /-/ K ЗН × ИП 2 + П 2 P БП 06 26
0670 K |x| K [x] P ПП 39 49 4 7 6 2 K П D
0680 4 8 B↑ 0 K П E 4 2 8 7 K П D
0690 ИП A ИП 7 - ИП B P ИП 92 - P x≠0 07 14
0700 ÷ P x<0 07 14 K |x| K [x] P ПП 39 49 4
0710 7 6 2 K П D 5 6 B↑ 0 K П E 4
0720 2 9 4 K П D P ИП 73 P ПП 38 56 P БП
0730 08 92 P x=0 07 44 4 2 3 7 K П D
0740 ИП A P БП 07 72 ИП C 9 - P x=0 07 65
0750 P ИП 95 P x≠0 07 65 P ИП 20 - 4 2
0760 5 1 P БП 07 70 ИП 8 4 2 4 4
0770 K П D P ПП 39 49 4 7 4 7 K П D
0780 4 0 B↑ 0 K П E 4 1 9 5 K П D
0790 P ИП 95 P x≠0 08 01 ИП C 9 - P x≠0 08
0800 17 ИП C 1 - P x=0 08 12 P ИП 75 P x=0
0810 08 17 P ИП 17 P x=0 08 21 ИП 0 P БП 08
0820 27 ИП 0 ИП 4 ИП 7 ÷ F √ - P ПП 39 49
0830 P ИП 17 P x≠0 08 40 9 6 PP П 90 20
0840 4 7 5 5 K П D 4 8 B↑ 0 K П E
0850 4 2 0 2 K П D ИП C 9 - P x=0 08
0860 66 P ИП 17 P x=0 08 70 ИП B P БП 08 74
0870 ИП B P ИП 92 - P ПП 39 49 P ИП 17 P x≠0
0880 08 87 9 6 PP П 90 20 4 7 5
0890 5 K П D P ИП 70 P x<0 09 01 2 PP П 90
0900 10 5 6 B↑ 0 K П E P ИП 17 P x≥0 09
0910 53 P x=0 09 43 P ИП 99 P x≥0 09 43 4
0920 7 2 0 K П D 4 0 ÷ 2 5
0930 + K [x] P ПП 39 49 4 7 5 1 K П D
0940 P БП 09 53 4 2 6 5 K П D P ИП 93
0950 P ПП 38 56 P ИП 70 P x≥0 10 37 P ИП 95
0960 P x≠0 09 79 ИП C 9 - P x≠0 10 37 8
0970 + P x=0 09 79 P ИП 75 P x=0 10 37 0
0980 B↑ 6 0 K П E P ИП 19 K ИП 6 P x≥0 09 93
0990 P x=0 10 37 K |x| 3 , 5 - P x=0 10
1000 05 Cx 5 , 5 F Bx + 1 1 ×
1010 + K П D P ИП 90 P x=0 10 27 P ИП 78 P x≠0
1020 10 37 ИП C - P x=0 10 37 0 B↑ 4
1030 8 K П E 4 2 PP П 90 20 P ПП 35 39
1040 ИП C P x=0 11 28 P ИП 90 P x≠0 11 28 2
1050 PP П 90 10 4 5 9 9 K П D 1 6
1060 B↑ 0 K П E 4 5 7 8 K П D P ИП 98
1070 ВП 1 K [x] 1 0 ÷ P ПП 39 49 4
1080 6 1 0 K П D 3 2 B↑ 0 K П E 4
1090 6 1 8 K П D P ИП 97 1 0 × K [x]
1100 1 0 ÷ P ПП 39 49 4 6 2 6
1110 K П D 4 8 B↑ 0 K П E 4 6 3 4
1120 K П D ИП 3 P ПП 39 49 P БП 10 37 ИП 6 3
1130 2 - P x≠0 24 69 1 - P x=0 11 46
1140 P ПП 36 02 P БП 03 25 ИП 6 1 3 -
1150 P x≠0 12 84 1 + P x=0 11 81 ИП C 1
1160 - P x=0 11 69 P ИП 75 P x=0 11 81 P ИП
1170 17 P x=0 11 78 1 P БП 11 79 0 P П
1180 17 ИП 6 1 9 - P x=0 11 93 P ИП 17
1190 /-/ P П 17 ИП 6 1 4 - P x=0 03 25
1200 P ИП 70 K |x| 2 - P x≠0 12 84 K ЭКР 3
1210 9 8 1 PP П 90 26 P ИП 70 P x<0 12
1220 26 0 B↑ P БП 12 28 ИП 0 ИП B P ИП 15
1230 ИП 9 С/П P x≥0 12 08 P x≠0 12 08 П 9 F O
1240 P П 15 K |x| 1 1 - P x<0 12 08 P ИП
1250 78 P x<0 12 84 P ИП 15 P x<0 12 84 0
1260 P П 78 4 P П 72 1 5 ВП 6 ИП A
1270 - P x≥0 12 84 1 ВП 4 ÷ K [x] P ИП
1280 94 + P П 94 P ИП 70 K |x| 2 - P x=0
1290 13 11 K СЧ 2 1 × K [x] 1 0 -
1300 P П 15 ИП A P ИП 18 ÷ 6 0 × K [x]
1310 П 9 ИП 9 ИП A ИП 0 P x≠0 13 29 ÷ K |x| 1
1320 0 ÷ - P x≥0 13 29 F Bx K [x] П 9 ИП 9
1330 ИП A ИП B P x≠0 13 47 ÷ K |x| 1 0 ÷
1340 - P x≥0 13 47 F Bx K [x] П 9 P ИП 73 ИП 9
1350 + P П 73 P ИП 75 P x≠0 13 77 P ИП 76
1360 P x≥0 13 77 ИП 9 - P x<0 13 77 P ИП 94
1370 1 ВП 3 - P П 94 P П 76 P ИП
1380 93 ИП 9 - P П 93 P x≥0 24 69 ИП 9 ИП A
1390 ÷ B↑ ИП B × 1 - × ИП 0 × ИП 5
1400 × /-/ P П 79 П 2 P ИП 95 P x≠0 14 29
1410 P ИП 92 ИП 9 × + P П 95 P ИП 20 -
1420 P x≥0 24 97 P ИП 96 ИП 2 + P П 96 P ПП
1430 37 83 ИП 4 K ИП 6 П 7 ÷ F √ ИП 7 ÷ ИП 5
1440 × ИП 9 × K ИП 6 - ИП 2 + 1 8
1450 0 - P x<0 14 62 F Bx + F Bx + P x≥0
1460 14 55 F Bx - PK П 06 K ИП 6 K ИП 6 K ИП 6 PF L0
1470 14 32 P ИП 16 П 0 ИП 2 K |x| 1 ВП 6
1480 /-/ - P x<0 14 99 ИП A ИП 0 × ИП A ИП B
1490 ИП 9 × + П A ÷ П 0 P БП 15 95 P ИП
1500 15 P ИП 72 F 10x × ИП 4 × П 7 P ИП 72
1510 P x≠0 15 26 ИП A P ИП 18 - P x<0 15 26
1520 ИП A F Bx ÷ ИП 7 × П 7 ИП A ИП 0 × B↑
1530 B↑ П 8 ИП B × F x2 ИП 0 × ИП 7 -
1540 F Bx F x2 + F √ P x≠0 03 25 П A ÷
1550 П 1 K |x| 1 - P x≥0 15 60 ИП 1 K ЗН П 1
1560 ИП 1 F arccos ИП B ИП 0 × P x<0 15 71 /-/
1570 F O ИП 2 + П 2 F sin ИП 8 ÷ ИП A ×
1580 П B ИП 8 ИП A ИП 2 F cos × ИП 7 + ÷ F 1/x
1590 П 0 ИП 8 ÷ П A ИП B P ИП 72 F 10x -
1600 P x≥0 16 59 5 ВП 9 П 1 P ИП 90 P x≠0
1610 16 15 P ИП 20 П 1 ИП A ИП 1 - P x≥0 16
1620 59 3 PP П 90 10 9 9 П 1 K СЧ 3
1630 0 × 3 4 + K СЧ 1 2 8 ×
1640 PP П 90 11 PF L1 16 28 P ИП 90 P x=0 25
1650 71 P ИП 95 P x=0 24 97 P БП 30 86 P ИП
1660 72 P x≠0 17 58 P ИП 90 P x=0 17 58 ИП A
1670 5 4 ВП 7 - P x<0 17 50 ИП A 3
1680 3 ВП 7 - P x≥0 17 50 P ИП 71 1
1690 /-/ P П 71 P x<0 03 25 P ИП 70 1
1700 - P x=0 17 97 P ИП 74 P ПП 37 97 P x<0
1710 17 97 1 6 B↑ 0 K П E 4 9 7
1720 1 K П D K СЧ 9 0 × 1 0 + K [x]
1730 P ПП 39 49 4 7 4 7 K П D P ИП
1740 94 + P П 94 P ПП 35 39 P БП 17 97
1750 P ИП 71 P x<0 17 58 0 P П 71 P ИП 72
1760 P x≠0 17 71 ИП A 5 ВП 6 - P x≥0 24
1770 76 P ИП 78 P x≥0 19 27 P ИП 18 ИП A P ПП
1780 38 06 P x≥0 17 97 ИП A P ИП 18 2 ÷
1790 - P x≥0 24 76 P БП 24 90 P ИП 71 P x≠0
1800 19 27 P ИП 74 F √ P ПП 37 97 P x<0 19
1810 27 1 6 B↑ 0 K П E 4 9 8 8
1820 K П D K СЧ 5 × K [x] P x=0 18 45 9 9
1830 F 1/x K СЧ F xy P ИП 72 × P П 72 5 0
1840 2 3 P БП 19 20 1 - P x=0 18 65
1850 P ИП 93 K СЧ F √ × K [x] P П 93 5 0
1860 1 2 P БП 19 20 1 - P x=0 18 91
1870 P ИП 18 K {x} F x2 P ИП 18 K СЧ F √ F √ ÷
1880 K [x] + P П 18 5 0 0 1 P БП 19
1890 20 1 - P x=0 19 10 2 P ИП 70 K ЗН
1900 × P П 70 5 0 4 5 P БП 19 20
1910 P ИП 70 K |x| /-/ P П 70 5 0 3 4
1920 K П D P ПП 35 39 P БП 19 38 P ИП 74 P ПП
1930 37 97 P x<0 19 38 1 P П 70 P ИП 71
1940 P x≥0 19 58 P ИП 74 F lg ВП 1 F 10x P ПП
1950 37 97 P x<0 19 58 0 P П 71 P ИП 95
1960 P x≠0 20 42 ИП A - F x2 ИП A P ИП 96 ×
1970 ИП 5 ÷ F x2 + F √ P ИП 97 - P x≥0 24
1980 83 P П 98 1 ВП 3 - P x<0 20 42
1990 ИП B P x<0 20 42 P ИП 71 P x=0 20 42 P П
2000 95 P ИП 94 3 ВП 3 + P П 94 3
2010 PP П 90 10 0 B↑ 2 4 K П E 4 6
2020 8 6 K П D 1 2 B↑ 4 0 K П E 5
2030 0 9 4 PP П 90 15 P ПП 35 39 P БП
2040 03 25 P ПП 37 83 K ИП 6 П 7 П 1 ИП A K ИП 6
2050 × ИП 5 ÷ F x2 ИП A ИП 7 - F x2 + F √
2060 K ИП 6 - K П 6 П 7 K ИП 6 П 8 P x≥0 23 23
2070 P ИП 90 P x≠0 22 04 P ИП 70 P x≥0 22 04
2080 ИП 8 P x=0 21 20 ИП 3 ИП 0 - 8 1 +
2090 П 8 ИП 7 K ИП 8 - P x<0 22 62 P ИП 94 1
2100 ВП 3 + P П 94 1 1 /-/ PK П 06
2110 ИП 6 П 1 P ПП 39 61 ИП 1 П 6 P БП 22 62
2120 1 0 + P x=0 22 62 1 P ИП 74 -
2130 1 ВП 7 ИП 7 ÷ × 1 - P ПП
2140 37 97 P x<0 22 62 ИП 3 ИП 0 - 1 +
2150 П C ИП 1 P ИП 18 ÷ 3 - P x<0 21 66
2160 1 B↑ 0 P БП 21 86 7 - P x<0 21
2170 83 K СЧ 3 × K [x] P x≠0 21 90 1 +
2180 P БП 21 90 4 B↑ 4 K СЧ × + K [x]
2190 /-/ PK П 06 P ИП 94 2 5 0 + P П
2200 94 P БП 22 62 P ИП 72 P x≠0 23 23 P ИП
2210 78 P x≥0 23 23 ИП 7 1 ВП 4 - P x<0
2220 24 60 P ИП 78 P x≠0 22 35 1 0 ИП 0
2230 - - P x=0 22 62 1 ВП 4 ИП 7 ÷
2240 K [x] ИП 9 1 0 0 ÷ × ИП 8 K |x| ×
2250 K [x] P ИП 78 K ЗН 1 + × P ИП 94 +
2260 P П 94 ИП 7 6 ВП 3 - P x<0 24 60
2270 ИП 3 ИП 0 - P ИП 90 + P x=0 22 99 ИП 7
2280 P ИП 80 - P x<0 22 99 P ПП 38 42 0
2290 , 1 - P x<0 24 83 P БП 23 54 ИП 3
2300 P ИП 90 + ИП 0 - 8 0 + П 8 K ИП 8
2310 P x≠0 24 60 ИП 7 P ПП 38 06 P x<0 24 76
2320 P БП 24 60 ИП 7 P x<0 23 65 ИП 3 ИП 0 -
2330 P x=0 24 83 ИП A P ИП 20 - P x≥0 24 83
2340 P ПП 38 42 0 , 0 1 - P x<0 24
2350 83 P БП 23 57 P ПП 39 61 4 3 0
2360 8 П 2 P БП 25 25 P ИП 75 P x≠0 24 26
2370 ИП 6 2 9 - P x=0 24 26 P ИП 25 F x2
2380 ИП A F x2 + P ИП 25 ИП A P ИП 26 F cos ×
2390 × 2 × - F √ P П 28 П 7 F x2 ИП A
2400 F x2 + P ИП 25 F x2 - 2 ИП 7 ИП A ×
2410 × ÷ F arccos P ИП 26 K ЗН × P П 77 ИП 7
2420 1 ВП 3 P БП 24 32 ИП 7 K СЧ 5 0
2430 0 × - P x<0 24 60 P ИП 70 P x≥0 24
2440 60 ИП 8 P x≥0 24 60 B↑ B↑ 1 0 0
2450 × P ИП 94 + P П 94 F O /-/ PK П 06
2460 PF L0 20 45 P ИП 16 П 0 P БП 03 08 3
2470 9 9 4 P БП 25 11 4 0 2 1
2480 P БП 25 11 4 0 4 7 P БП 25 11
2490 4 0 7 4 P БП 25 11 4 1 2
2500 7 P БП 25 11 0 P П 73 4 1 0
2510 0 П 2 P ИП 95 P x≠0 25 22 P ИП 97 P x≠0
2520 25 25 0 P П 94 1 /-/ П 3 P ПП 36
2530 02 2 PP П 90 10 ИП 2 K П D 1 6 B↑
2540 0 K П E 4 2 9 4 K П D P ИП 73 P ПП
2550 38 56 3 2 B↑ 0 K П E 4 7 8
2560 0 K П D P ИП 94 P ПП 39 49 P ПП 35 39
2570 С/П 1 0 П 3 П 0 1 9 П 6 P ИП 90
2580 П 8 0 P П 18 P П 20 P П 90 P ПП 31
2590 71 6 3 7 1 P П 22 1 3 2
2600 7 ВП 8 П 4 1 4 9 6 ВП 5
2610 P П 20 ИП 8 P x≠0 26 37 P ПП 33 02 ИП 4
2620 P ИП 20 × F √ 5 ВП 9 П A ÷ П 0
2630 ИП B /-/ П B 1 P БП 28 67 П A P ИП
2640 22 1 ВП 3 P П 23 + ИП 5 × ИП A
2650 ÷ /-/ P П 21 5 6 B↑ 0 K П E 4
2660 9 5 4 K П D P ПП 35 39 ИП C P x≠0 27
2670 10 5 ВП 9 P П 95 K СЧ 2 ВП 3
2680 × F Bx + /-/ P П 92 ÷ ИП 4 P ИП 20
2690 ÷ F √ P ИП 20 ÷ ИП 5 × × P П 96
2700 1 0 0 P П 97 3 B↑ P БП 28 67
2710 2 PP П 90 10 4 8 2 8 K П D 1
2720 6 B↑ 0 K П E 4 8 4 3 K П D 2
2730 4 B↑ 0 K П E 4 8 6 3 K П D 3
2740 2 B↑ 0 K П E 4 8 8 1 K П D 4
2750 0 B↑ 0 K П E 4 9 0 1 K П D 4
2760 8 B↑ 0 K П E 4 9 1 9 K П D 5
2770 6 B↑ 0 K П E 4 9 3 5 K П D P ПП
2780 35 39 ИП C P x≠0 28 65 1 - P x=0 27
2790 99 1 B↑ 1 B↑ 3 P БП 28 55 1
2800 - P x=0 28 12 2 B↑ 4 B↑ 4 P БП
2810 28 55 1 - P x=0 28 25 3 B↑ 8
2820 B↑ 2 P БП 28 55 1 - P x=0 28 38
2830 3 B↑ 1 B↑ 9 P БП 28 55 1 -
2840 P x=0 27 79 1 /-/ P П 78 3 P П 72
2850 1 B↑ P БП 28 67 K СЧ × + K [x] P П
2860 78 P БП 28 67 2 B↑ 2 1 6
2870 ВП 4 × P П 93 0 П C P П 24 P П
2880 81 P П 88 P П 89 ВП 2 P П 80 P П
2890 83 5 7 9 ВП 5 P П 25 2 ÷
2900 K СЧ + P П 18 2 4 3 9 P П 27
2910 1 /-/ P П 29 1 0 8 2 ВП 5
2920 P П 30 6 0 5 2 P П 32 2 /-/
2930 P П 34 2 5 0 P П 82 2 2 7
2940 9 ВП 5 P П 35 3 3 9 7 P П
2950 37 3 /-/ P П 39 7 7 8 3 ВП
2960 5 P П 40 7 1 4 9 2 P П 42
2970 4 /-/ P П 44 5 ВП 3 P П 84 1
2980 2 4 9 ВП 6 P П 45 6 0 2
2990 6 8 P П 47 5 /-/ P П 49 1 ВП
3000 3 P П 86 P П 87 3 × P П 85 2
3010 8 7 1 ВП 6 P П 50 2 5 5
3020 5 9 P П 52 6 /-/ P П 54 4 5
3030 0 4 ВП 6 P П 55 2 4 7 4
3040 6 P П 57 7 /-/ P П 59 5 9 1
3050 4 ВП 6 P П 60 1 1 6 0 P П
3060 62 8 /-/ P П 64 4 1 4 ВП 6
3070 P П 65 4 7 5 P П 67 3 , 5
3080 /-/ P П 69 P БП 03 02 Cx P П 17 P П
3090 71 1 П C P П 90 P П 96 K СЧ 5 ×
3100 5 + P П 98 P ПП 33 02 K СЧ 7 ×
3110 3 + K [x] П 3 П 0 2 4 П 6 ИП 4 K СЧ
3120 3 × 1 + 2 ÷ P П 97 × П 4
3130 F Bx P ИП 18 × P П 18 1 0 0 ×
3140 P П 20 П A ИП 5 П 1 8 0 П 5 P ПП 31
3150 71 ИП 1 П 5 ИП 4 ИП A ÷ F √ П 0 ИП B /-/
3160 П B 4 3 2 ВП 4 P П 93 P БП 10
3170 49 P ИП 72 P x=0 31 91 K СЧ P ИП 20 P ИП
3180 18 2 × П 7 - × ИП 7 + P БП 32
3190 15 K СЧ 2 × K [x] P x=0 32 04 2 B↑
3200 8 P БП 32 09 1 0 B↑ 9 0 K СЧ
3210 × + P ИП 18 × П 7 K П 6 K СЧ 3 6
3220 0 × 1 8 0 - K П 6 P ИП 90 P x=0
3230 32 54 K СЧ 9 0 0 × 1 0 0
3240 + K П 6 Cx K П 6 K СЧ 5 × 1 + K [x]
3250 K П 6 P БП 32 98 K СЧ 7 ВП 3 × 3
3260 ВП 3 + ИП 7 P ИП 18 1 0 × -
3270 P x≥0 32 80 1 0 × Cx 3
3280 P x<0 32 85 Cx 1 K П 6 × 5 0
3290 ÷ K П 5 0 K П 6 1 0 /-/ K П 6 PF L0 31
3300 71 В/О ИП 3 P x≠0 33 13 1 P П 93 P П
3310 97 Cx П 2 9 П 3 0 B↑ 4 K П E 5
3320 0 5 6 K П D 3 2 PP П 90 20 P ИП
3330 96 P ПП 39 20 8 B↑ 4 K П E 5 0
3340 7 5 K П D P ИП 97 P ПП 39 20 1 6
3350 B↑ 4 K П E 5 0 6 5 K П D ИП B P ПП
3360 39 49 4 7 5 5 K П D 3 2 PP П
3370 90 20 PP П 90 20 2 4 B↑ 4 K П E
3380 4 2 9 4 K П D ИП 2 0 , 5 +
3390 K [x] P ПП 39 49 4 7 PP П 90 20 P ИП
3400 98 2 4 × 1 + K [x] P ПП 39 49
3410 5 0 8 9 K П D P ПП 35 39 ИП 6 3
3420 3 - P x=0 34 32 П 3 P ПП 36 02 P БП
3430 33 13 ИП 6 2 - P x=0 34 48 ИП B 0
3440 , 9 9 × П B P БП 34 68 6 -
3450 P x=0 34 63 ИП B 1 , 0 1 × П B
3460 P БП 34 68 3 + P x=0 34 15 P ИП 93
3470 P ИП 98 2 4 × F 1/x П 1 ИП B 1 5
3480 ВП 4 ÷ П A × - P П 93 P x≥0 35
3490 38 ИП 2 ИП A + П 2 P ИП 96 ИП 1 2 ÷
3500 - P П 96 P x≥0 25 04 P ИП 97 ИП A 1
3510 - K ЗН F Bx F x2 × 2 0 ÷ - 1
3520 - P x≥0 35 26 0 B↑ 1 + P П 97
3530 K СЧ - P x≥0 25 04 P БП 33 13 В/О K ГРФ
3540 PP ИП 90 29 П 6 K NOT P x≠0 35 40 ИП 6 1
3550 4 - P x≠0 36 01 ИП 6 1 3 - P x≠0
3560 36 01 ИП 6 1 2 - P x≠0 36 01 ИП 6
3570 1 9 - P x≠0 36 01 ИП 6 3 2 -
3580 P x≠0 36 01 ИП 6 3 3 - P x≠0 36 01
3590 ИП 6 ИП 3 P ИП 90 + - P x<0 35 40 ИП 6
3600 П C В/О 0 П 7 9 0 4 7 P П 08
3610 1 0 0 П 1 1 K П 8 K ИП 7 K П 7 ИП 7 1
3620 + П 7 PF L1 36 14 P ПП 36 65 П 7 1
3630 - P x=0 36 41 P ПП 37 38 P ПП 36 65
3640 П 7 ИП 7 PP П 91 28 PP П 91 26 ИП 3 P x≥0
3650 36 64 2 PP П 90 10 4 7 6 5
3660 K П D P ПП 35 39 В/О 0 PP П 90 30 1
3670 PP П 91 20 6 3 П 1 3 PP П 90 31
3680 ИП 1 PP П 91 22 PP ИП 90 34 7 1 -
3690 P x=0 37 33 PP ИП 90 34 1 1 4 -
3700 P x=0 37 33 PP ИП 90 34 9 7 - P x=0
3710 37 33 PP ИП 90 34 1 1 8 - P x=0
3720 37 33 PP П 90 31 PP ИП 90 33 4 -
3730 P x≠0 37 36 PF L1 36 76 ИП 1 В/О 3 PP П
3740 90 31 7 1 PP П 90 34 1 1 4
3750 PP П 90 34 9 7 PP П 90 34 1 1
3760 8 PP П 90 34 1 6 П 1 3 2 PP П
3770 90 34 PF L1 37 67 4 PP П 91 28 PP П
3780 91 25 В/О ИП 0 P П 16 ИП 3 П 0 P ИП 90
3790 5 × 1 9 + П 6 В/О ИП 9 6 0
3800 ÷ F xy K СЧ - В/О ÷ P ИП 18 K {x}
3810 1 , 5 + 2 ÷ ÷ F ln ИП 9 ×
3820 P ИП 99 + 2 7 3 /-/ - P x≥0 38
3830 34 F Bx + K [x] F Bx P П 99 1 ВП 3
3840 - В/О P ИП 16 ИП 4 P ИП 20 ÷ F √ -
3850 F x2 ИП B F x2 + F √ В/О П 8 8 6 4
3860 0 0 ÷ K [x] P ПП 38 98 8 6 4
3870 0 0 × ИП 8 - 3 6 0 0
3880 ÷ K Г→М П 8 K [x] P ПП 38 98 ИП 8 K {x} 1
3890 0 0 × K [x] P ПП 39 49 В/О P ПП 39
3900 49 3 2 PP П 90 20 5 8 PP П
3910 90 20 3 2 PP П 90 20 В/О
3920 1 ВП 4 × K [x] 1 0 0 ÷ P ПП
3930 39 49 5 0 8 5 K П D 3 2 PP П
3940 90 20 PP П 90 20 PP П 90 20 В/О 1
3950 ВП 3 × K [x] 1 ВП 3 ÷ PK П 91
3960 В/О 3 PP П 90 10 8 B↑ 4 0 K П E
3970 5 0 9 4 PP П 90 15 P ПП 35 39
3980 В/О C2h E2h 'т' EEh 'ю' E4h 'ф' 20h ' ' ECh 'ь' E0h 'р' EDh 'э' E5h 'х'
3990 E2h 'т' F0h 'Ё' E0h 'р' 00h DDh EAh 'ъ' E8h 'ш' EFh 'я' E0h 'р' E6h 'ц'
4000 20h ' ' EFh 'я' EEh 'ю' E3h 'у' E8h 'ш' E1h 'с' E0h 'р' E5h 'х' F2h 20h ' '
4010 EEh 'ю' F2h 20h ' ' F3h E4h 'ф' F3h F8h FCh FFh 2Eh '.'
4020 00h C2h F1h 'ё' EFh 'я' FBh F8h EAh 'ъ' E0h 'р' 2Eh '.' 20h ' '
4030 CAh EEh 'ю' F0h 'Ё' E0h 'р' E1h 'с' EBh 'ы' FCh 20h ' ' F1h 'ё' E3h 'у'
4040 EEh 'ю' F0h 'Ё' E0h 'р' E5h 'х' F2h 2Eh '.' 00h D3h E4h 'ф' E0h 'р'
4050 F0h 'Ё' 2Eh '.' 20h ' ' CAh EEh 'ю' F0h 'Ё' E0h 'р' E1h 'с' EBh 'ы' FCh
4060 20h ' ' F0h 'Ё' E0h 'р' E7h 'ч' E1h 'с' E8h 'ш' E2h 'т' E0h 'р' E5h 'х' F2h
4070 F1h 'ё' FFh 2Eh '.' 00h DDh EAh 'ъ' E8h 'ш' EFh 'я' E0h 'р' E6h 'ц'
4080 20h ' ' EFh 'я' EEh 'ю' E3h 'у' E8h 'ш' E1h 'с' 20h ' ' EEh 'ю' F2h 20h ' '
4090 F0h 'Ё' E0h 'р' E4h 'ф' E8h 'ш' E0h 'р' F6h E8h 'ш' E8h 'ш' 2Eh '.' 00h
4100 CAh EEh 'ю' F0h 'Ё' E0h 'р' E1h 'с' EBh 'ы' FCh 20h ' ' EFh 'я' EEh 'ю'
4110 E3h 'у' E8h 'ш' E1h 'с' 20h ' ' F1h 'ё' F0h 'Ё' E5h 'х' E4h 'ф' E8h 'ш' 20h ' '
4120 E7h 'ч' E2h 'т' B8h E7h 'ч' E4h 'ф' 2Eh '.' 00h C7h C5h CCh
4130 CBh DFh 20h ' ' CFh CEh C3h C8h C1h CBh C0h
4140 21h '!' 00h CFh EBh 'ы' E0h 'р' EDh 'э' E5h 'х' F2h E0h 'р' 20h ' '
4150 00h CCh E5h 'х' F2h E5h 'х' EEh 'ю' F0h 'Ё' E8h 'ш' F2h EDh 'э'
4160 FBh E9h 'щ' 20h ' ' F0h 'Ё' EEh 'ю' E9h 'щ' 21h '!' 00h CFh EEh 'ю'
4170 FFh F1h 'ё' 20h ' ' E0h 'р' F1h 'ё' F2h E5h 'х' F0h 'Ё' EEh 'ю' E8h 'ш'
4180 E4h 'ф' EEh 'ю' E2h 'т' 00h 3Ch '<' CDh E5h 'х' ECh 'ь' E5h 'х' E7h 'ч'
4190 E8h 'ш' E4h 'ф' E0h 'р' 3Eh '>' 00h 55h 'U' 54h 'T' 52h 'R' 4Eh 'N' 3Ah ':'
4200 20h ' ' 00h 56h 'V' 52h 'R' 41h 'A' 44h 'D' 3Ah ':' 20h ' ' 00h 41h 'A'
4210 4Eh 'N' 47h 'G' 4Ch 'L' 3Ah ':' 20h ' ' 00h 44h 'D' 48h 'H' 4Fh 'O' 52h 'R'
4220 3Ah ':' 20h ' ' 00h 44h 'D' 4Fh 'O' 52h 'R' 42h 'B' 3Ah ':' 20h ' ' 00h
4230 52h 'R' 4Fh 'O' 52h 'R' 42h 'B' 3Ah ':' 20h ' ' 00h 44h 'D' 53h 'S' 54h 'T'
4240 52h 'R' 3Ah ':' 20h ' ' 00h 52h 'R' 50h 'P' 4Ch 'L' 4Eh 'N' 3Ah ':' 20h ' '
4250 00h 44h 'D' 4Eh 'N' 45h 'E' 45h 'E' 3Ah ':' 20h ' ' 00h 44h 'D' 50h 'P'
4260 4Ch 'L' 4Eh 'N' 3Ah ':' 20h ' ' 00h D0h E5h 'х' F1h 'ё' F3h F0h 'Ё'
4270 F1h 'ё' 20h ' ' 00h 53h 'S' 43h 'C' 4Fh 'O' 52h 'R' 3Ah ':' 20h ' ' 00h
4280 54h 'T' 54h 'T' 52h 'R' 4Eh 'N' 3Ah ':' 20h ' ' 00h 54h 'T' 52h 'R' 41h 'A'
4290 44h 'D' 3Ah ':' 20h ' ' 00h C2h F0h 'Ё' E5h 'х' ECh 'ь' FFh 20h ' '
4300 EFh 'я' EEh 'ю' EBh 'ы' E5h 'х' F2h E0h 'р' 20h ' ' 00h D1h 20h ' '
4310 C2h CEh C7h C2h D0h C0h D9h C5h CDh C8h
4320 C5h CCh 21h '!' 00h 30h '0' 20h ' ' 2Dh '-' 20h ' ' EDh 'э' E5h 'х'
4330 E9h 'щ' F2h F0h 'Ё' EEh 'ю' EDh 'э' EDh 'э' E0h 'р' FFh 20h ' ' E7h 'ч'
4340 E2h 'т' E5h 'х' E7h 'ч' E4h 'ф' E0h 'р' 00h 31h '1' 20h ' ' 2Dh '-' 20h ' '
4350 D1h EEh 'ю' EBh 'ы' EDh 'э' E5h 'х' F7h EDh 'э' E0h 'р' FFh 20h ' '
4360 F1h 'ё' E8h 'ш' F1h 'ё' F2h E5h 'х' ECh 'ь' E0h 'р' 00h D7h E8h 'ш'
4370 F1h 'ё' EBh 'ы' EEh 'ю' 20h ' ' EFh 'я' EBh 'ы' E0h 'р' EDh 'э' E5h 'х' F2h
4380 3Ah ':' 00h CCh E8h 'ш' F1h 'ё' F1h 'ё' E8h 'ш' FFh 20h ' ' 27h '''
4390 D1h EFh 'я' E0h 'р' F1h 'ё' E5h 'х' EDh 'э' E8h 'ш' E5h 'х' 27h ''' 3Fh '?'
4400 00h 28h '(' C1h C0h C7h C0h 29h ')' 20h ' ' 09h 09h
4410 09h 00h 28h '(' CCh E5h 'х' E4h 'ф' FCh 29h ')' 20h ' ' 09h
4420 09h 09h 00h 28h '(' D2h E8h 'ш' F2h E0h 'р' EDh 'э' 29h ')'
4430 20h ' ' 09h 09h 00h 28h '(' D1h E5h 'х' F0h 'Ё' E5h 'х' E1h 'с'
4440 F0h 'Ё' EEh 'ю' 29h ')' 20h ' ' 00h 28h '(' C7h EEh 'ю' EBh 'ы' EEh 'ю'
4450 F2h EEh 'ю' 29h ')' 20h ' ' 09h 00h 28h '(' CFh EBh 'ы' E0h 'р'
4460 F2h E8h 'ш' EDh 'э' E0h 'р' 29h ')' 20h ' ' 00h 28h '(' C7h E5h 'х'
4470 ECh 'ь' EBh 'ы' FFh 29h ')' 09h 09h 09h 00h 28h '(' CCh
4480 E5h 'х' F0h 'Ё' EAh 'ъ' F3h F0h 'Ё' E8h 'ш' E9h 'щ' 29h ')' 00h 28h '('
4490 C2h E5h 'х' EDh 'э' E5h 'х' F0h 'Ё' E0h 'р' 29h ')' 09h 09h 00h
4500 28h '(' CCh E0h 'р' F0h 'Ё' F1h 'ё' 29h ')' 09h 09h 09h 09h
4510 00h 28h '(' DEh EFh 'я' E8h 'ш' F2h E5h 'х' F0h 'Ё' 29h ')' 09h
4520 09h 00h 28h '(' D1h E0h 'р' F2h F3h F0h 'Ё' EDh 'э' 29h ')'
4530 09h 09h 00h 28h '(' D3h F0h 'Ё' E0h 'р' EDh 'э' 29h ')' 09h
4540 09h 09h 09h 00h 28h '(' CDh E5h 'х' EFh 'я' F2h F3h
4550 EDh 'э' 29h ')' 09h 09h 00h 28h '(' CFh EBh 'ы' F3h F2h
4560 EEh 'ю' EDh 'э' 29h ')' 09h 09h 00h 28h '(' D6h E5h 'х' F0h 'Ё'
4570 E5h 'х' F0h 'Ё' E0h 'р' 29h ')' 09h 09h 00h 00h C4h EEh 'ю'
4580 20h ' ' C7h E5h 'х' ECh 'ь' EBh 'ы' E8h 'ш' 20h ' ' 00h CDh CEh
4590 C2h DBh C9h 20h ' ' DDh C4h C5h CCh 00h 2Ah '*'
4600 20h ' ' C7h C2h C5h C7h C4h C0h 20h ' ' 2Ah '*' 00h
4610 20h ' ' F1h 'ё' E2h 'т' 2Eh '.' EBh 'ы' E5h 'х' F2h 00h D0h E0h 'р'
4620 E7h 'ч' ECh 'ь' E5h 'х' F0h 'Ё' 20h ' ' 00h 20h ' ' D1h EEh 'ю' EBh 'ы'
4630 EDh 'э' F6h E0h 'р' 00h D7h E8h 'ш' F1h 'ё' EBh 'ы' EEh 'ю' 20h ' '
4640 EFh 'я' EBh 'ы' E0h 'р' EDh 'э' E5h 'х' F2h 3Ah ':' 20h ' ' 00h CFh
4650 F0h 'Ё' E8h 'ш' EDh 'э' FFh F2h 20h ' ' F1h 'ё' E8h 'ш' E3h 'у' EDh 'э'
4660 E0h 'р' EBh 'ы' 20h ' ' 53h 'S' 4Fh 'O' 53h 'S' 21h '!' 00h CCh E8h 'ш'
4670 F1h 'ё' F1h 'ё' E8h 'ш' FFh 20h ' ' E2h 'т' FBh EFh 'я' EEh 'ю' EBh 'ы'
4680 EDh 'э' E5h 'х' EDh 'э' E0h 'р' 21h '!' 00h C7h C5h CCh CBh
4690 DFh 20h ' ' D1h CFh C0h D1h C5h CDh C0h 21h '!'
4700 00h CCh E8h 'ш' F1h 'ё' F1h 'ё' E8h 'ш' FFh 20h ' ' EDh 'э' E5h 'х'
4710 20h ' ' F3h E4h 'ф' E0h 'р' EBh 'ы' E0h 'р' F1h 'ё' FCh 2Eh '.' 00h
4720 D2h E5h 'х' ECh 'ь' EFh 'я' E5h 'х' F0h 'Ё' E0h 'р' F2h F3h F0h 'Ё'
4730 E0h 'р' 20h ' ' 00h 50h 'P' 4Ch 'L' 4Eh 'N' 47h 'G' 3Ah ':' 20h ' ' 00h
4740 52h 'R' 41h 'A' 4Eh 'N' 47h 'G' 3Ah ':' 20h ' ' 00h 20h ' ' EAh 'ъ' ECh 'ь'
4750 00h 20h ' ' E3h 'у' F0h 'Ё' 00h 20h ' ' EAh 'ъ' ECh 'ь' 2Fh '/' 63h 'c'
4760 20h ' ' 00h 20h ' ' 63h 'c' 00h D4h E0h 'р' E9h 'щ' EBh 'ы' 20h ' '
4770 F1h 'ё' EEh 'ю' F5h F0h 'Ё' E0h 'р' EDh 'э' B8h EDh 'э' 2Eh '.' 00h
4780 43h 'C' F7h B8h F2h 3Ah ':' 20h ' ' 00h C3h D0h C0h
4790 C2h C8h CBh A8h 'и' D2h 2Dh '-' 58h 'X' 58h 'X' 49h 'I' 2Eh '.'
4800 20h ' ' C2h E5h 'х' F0h 'Ё' F1h 'ё' E8h 'ш' FFh 20h ' ' 32h '2' 2Eh '.'
4810 32h '2' 00h CCh E5h 'х' F1h 'ё' F2h EEh 'ю' 20h ' ' E4h 'ф' E5h 'х'
4820 E9h 'щ' F1h 'ё' F2h E2h 'т' E8h 'ш' FFh 3Ah ':' 00h C2h FBh
4830 E1h 'с' EEh 'ю' F0h 'Ё' 20h ' ' E7h 'ч' E0h 'р' E4h 'ф' E0h 'р' EDh 'э' E8h 'ш'
4840 FFh 3Ah ':' 00h 30h '0' 20h ' ' 2Dh '-' 20h ' ' F1h 'ё' E2h 'т' EEh 'ю'
4850 E1h 'с' EEh 'ю' E4h 'ф' EDh 'э' FBh E9h 'щ' 20h ' ' EFh 'я' EEh 'ю' EBh 'ы'
4860 B8h F2h 00h 31h '1' 20h ' ' 2Dh '-' 20h ' ' E7h 'ч' E5h 'х' ECh 'ь'
4870 EDh 'э' E0h 'р' FFh 20h ' ' E3h 'у' F0h 'Ё' F3h EFh 'я' EFh 'я' E0h 'р'
4880 00h 32h '2' 20h ' ' 2Dh '-' 20h ' ' EFh 'я' EBh 'ы' E0h 'р' EDh 'э' E5h 'х'
4890 F2h FBh 2Dh '-' E3h 'у' E8h 'ш' E3h 'у' E0h 'р' EDh 'э' F2h FBh
4900 00h 33h '3' 20h ' ' 2Dh '-' 20h ' ' ECh 'ь' E0h 'р' EBh 'ы' FBh E5h 'х'
4910 20h ' ' EFh 'я' EBh 'ы' E0h 'р' EDh 'э' E5h 'х' F2h FBh 00h 34h '4'
4920 20h ' ' 2Dh '-' 20h ' ' E2h 'т' F1h 'ё' FFh 20h ' ' F1h 'ё' E8h 'ш' F1h 'ё'
4930 F2h E5h 'х' ECh 'ь' E0h 'р' 00h 35h '5' 20h ' ' 2Dh '-' 20h ' ' EFh 'я'
4940 EEh 'ю' EBh 'ы' E5h 'х' F2h 20h ' ' EAh 'ъ' 20h ' ' D1h EEh 'ю' EBh 'ы'
4950 EDh 'э' F6h F3h 00h CFh F0h 'Ё' E8h 'ш' EBh 'ы' B8h F2h
4960 20h ' ' CDh E5h 'х' ECh 'ь' E5h 'х' E7h 'ч' E8h 'ш' E4h 'ф' FBh 3Fh '?'
4970 00h CDh E0h 'р' E9h 'щ' E4h 'ф' E5h 'х' EDh 'э' 20h ' ' E0h 'р' F1h 'ё'
4980 F2h E5h 'х' F0h 'Ё' EEh 'ю' E8h 'ш' E4h 'ф' 20h ' ' 00h CFh EEh 'ю'
4990 EFh 'я' E0h 'р' E4h 'ф' E0h 'р' EDh 'э' E8h 'ш' E5h 'х' 20h ' ' E2h 'т' 20h ' '
5000 00h F2h E5h 'х' F0h 'Ё' ECh 'ь' EEh 'ю' E1h 'с' EBh 'ы' EEh 'ю' EAh 'ъ'
5010 21h '!' 00h F0h 'Ё' E5h 'х' E7h 'ч' E5h 'х' F0h 'Ё' E2h 'т' F3h E0h 'р'
5020 F0h 'Ё' 21h '!' 00h E4h 'ф' E2h 'т' E8h 'ш' E3h 'у' E0h 'р' F2h E5h 'х'
5030 EBh 'ы' FCh 21h '!' 00h EAh 'ъ' EEh 'ю' ECh 'ь' EFh 'я' FCh FEh
5040 F2h E5h 'х' F0h 'Ё' 21h '!' 00h F0h 'Ё' E5h 'х' E3h 'у' F3h EBh 'ы'
5050 FFh F2h EEh 'ю' F0h 'Ё' 21h '!' 00h DDh EDh 'э' E5h 'х' F0h 'Ё'
5060 E3h 'у' E8h 'ш' FFh 20h ' ' 00h D1h EAh 'ъ' EEh 'ю' F0h 'Ё' EEh 'ю'
5070 F1h 'ё' F2h FCh 20h ' ' 00h CAh EEh 'ю' EDh 'э' F2h F0h 'Ё'
5080 EEh 'ю' EBh 'ы' FCh 20h ' ' 00h 20h ' ' 25h '%' 20h ' ' 00h 20h ' '
5090 ECh 'ь' E5h 'х' F1h 'ё' 00h 2Fh 2Eh 00h 00h E0h 01h
5100 00h 00h 00h 00h 1Fh 3Eh 00h 00h 00h E0h
5110 00h C0h 01h 00h 00h 10h 00h 00h 02h 00h
5120 00h 0Ch 00h 00h 0Ch 00h 00h 02h 00h 00h
5130 10h 00h 80h 01h 00h 00h 60h 00h 40h 00h
5140 F8h 00h 80h 00h 40h 1Ch FCh 01h 80h 00h
5150 20h 1Eh FCh 03h 00h 01h 30h 3Fh FEh 03h
5160 00h 02h 30h 7Fh FFh 03h 00h 02h 38h 3Fh
5170 FFh 03h 00h 04h 34h 3Fh FFh 07h 00h 08h
5180 04h 3Fh FFh 1Fh 00h 08h 84h 1Fh FFh FFh
5190 00h 08h 82h 1Fh FFh FFh 07h 10h FAh 7Fh
5200 FFh FFh FFh 10h FAh 3Fh FFh FFh FFh 11h
5210 FAh 1Fh FFh FFh FFh 11h FAh 0Fh FFh FFh
5220 FFh 11h F9h 1Fh FFh FFh FFh 21h F9h 1Fh
5230 FFh FFh FFh 21h E1h 0Fh FBh FFh 7Fh 20h
5240 C3h 1Fh E3h FFh 1Fh 20h C7h 67h CFh 1Fh
5250 00h 20h C6h E3h 9Fh 03h 00h 10h FEh E3h
5260 3Fh 01h 3Ch 10h FEh E3h FFh 00h 7Eh 10h
5270 E6h FFh FFh 00h 18h 10h E6h FFh FFh 00h
5280 00h 10h F8h FCh F9h 00h 00h 08h FCh F8h
5290 E1h 00h 00h 08h FCh F3h 4Fh 00h 00h 08h
5300 F8h F7h 1Fh 00h 00h 04h F0h FFh 1Fh 00h
5310 00h 02h F0h FFh 1Fh 00h 00h 02h E0h FFh
5320 1Fh 00h 00h 01h C0h FFh 1Fh 00h 80h 00h
5330 C0h FFh 1Fh 00h 80h 00h 80h FFh 0Fh 00h
5340 60h 00h 00h FEh 0Fh 00h 10h 00h 00h FCh
5350 1Fh 00h 0Ch 00h 00h F0h FFh 00h 02h 00h
5360 00h E0h FFh CFh 01h 00h 00h 00h FFh 3Fh
5370 00h 00h 00h 00h E0h 01h 00h 00h    

Исходный текст для кросс-компилятора

Файл Gravilet22.mkl

; Гравилет-XXI
; Версия 2.2, 01.05.2012

; Регистры:
; 0,4,5,A,B - как в старом Гравилете
; 1,2,7,8 - рабочие
; 3 - число планет (-1, если начинается новый полет)
; 6 - косвенный адрес
; 9 - время маневра
; C - текущая планета
; D - константа 9021
; E - константа 9000
; 15 - предыдущий коэф-т гравитации
; 16 - временная трансверс. скорость
; 17 - признак окрестностей планеты
; 18 - радиус излучения звезды
; 19 - адрес начала названий планет
; 20+5*n - радиус орбиты n-астероида,угол n-астероида,
;      радиус n-астероида,расстояние до него,минерал на нем 
;      (0-астероид - база/Земля)
; 70 - состояние корабля (-2,-1,1,2)
; 71 - признак попадания в рой (-1,0,1)
; 72 - мощность двигателя (0 для звезды, 
;      5 для Солнечной системы, 3 для полета к Солнцу)
; 73 - время полета
; 74 - надежность метеоритной защиты 
;      (0,99 для пульсара, 0,999 для Солнечной системы)
; 75 - признак спасательной миссии
; 76 - ресурс аварийного корабля
; 77 - пеленг аварийного корабля
; 78 - номер планеты-задания (-1 для полета к Солнцу)
; 79 - угловой путь гравилета
; 80-89 - высоты атмосфер планет 0-9
; 90 - признак звездной экспедиции
; 91 - константа 9023
; 92 - скорость Немезиды
; 93 - осталось времени (ресурс)
; 94 - счёт игры
; 95 - расстояние от Солнца до Немезиды
; 96 - угол между кораблем и Немезидой
; 97 - радиус Немезиды/параметр звезды
; 98 - расстояние до Немезиды/звезды
; 99 - температура корабля

	CX
	P M 94
	PP M 9045
; Загрузка из файла
	P GSB FIND_FILE
	1 -
	P X!=0 START
	1 +
	PP M 9128
	PP M 9123
	PP M 9128
	PP M 9124
; Узнаем, где сохранили файл
	RM 3
	P X>=0 START
	P X=0 PRINT
	P RM 90
	P X=0 INTERSTELLAR1
	P GOTO INTERSTELLAR2
; Начинаем заново
START:
	CX
	M B
	P M 15
	P M 17
	P M 21
	P M 23
	P M 24
	P M 71
	P M 73
	P M 75
	P M 77
	P M 78
	P M 79
	P M 90
	P M 92
	P M 95
	P M 97
	.NUM PLAN0
	P M 19
	60 M 9
	5
	P M 72
	0,999
	P M 74
	1
	P M 70
	+/-
	P M 99
	180
	F PI
	/
	M 5
	9 EE 3
	M E
	21 +
	M D
	2 +
	P M 91
	10 M 3
; Начальный экран
	2 PP M 9010
	.NUM TITLE1
	K M D
	16 ENT 0
	K M E
	.NUM TITLE2
	K M D
	32 ENT 0
	K M E
	.NUM MESS11A
	K M D
	40 ENT 0
	K M E
	.NUM MESS11B
	K M D
GAME_SELECT:
	P GSB GET_KEY
	RM 6
	1 -
	P X!=0 SOLARS
	P X<0 GAME_SELECT
; Генерация системы пульсара
	56
	<->
	K M E
	.NUM MESS11
	K M D
	P GSB GET_KEY
	RM C
	P X=0 VALID_NUM
	K RAN
	9 *
	1 +
	K INT
VALID_NUM:
	M 3
	M 0
	.NUM MESS12
	P M 19
	0
	P M 72
	1 EE 5   ; радиус излучения звезды
	K RAN
	+
	P M 18
	1 EE 11  ; постоянная звезды
	M 4
	1 EE 6   ; радиус орбиты базы
 	P M 20
	1	  ; радиус базы
	P M 22
	+
	M A
	24 M 6
	P GSB RAND_PLANETS
	RM 3
	1 +
	M 3
; Аварийный корабль в миссии
	56 ENT 0
	K M E
	.NUM MESS11D
	K M D
	P GSB GET_KEY
	RM C
	P X!=0 NO_RESCUE
	1
	P M 75
	0
	P M 27
	10 P M 29
; Ресурс аварийного корабля - от 6 до 12 часов
	K RAN
	21600
	*
	F ANS
	+
	K INT
	P M 76
NO_RESCUE:
; Планеты пульсара - без атмосфер
	10 M 0
	79 M 6
	0
NO_ATM:
	K M 6
	PF L0 NO_ATM
	0,99
	P M 74
	21600 ; дается 6 часов на каждую планету
	RM 3
	*
	P M 93
INIT:
	RM 4	
	P RM 20
	/
	F SQRT
	M 0
; Основной цикл
BEGIN:
; Проверка входа в рой
	P RM 71
	P X>=0 PRINT
	P RM 74
	F SQRT
	P GSB COUNT_PROB
	P X<0 PRINT
	1 P M 71
PRINT:
	2 PP M 9010
	RM C
	5 *
	19 +
	M 6
	P RM 71
	P X!=0 NO_SWARM
	0 
	P M 17
	<->
	P X<0 NO_BELT1
	RM C
	9 -
	P X!=0 NO_SWARM
	.NUM MESS2B
	P GOTO NO_DATA
NO_BELT1:
	.NUM MESS2A
	P GOTO NO_DATA
NO_SWARM:
	P RM 75
	P X!=0 NO_RESCUE1
	RM C
	1 -
	P X=0 NO_RESCUE1
	P RM 29
	P X<0 NO_RESCUED
	.NUM MISS
	P GOTO MISSION_OVER
; Вывод данных по миссии спасения и проверка ресурса
NO_RESCUED:
	P RM 76
	P X<0 STILL
	.NUM FAILED
	P GOTO MISSION_OVER
STILL:
	.NUM SOS
	K M D
	16 ENT 0
	K M E
	.NUM PELENG
	K M D
	P RM 77
	P GSB ROUND
	.NUM MESS21
	K M D
	24 ENT 0
	K M E
	.NUM RANGE
	K M D
	P RM 28
	P GSB ROUND
	.NUM MESS20
MISSION_OVER:
	K M D
	32 ENT 0
	K M E
	P GOTO DATA_RESCUE
NO_RESCUE1:
; Вывод данных по Немезиде
	RM C
	9 -
	P X=0 NO_NEMESIS2
	P RM 95
	P X!=0 NO_NEMESIS2
	0 ENT 32
	K M E
	.NUM MESS2C
	K M D
	94
	M 6
	P GOTO CALC_NEMESIS
NO_NEMESIS2:
	.NUM MESS2
	K M D
	RM C
	P GSB ROUND
CALC_NEMESIS:
	K RM 6
	M 7
	8 ENT 0
	K M E
	P RM 17
	P X=0 SHOW_ORBIT
	RM 7
	.NUM MESS6A
	P GOTO SHOW_FIRST	
SHOW_ORBIT:
	RM A
	RM 7
	-
	.NUM MESS6
SHOW_FIRST:
	K M D
	<->
	P GSB ROUND
	.NUM MESS20
	K M D
	16 ENT 0
	K M E
	P RM 17
	P X=0 NEAR_AST1
	.NUM MESS5
	K M D
	K RM 6
	M 2
	P GSB ROUND
	.NUM MESS21
	K M D
	P GOTO TEST_AST1
NEAR_AST1:
	.NUM MESS5A
	K M D
	RM A
	K RM 6
	M 2
	*
	RM 5
	/
	P GSB ROUND
	.NUM MESS20
	K M D
TEST_AST1:
	24 ENT 0
	K M E
	.NUM MESS8
	K M D
	K RM 6
	M 8
	K RM 6
	P GSB ROUND
	.NUM MESS20
NO_DATA:
	K M D
	32 ENT 0
	K M E
	P RM 17
; Вывод дополнительных параметров
	P X<0 DOP_PAR
	.NUM MESSD1
	K M D
	P RM 94
	P GSB ROUND
	40 ENT 0
	K M E
	.NUM MESSD2
	K M D
; Если угол увеличивается
COUNT_TIME:
	RM 2
	P RM 79
	RM 9
	/
; Угловая скорость планет, кроме Немезиды
	P RM 95
	P X!=0 NEM_SPEED
	F R
	P GOTO NEM_SPEED1
NEM_SPEED:
	F R
	RM 4
	RM 7
	/
	F SQRT
	RM 7
	/
	RM 5
	*
	-
NEM_SPEED1:
	P X!=0 ZERO_SPEED1
	/
	P X>=0 NO_CIRCLE
	360
	RM 2
	+/-
	K SGN
	*
	RM 2
	+
	M 2
	P GOTO COUNT_TIME
NO_CIRCLE:
	K ABS
	K INT
	P GSB ROUND
	.NUM MESS23
	K M D
ZERO_SPEED1:
	48 ENT 0
	K M E
	.NUM MESSD3
	K M D
	RM A
	RM 7
	-
	RM B
	P RM 92
	-
	P X!=0 ZERO_SPEED2
	/
	P X<0 ZERO_SPEED2
	K ABS
	K INT
	P GSB ROUND
	.NUM MESS23
	K M D
ZERO_SPEED2:
	56 ENT 0
	K M E
	.NUM MESSD4
	K M D
	P RM 73
	P GSB SHOW_TIME
	P GOTO TEST_COMP	
DOP_PAR:
	P X=0 NEAR_AST
DATA_RESCUE:
	.NUM MESS7
	K M D
	RM A
	P GOTO TEST_AST2
NEAR_AST:
	RM C
	9 -
	P X=0 SHOW_RAD
	P RM 95
	P X!=0 SHOW_RAD
	P RM 20
	-
	.NUM MESS7B
	P GOTO TEST_AST
SHOW_RAD:
	RM 8
	.NUM MESS7A
TEST_AST:
	K M D
	<->
TEST_AST2:
	P GSB ROUND
	.NUM MESS20
	K M D
	40 ENT 0
	K M E
	.NUM MESS3
	K M D
	P RM 95
	P X!=0 TEST_U1
	RM C
	9 -
	P X!=0 NO_TEST_U
TEST_U1:
	RM C
	1 -
	P X=0 TEST_U
	P RM 75
	P X=0 NO_TEST_U
TEST_U:
	P RM 17
	P X=0 PLANET1
NO_TEST_U:
	RM 0
	P GOTO SHOW_U
PLANET1:
	RM 0
	RM 4
	RM 7
	/
	F SQRT
	-
SHOW_U:
	P GSB ROUND
	P RM 17
	P X!=0 REL1
	96
	PP M 9020
REL1:
	.NUM MESS22
	K M D
	48 ENT 0
	K M E
	.NUM MESS4
	K M D
	RM C
	9 -
	P X=0 NO_NEM_SEL
	P RM 17
	P X=0 PLANET2
NO_NEM_SEL:
	RM B
	P GOTO SHOW_V
PLANET2:
	RM B
	P RM 92
	-
SHOW_V:
	P GSB ROUND
	P RM 17
	P X!=0 REL2
	96
	PP M 9020
REL2:
	.NUM MESS22
	K M D
; Проверка исправности компьютера
TEST_COMP:
	P RM 70
	P X<0 NO_COMP
	2 PP M 9010
NO_COMP:
	56 ENT 0
	K M E
	P RM 17
	P X>=0 SHOW_NAME
	P X=0 SHOW_TEMP
; Вывод оставшегося времени/температуры
	P RM 99
	P X>=0 SHOW_TEMP
	.NUM TEMP
	K M D
	<->
	40 /
	25 +
	K INT
	P GSB ROUND
	.NUM MESS21
	K M D
	P GOTO SHOW_NAME
SHOW_TEMP:
	.NUM MESS9
	K M D
	P RM 93
	P GSB SHOW_TIME
; Вывод названия планеты или минерала
SHOW_NAME:
	P RM 70
	P X>=0 NOT_OPEN
	P RM 95
	P X!=0 NO_TEST_MISS
	RM C
	9 -
	P X!=0 NOT_OPEN
	8 +
	P X=0 NO_TEST_MISS
	P RM 75
	P X=0 NOT_OPEN
NO_TEST_MISS:
	0 ENT 60
	K M E
	P RM 19
	K RM 6
	P X>=0 OPEN_AST
	P X=0 NOT_OPEN
OPEN_AST:
	K ABS
	3,5 -
	P X=0 NO_CERES
	CX
	5,5
NO_CERES:
	F ANS
	+
	11 *
	+
	K M D
; Является ли планета целью?
	P RM 90
	P X=0 SHOW_STAR
	P RM 78
	P X!=0 NOT_OPEN
	RM C
	-
	P X=0 NOT_OPEN
SHOW_STAR:
	0 ENT 48
	K M E
	42
	PP M 9020
NOT_OPEN:
	P GSB GET_KEY 
; Действия в режиме индикации
	RM C
	P X=0 ZERO_KEY
	P RM 90
	P X!=0 ZERO_KEY
; Показ информации о звезде
STAR_SHOW:
	2 PP M 9010
	.NUM STAR0
	K M D
	16 ENT 0
	K M E
	.NUM STAR1
	K M D
	P RM 98
	EE 1
	K INT
	10 /
	P GSB ROUND
	.NUM STAR2
	K M D
	32 ENT 0
	K M E
	.NUM STAR3
	K M D
	P RM 97
	10 *
	K INT
	10 /
	P GSB ROUND
	.NUM STAR4
	K M D
	48 ENT 0
	K M E
	.NUM STAR5
	K M D
	RM 3
	P GSB ROUND
	P GOTO NOT_OPEN	
ZERO_KEY:
	RM 6
	32 -
	P X!=0 DEATH1 ; Самоубийство
	1 -
	P X=0 SAVE_FILE
	P GSB WRITE_FILE
	P GOTO PRINT
SAVE_FILE:
	RM 6
	13 -
	P X!=0 CALC
	1 +
	P X=0 NO_SWITCH
	RM C
	1 -
	P X=0 CAN_SWITCH
	P RM 75
	P X=0 NO_SWITCH
CAN_SWITCH:
	P RM 17
	P X=0 SWITCH0
	1
	P GOTO SWITCH1
SWITCH0:
	0
SWITCH1:
	P M 17
NO_SWITCH:
; Переключение в доп. режим и обратно
	RM 6
	19 -
	P X=0 NO_MODE
	P RM 17
	+/-
	P M 17
NO_MODE:
	RM 6
	14 -
	P X=0 PRINT
; Проверка исправности двигателя
	P RM 70
	K ABS
	2 -
	P X!=0 CALC
; Ввод маневра
ENTER:
	K SCR
	.NUM MESS0
	PP M 9026
	P RM 70
	P X<0 COMP_OK
	0 
	ENT
	P GOTO STOP
COMP_OK:
	RM 0
	RM B
STOP:
	P RM 15
	RM 9
; Главный останов
	R/S
	P X>=0 ENTER
	P X!=0 ENTER
	M 9
	F R
; Проверка коэф-та гравитации (модуль<=10)
	P M 15
	K ABS
	11 -
	P X<0 ENTER
; Проверка наличия щита и расстыковки с ним
	P RM 78
	P X<0 CALC
	P RM 15
	P X<0 CALC
	0 
	P M 78
	4
	P M 72
; Очки за полет к Солнцу
	15 EE 6
	RM A
	-
	P X>=0 CALC
	1 EE 4
	/
	K INT
	P RM 94
	+
	P M 94
CALC:
	P RM 70
	K ABS
	2 -
	P X=0 ENGINE_OK
; Поврежденный двигатель
	K RAN
	21 *
	K INT
	10 -
	P M 15
	RM A
	P RM 18
	/
	60 *
	K INT
	M 9
; Проверка характерных времен
ENGINE_OK:
	RM 9
	RM A
	RM 0
	P X!=0 LIM_U
	/
	K ABS
	10 /
	-
	P X>=0 LIM_U
	F ANS
	K INT
	M 9
LIM_U:	
	RM 9
	RM A
	RM B
	P X!=0 LIM_V
	/
	K ABS
	10 /
	-
	P X>=0 LIM_V
	F ANS
	K INT
	M 9
LIM_V:
; Время полета и ресурс
	P RM 73
	RM 9
	+
	P M 73
	P RM 75
	P X!=0 NO_DECRES
	P RM 76
	P X>=0 NO_DECRES
	RM 9
	-
	P X<0 NO_DECRES
	P RM 94
	1 EE 3
	-
	P M 94
	<->
NO_DECRES:
	P M 76
	P RM 93
	RM 9
	-
	P M 93
; Проверка гибели от удушья
	P X>=0 DEATH1
	RM 9
	RM A
	/
	ENT
	RM B
	*
	1 -
	*
	RM 0
	*
	RM 5
	*
	+/-
	P M 79
	M 2
; Движение Немезиды
	P RM 95
	P X!=0 NO_NEMESIS1
	P RM 92
	RM 9
	*
	+
	P M 95
	P RM 20
	-
	P X>=0 DEATH6
	P RM 96
	RM 2
	+
	P M 96 
NO_NEMESIS1:
; Подготовка цикла углов
	P GSB CYC_PREPARE
; Расчет новых углов всех планет
AST_ANG_CYC:
	RM 4
	K RM 6
	M 7
	/
	F SQRT
	RM 7
	/
	RM 5
	*
	RM 9
	*
	K RM 6
	<->
	-
	RM 2
	+
	180 -
	P X<0 LBL2
LBL3:
	F ANS
	+
	F ANS
	+
	P X>=0 LBL3
LBL2:
	F ANS
	-
	PK M 6
	K RM 6
	K RM 6
	K RM 6
	PF L0 AST_ANG_CYC
	P RM 16
	M 0
; Радиальная траектория?
	RM 2
	K ABS
	1 EE 6 +/-
	-
	P X<0 NO_RADIAL
; Летим по радиальной траектории
	RM A
	RM 0
	*
	RM A
	RM B
	RM 9
	*
	+
	M A
	/
	M 0
	P GOTO STAR_TEST
NO_RADIAL:
	P RM 15
	P RM 72 ; коэфф-т усиления двигателя
	F 10^X
	*
	RM 4
	*
	M 7
; Ближе 29 млн.км от Солнца гравитация не усиливается
	P RM 72
	P X!=0 LINEARG
	RM A
	P RM 18
	-
	P X<0 LINEARG
	RM A
	F ANS
	/
	RM 7
	*
	M 7
LINEARG:
; Начинаем основные вычисления
	RM A
	RM 0
	*
	ENT
	ENT
	M 8
	RM B
	*
	F X^2
	<->
	RM 0
	*
	RM 7
	-
	<->
	F ANS
	F X^2
	+
	F SQRT
	P X!=0 PRINT
	M A
	/
	M 1
; Проверка аргумента арккосинуса (модуль<=1)
	K ABS
	1 -
	P X>=0 CORR_ACOS
	RM 1
	K SGN
	M 1
CORR_ACOS:
	RM 1
	F ARCCOS
	RM B
	RM 0
	*
	P X<0 LBL1
	<->
	+/-
	<->
LBL1:
	F R
	RM 2
	+
	M 2
	F SIN
	RM 8
	/
	RM A
	*
	M B
	RM 8
	RM A
	RM 2
	F COS
	*
	RM 7
	+
	/
	F 1/X
	M 0
	RM 8
	<->
	/
	M A
STAR_TEST:
; Проверка отлета к звезде/обратно
	RM B
	P RM 72
	F 10^X
	-
	P X>=0 STARSPEED 
	5 EE 9
	M 1
	P RM 90
	P X!=0 GO_HOME
	P RM 20
	M 1
GO_HOME:
	RM A
	RM 1
	-
	P X>=0 STARSPEED 
; Показ звезд
	3 PP M 9010
	99 
	M 1
NEXT_STAR:
	K RAN
	30 *
	34 +
	K RAN
	128 *
	PP M 9011
	PF L1 NEXT_STAR
; Начинается полет к звезде или обратно
	P RM 90
	P X=0 SOLARS
	P RM 95
	P X=0 DEATH6
	P GOTO STARGEN
; Проверка пояса астероидов
STARSPEED:
	P RM 72
	P X!=0 NO_LEAVE
	P RM 90
	P X=0 NO_LEAVE
	RM A
	54 EE 7
	-
	P X<0 NO_BELT
	RM A
	33 EE 7
	-
	P X>=0 NO_BELT
	P RM 71
	1 +/-
	P M 71
	<->
	P X<0 PRINT
; Не сломан ли компьютер/двигатель
	P RM 70
	1 -
	P X=0 TEST_IMPACT
	P RM 74 ; Вероятность встретить астероид
	P GSB COUNT_PROB
	P X<0 TEST_IMPACT
	16 ENT 0
	K M E
	.NUM BELT
	K M D
; Начисление очков за размер астероида
	K RAN
	90 *
	10 +
	K INT
	P GSB ROUND
	.NUM MESS20
	K M D
	<->
	P RM 94
	+
	P M 94 	
	P GSB GET_KEY
	P GOTO TEST_IMPACT
; Проверка выхода из пояса
NO_BELT:
	P RM 71
	P X<0 NO_LEAVE
	0
	P M 71
NO_LEAVE:
; Проверка гибели от излучения
	P RM 72
	P X!=0 NO_SUN
	RM A
	5 EE 6
	-
	P X>=0 DEATH3
NO_SUN:
	P RM 78
	P X>=0 NO_METEOR
	P RM 18
	RM A
	P GSB CALC_TEMP
	P X>=0 TEST_IMPACT
; Гибель от тепла или радиации
	RM A
	P RM 18
	2 /
	-
	P X>=0 DEATH3
	P GOTO DEATH5 
TEST_IMPACT:
	P RM 71
	P X!=0 NO_METEOR
; Проверка попадания метеорита (1%/0,1%)
	P RM 74
	F SQRT
	P GSB COUNT_PROB
	P X<0 NO_METEOR
	16 ENT 0
	K M E
	.NUM BREAK0
	K M D
	K RAN ; место попадания
	5 *
	K INT
	P X=0 LOSE_OXYGEN
; Повреждение двигателя
	99
	F 1/X
	K RAN
	F X^Y
	P RM 72
	*
	P M 72
	.NUM BREAK3
	P GOTO SHOW_DAMAGE
LOSE_OXYGEN:
; Потеря кислорода от метеорита
	1 -
	P X=0 LOSE_TERMO
	P RM 93
	K RAN
	F SQRT
	*
	K INT
	P M 93
	.NUM BREAK2
	P GOTO SHOW_DAMAGE
LOSE_TERMO:
; Потеря части терморадиозащиты
	1 -
	P X=0 LOSE_ENGINE
	P RM 18
	K FRAC
	F X^2
	P RM 18
	K RAN
	F SQRT
	F SQRT
	/
	K INT
	+
	P M 18
	.NUM BREAK1
	P GOTO SHOW_DAMAGE
LOSE_ENGINE:
; Заклинивание двигателя
	1 -
	P X=0 LOSE_COMP
	2
	P RM 70
	K SGN
	*
	P M 70
	.NUM BREAK5
	P GOTO SHOW_DAMAGE
LOSE_COMP:
	P RM 70
	K ABS
	+/-
	P M 70
	.NUM BREAK4
; Отчет о попадании
SHOW_DAMAGE:
	K M D
	P GSB GET_KEY
	P GOTO NO_REPAIR
NO_METEOR:
; Проверка ремонта (1%/0,1%)
	P RM 74
	P GSB COUNT_PROB
	P X<0 NO_REPAIR
	1 P M 70
NO_REPAIR:
; Проверка выхода из роя (10%/1%)
	P RM 71
	P X>=0 NO_EXIT
	P RM 74
	F LG
	EE 1
	F 10^X
	P GSB COUNT_PROB
	P X<0 NO_EXIT
	0
	P M 71
NO_EXIT:
; Расчет дистанции до Немезиды
	P RM 95
	P X!=0 PREPARE
	RM A
	-
	F X^2
	RM A
	P RM 96
	*
	RM 5
	/
	F X^2
	+
	F SQRT
	P RM 97
	-
	P X>=0 DEATH4
	P M 98
; Проверка выполнения миссии
	1 EE 3
	-
	P X<0 PREPARE
	RM B
	P X<0 PREPARE
	P RM 71
	P X=0 PREPARE
	P M 95
	P RM 94
	3 EE 3
	+
	P M 94
; Победный экран
	3 PP M 9010
	0 ENT	24
	K M E
	.NUM MISS1
	K M D
	12 ENT 40
	K M E
	.NUM BIG_EARTH
	PP M 9015
	P GSB GET_KEY
	P GOTO PRINT
; Подготовка цикла расстояний
PREPARE:
	P GSB CYC_PREPARE
; Расчет новых расстояний до всех планет
AST_DIST_CYC:
	K RM 6
	M 7
	M 1
	RM A
	K RM 6
	*
	RM 5
	/
	F X^2
	RM A
	RM 7
	-
	F X^2
	+
	F SQRT
	K RM 6
	-
	K M 6
	M 7
	K RM 6
	M 8
	<->
	P X>=0 NO_SOLAR
	P RM 90
	P X!=0 NO_STAR
	P RM 70
	P X>=0 NO_STAR
; Проверка изучения планеты у звезды
	RM 8
	P X=0 NO_NEW_EARTH
	RM 3
	RM 0
	-
	81 +
	M 8
	RM 7
	K RM 8
	-
	P X<0 TEST_LANDING
; Новый Эдем!
	P RM 94
	1 EE 3
	+
	P M 94
	11 +/-
	PK M 6
	RM 6
	M 1
	P GSB SHOW_EARTH
	RM 1
	M 6
	P GOTO TEST_LANDING
NO_NEW_EARTH:
	10 +
	P X=0 TEST_LANDING
	1
	P RM 74
	-
	1 EE 7
	RM 7
	/
	*
	1
	<->
	-
	P GSB COUNT_PROB
	P X<0 TEST_LANDING
	RM 3
	RM 0
	-
	1 +
	M C
	RM 1
	P RM 18
	/
	3 -
; Планеты "Меркурии"
	P X<0 NEXT_GR1
	1 ENT 0
	P GOTO CALC_PLAN
NEXT_GR1:	
	7 -
; Планеты "группы Нового Эдема"
	P X<0 NEXT_GR2
	K RAN
	3 *
	K INT
	P X!=0 CALC_PLAN1
	1 +
	P GOTO CALC_PLAN1
NEXT_GR2:
; Планеты-"гиганты"	
	4 ENT 4
CALC_PLAN:
	K RAN
	*
	+
	K INT
CALC_PLAN1:
	+/-
	PK M 6
; Планета исследована
	P RM 94
	250
	+
	P M 94
	P GOTO TEST_LANDING
; Проверка, даются ли очки за подлет к планетам
NO_STAR:
	P RM 72
	P X!=0 NO_SOLAR
	P RM 78
	P X>=0 NO_SOLAR
	RM 7
	1 EE 4
	-
	P X<0 CYC_OVER
	P RM 78
	P X!=0 SOLAR_SCORE
	10
	RM 0
	-
	-
	P X=0 TEST_LANDING
; Подсчет очков (если меньше 10000 км)
SOLAR_SCORE:
	1 EE 4
	RM 7
	/
	K INT
	RM 9
	100
	/
	*
	RM 8
	K ABS
	*
	K INT
	P RM 78
	K SGN
	1 +
	*
	P RM 94
	+
	P M 94
; Проверка приземления
TEST_LANDING:
	RM 7
	6 EE 3 ; Пределы любой атмосферы
	-
	P X<0 CYC_OVER
	RM 3
	RM 0
	-
	P RM 90
	+
	P X=0 NO_EARTH
	RM 7
	P RM 80
	-
	P X<0 NO_EARTH
	P GSB CALC_SPEED
	0,1 -
	P X<0 DEATH4
	P GOTO WIN
; Проверка гибели в атмосфере
NO_EARTH:
	RM 3
	P RM 90
	+
	RM 0
	-
	80 +
	M 8
	K RM 8
	P X!=0 CYC_OVER
	RM 7
	P GSB CALC_TEMP
	P X<0 DEATH3
	P GOTO CYC_OVER
; Далее - проверки для системы пульсара
NO_SOLAR:
	RM 7
	P X<0 NOT_END
; Проверка условий успешного возвращения
	RM 3
	RM 0
	-
	P X=0 DEATH4
	RM A
	P RM 20
	-
	P X>=0 DEATH4
	P GSB CALC_SPEED
	0,01 -
	P X<0 DEATH4
	P GOTO PULSAR_WIN
WIN:
; Победный экран
	P GSB SHOW_EARTH
PULSAR_WIN:
	.NUM MESS10
	M 2
	P GOTO RETURN
NOT_END:
; Расчет точной дистанции для спасательной миссии
	P RM 75
	P X!=0 NO_PELENG
	RM 6
	29 -
	P X=0 NO_PELENG
	P RM 25
	F X^2
	RM A
	F X^2
	+
	P RM 25
	RM A
	P RM 26
	F COS
	*
	*
	2
	*
	-
	F SQRT
	P M 28
	M 7
; Пеленг
	F X^2
	RM A
	F X^2
	+
	P RM 25
	F X^2
	-
	2
	RM 7
	RM A
	*
	*
	/
	F ARCCOS
	P RM 26
	K SGN
	*
	P M 77
	RM 7
	1 EE 3 ; радиус спасения корабля в миссии
	P GOTO TEST_MISSION
NO_PELENG:
; Работа планетного зонда
	RM 7
	K RAN
	500 
	*
TEST_MISSION:
	-
	P X<0 CYC_OVER
	P RM 70
	P X>=0 CYC_OVER
	RM 8
	P X>=0 CYC_OVER
	ENT
	ENT
	100 * ; Номер планеты * 100 очков
	P RM 94
	+
	P M 94
	F R
	+/-
	PK M 6
CYC_OVER:
	PF L0 AST_DIST_CYC
	P RM 16
	M 0
	P GOTO BEGIN

; Конец игры
DEATH1:
	.NUM MESS1A
	P GOTO LOSE
DEATH3:
	.NUM MESS1B
	P GOTO LOSE
DEATH4:
	.NUM MESS1C
	P GOTO LOSE
DEATH5:
	.NUM MESS1D
	P GOTO LOSE
DEATH6:
	.NUM MESS1E
	P GOTO LOSE
DEATH7:
	0 
	P M 73
	.NUM MESS1F
LOSE:
	M 2
; При уничтожении Немезиды за смерть очки не обнуляются
	P RM 95
	P X!=0 BURN
	P RM 97
	P X!=0 RETURN
BURN:
	0
	P M 94
RETURN:
	1 +/-
	M 3
	P GSB WRITE_FILE
	2 PP M 9010
	RM 2
	K M D
; Время полета
	16 ENT 0
	K M E
	.NUM MESSD4
	K M D
	P RM 73
	P GSB SHOW_TIME
; Окончательный счет 
	32 ENT 0
	K M E
	.NUM SCORE
	K M D
	P RM 94
	P GSB ROUND
	P GSB GET_KEY
	R/S

; Генерация Солнечной системы
SOLARS:
	10 
	M 3
	M 0
	19 M 6
	P RM 90
	M 8
	0
	P M 18
	P M 20
	P M 90
	P GSB RAND_PLANETS ; для заполнения углов и расстояний
	6371 
 	P M 22
	1327 EE 8  ; постоянная Солнца
	M 4
	1496 EE 5  ; орбита Земли
 	P M 20
; Проверяем, возвращаемся ли со звезд
	RM 8
	P X!=0 SUN_SHIP
INTERSTELLAR2:
	P GSB STAR_WAY
	RM 4
	P RM 20
	*
	F SQRT
	5 EE 9
	M A
	/
	M 0
	RM B
	+/-
	M B
	1
	P GOTO SET_TIME
SUN_SHIP:
	<->
	M A
; Земля и корабль
	P RM 22
	1 EE 3 ; корабль на 1000-км орбите Земли
	P M 23
	+ 
	RM 5
	*
	RM A
	/
	+/-
	P M 21
	56 ENT 0
	K M E
	.NUM TITLE4
	K M D
	P GSB GET_KEY
	RM C
	P X!=0 NO_NEMESIS
; Генерация Немезиды
	5 EE 9
	P M 95
	K RAN
	2 EE 3
	*
	F ANS
	+
	+/-
	P M 92
	/
	RM 4
	P RM 20
	/
	F SQRT
	P RM 20
	/
	RM 5
	*
	*
	P M 96
	100
	P M 97
	3 ENT
	P GOTO SET_TIME
NO_NEMESIS:
	2 PP M 9010
	.NUM TITLE3
	K M D
	16 ENT 0
	K M E
	.NUM TITLE3A
	K M D
	24 ENT 0
	K M E
	.NUM TITLE3B
	K M D
	32 ENT 0
	K M E
	.NUM TITLE3C
	K M D
	40 ENT 0
	K M E
	.NUM TITLE3D
	K M D
	48 ENT 0
	K M E
	.NUM TITLE3E
	K M D
	56 ENT 0
	K M E
	.NUM TITLE3F
	K M D
WAIT_TASK:
	P GSB GET_KEY
	RM C
	P X!=0 NO_TASK
; Генерация задания - номера планеты
	1 -
	P X=0 NEXT_TASK1
	1 ENT 1 ENT 3	
	P GOTO MAKE_TASK
NEXT_TASK1:
	1 -
	P X=0 NEXT_TASK2
	2 ENT 4 ENT 4	
	P GOTO MAKE_TASK
NEXT_TASK2:
	1 -
	P X=0 NEXT_TASK3
	3 ENT 8 ENT 2	
	P GOTO MAKE_TASK
NEXT_TASK3:
	1 -
	P X=0 NEXT_TASK4
	3 ENT 1 ENT 9	
	P GOTO MAKE_TASK
NEXT_TASK4:
	1 -
	P X=0 WAIT_TASK
; Полёт к Солнцу
	1 +/-
	P M 78
	3
	P M 72
	1 ENT
	P GOTO SET_TIME
MAKE_TASK:
	K RAN
	*
	+
	K INT
	P M 78
	<->
	P GOTO SET_TIME
NO_TASK:
	2 ENT
SET_TIME: 
	216 EE 4 ; 600 часов
	*
	P M 93 ; время на полёт
	0
	M C
	P M 24
	P M 81
	P M 88
	P M 89
	EE 2
	P M 80
	P M 83
; Меркурий
	579 EE 5 
 	P M 25
	2 /
	K RAN
	+
	P M 18  ; радиус излучения Солнца
	2439
 	P M 27
	1 +/-
	P M 29
; Венера
	1082 EE 5 
 	P M 30
	6052
 	P M 32
	2 +/- 
	P M 34
	250
	P M 82
; Марс
	2279 EE 5 
 	P M 35
	3397
 	P M 37
	3 +/-
	P M 39
; Юпитер
	7783 EE 5 
 	P M 40
	71492
 	P M 42
	4 +/-
	P M 44
	5 EE 3
	P M 84
; Сатурн
	1249 EE 6 
 	P M 45
	60268
 	P M 47
	5 +/-
	P M 49
	1 EE 3
	P M 86
	P M 87
	3 *
	P M 85
; Уран
	2871 EE 6 
 	P M 50
	25559 
 	P M 52
	6 +/-
	P M 54
; Нептун
	4504 EE 6 
 	P M 55
	24746 
 	P M 57
	7 +/-
	P M 59
; Плутон
	5914 EE 6 
 	P M 60
	1160 
 	P M 62
	8 +/-
	P M 64
; Церера
	414 EE 6
 	P M 65
	475
 	P M 67
	3,5 +/-
	P M 69
	P GOTO INIT

; Генерация системы звезды
STARGEN:
	CX
	P M 17
	P M 71
	1
	M C
	P M 90
	P M 96 ; Энергия
	K RAN
	5 *
	5 +
	P M 98
INTERSTELLAR1:
	P GSB STAR_WAY
	K RAN
	7 *
	3 +
	K INT 
	M 3
	M 0
	24 M 6
	RM 4
	K RAN
	3 *
	1 +
	2 /
	P M 97
	*
	M 4
	F ANS
	P RM 18
	*
	P M 18
	100 *
	P M 20
 	M A
	RM 5
	M 1
	80 
	M 5
	P GSB RAND_PLANETS
	RM 1
	M 5
	RM 4
	RM A
	/
	F SQRT
	M 0
	RM B
	+/-
	M B
	432 EE 4
	P M 93
	P GOTO STAR_SHOW

; Генерация планет
RAND_PLANETS:
	P RM 72
	P X=0 NO_PULSAR
; Система пульсара
	K RAN
	P RM 20
	P RM 18
	2 
	*
	M 7
	-
	*
	RM 7
	+
	P GOTO NEXT_STEP
NO_PULSAR:
; Звездная система
	K RAN
	2 *
	K INT
	P X=0 OUTER
	2 ENT 8
	P GOTO REGION
OUTER:
	10 ENT 90
REGION:
	K RAN
	*
	+
	P RM 18
	*
NEXT_STEP:
	M 7
	K M 6
	K RAN
	360 *
	180 -
	K M 6
	P RM 90
	P X=0 STAR_PLAN
; Планеты пульсара
	K RAN
	900   ; (максимальный размер - мин.размер)
	*
	100   ; минимальный размер
	+
	K M 6
	CX
	K M 6
	K RAN
	5 *
	1 +
	K INT
	K M 6
	P GOTO NEXT_PLAN
; Планеты звезды
STAR_PLAN:
	K RAN
	7 EE 3
	*
	3 EE 3
	+
	RM 7
	P RM 18
	10 *
	-
	P X>=0 EARTH_TYPE
	<->
	10 *
	<->	
	CX
	3
EARTH_TYPE:
	P X<0 LOW_ATM
	CX
	1
LOW_ATM:
	<->
	K M 6
; Атмосфера
	*
	50 /
	K M 5
	0
	K M 6
	10 +/-
	K M 6
NEXT_PLAN:
	PF L0 RAND_PLANETS
	RTN

; Межзвездный перелет
STAR_WAY:
	RM 3
	P X!=0 NEXT_MONTH
	1 
	P M 93 ; Осталось
	P M 97 ; Контроль
	CX
	M 2
NEXT_MONTH:
	9 
	M 3
	0 ENT 4
	K M E
	.NUM FLY0
	K M D
	32
	PP M 9020
	P RM 96
	P GSB SHOW_PERCENT
	8 ENT 4
	K M E
	.NUM FLY3
	K M D
	P RM 97
	P GSB SHOW_PERCENT
	16 ENT 4
	K M E
	.NUM FLY2
	K M D
	RM B
	P GSB ROUND
	.NUM MESS22
	K M D
	32
	PP M 9020
	PP M 9020
	24 ENT 4
	K M E
	.NUM MESSD4
	K M D
	RM 2
	0,5 +
	K INT
	P GSB ROUND
	47
	PP M 9020
	P RM 98
	24 *
	1 +
	K INT
	P GSB ROUND
	.NUM FLY5
	K M D
WAIT_TURN:	
	P GSB GET_KEY
	RM 6
	33 -
	P X=0 NO_STAR_FILE
	M 3
	P GSB WRITE_FILE
	P GOTO NEXT_MONTH
NO_STAR_FILE:
	RM 6
	2 -
	P X=0 NOSDEC
; Уменьшение скорости на 1%
	RM B
	0,99 *
	M B
	P GOTO ACT_OVER
NOSDEC:
	6 -
	P X=0 NOIDEC
; Увеличение скорости на 1%
	RM B
	1,01 *
	M B
	P GOTO ACT_OVER
NOIDEC:
	3 +
	P X=0 WAIT_TURN
; Считаем, сколько процентов пролетели за месяц
ACT_OVER:
	P RM 93
	P RM 98
	24 *
	F 1/X
	M 1
	RM B
	15 EE 4 ; Половина скорости света
	/
	M A
	*
	-
	P M 93
	P X>=0 WAY_OVER
; Сколько месяцев летим
	RM 2
	RM A
	+
	M 2
; Сколько потреблено энергии
	P RM 96
	RM 1
	2 /
	-
	P M 96
	P X>=0 DEATH7
; Изменения контроля
	P RM 97
	RM A
	1 -
	K SGN
	F ANS
	F X^2
	*
	20 /
	-
	1 -
	P X>=0 NOT_EXCEED
	0 ENT
NOT_EXCEED:
	1 +
	P M 97
; Случилась ли катастрофа?
	K RAN
	-
	P X>=0 DEATH7
	P GOTO NEXT_MONTH
WAY_OVER:
	RTN

; Нажатие клавиши
GET_KEY:
	K GRPH
GET_KEY1:
	PP RM 9029
	M 6
	K NOT	
	P X!=0 GET_KEY1
	RM 6
	14 -
	P X!=0 KEY_OK
	RM 6
	13 -
	P X!=0 KEY_OK
	RM 6
	12 -
	P X!=0 KEY_OK
	RM 6
	19 -
	P X!=0 KEY_OK
	RM 6
	32 -
	P X!=0 KEY_OK
	RM 6
	33 -
	P X!=0 KEY_OK
	RM 6
	RM 3
	P RM 90
	+
	-
	P X<0 GET_KEY1
	RM 6
	M C
KEY_OK:
	RTN

; Запись в файл Grav
WRITE_FILE:
	0
	M 7
	9047 
	P M 8
	100 M 1 ; число использованных регистров
; В цикле переписываем все регистры в ЭОЗУ
REWRITE:
	1 K M 8
	K RM 7
	K M 7
	RM 7
	1 +
	M 7
	PF L1 REWRITE
	P GSB FIND_FILE
	M 7
	1 -
	P X=0 SAVE_READY
	P GSB CREATE_FILE
	P GSB FIND_FILE
	M 7
SAVE_READY:
	RM 7
	PP M 9128
	PP M 9126
	RM 3
	P X>=0 NO_OUT
	2 PP M 9010
	.NUM MESS24
	K M D
	P GSB GET_KEY
NO_OUT:
	RTN

; Поиск файла Grav
FIND_FILE:
	0 PP M 9030
	1 PP M 9120
	63 M 1
READ_DIR:
	3 PP M 9031
	RM 1
	PP M 9122
	PP RM 9034
	71 -
	P X=0 NEXT_ROW
	PP RM 9034
	114 -
	P X=0 NEXT_ROW
	PP RM 9034
	97 -
	P X=0 NEXT_ROW
	PP RM 9034
	118 -
	P X=0 NEXT_ROW
	PP M 9031
	PP RM 9033
	4 -
 	P X!=0 FILE_FOUND
NEXT_ROW:
	PF L1 READ_DIR
FILE_FOUND:	
	RM 1
	RTN

; Создание файла Grav
CREATE_FILE:
	3 PP M 9031
	71
	PP M 9034
	114
	PP M 9034
	97
	PP M 9034
	118
	PP M 9034
	16 M 1
FILL_NAME:
	32
	PP M 9034
	PF L1 FILL_NAME
	4
	PP M 9128
	PP M 9125
	RTN

; Подготовка цикла планет
CYC_PREPARE:
	RM 0
	P M 16
	RM 3
	M 0
	P RM 90
	5 *
	19 +
	M 6
	RTN

; Расчет вероятности (за каждую минуту)
COUNT_PROB:
	RM 9
	60 /
	<->
	F X^Y
	K RAN
	-
	RTN

; Расчет температуры корабля
CALC_TEMP:
	/
	P RM 18
	K FRAC
	1,5 +
	2 /
	/
	F LN
	RM 9
	*
	P RM 99
	+
	273
	+/-
	-
	P X>=0 ABS_ZERO
	F ANS
	+
	K INT	
ABS_ZERO:
	F ANS
	P M 99
	1 EE 3
	-
	RTN

; Вычисление полной скорости
CALC_SPEED:
	P RM 16
	RM 4
	P RM 20
	/
	F SQRT
	-
	F X^2
	RM B
	F X^2
	+
	F SQRT
	RTN

; Вывод времени в формате ДД : ЧЧ : ММ
SHOW_TIME:
	M 8
	86400
	/
	K INT
	P GSB SHOW_DIVIDER
	86400 *
	RM 8
	<->
	-
	3600 /
	K D->M
	M 8
	K INT	
	P GSB SHOW_DIVIDER
	RM 8
	K FRAC
	100 *
	K INT
	P GSB ROUND
	RTN

; Вывод двоеточия с пробелами
SHOW_DIVIDER:
	P GSB ROUND
	32
	PP M 9020
	<->
	58
	PP M 9020
	<->
	32
	PP M 9020
	<->
	RTN

; Вывод процентов
SHOW_PERCENT:
	1 EE 4
	*
	K INT
	100 /
	P GSB ROUND
	.NUM FLY4
	K M D
	32
	PP M 9020
	PP M 9020
	PP M 9020
	RTN

; Округление до сотых
ROUND:
	1 EE 3 *
	K INT
	1 EE 3 /
	PK M 91
	RTN

; Показ Земли
SHOW_EARTH:
	3 PP M 9010
	8 ENT	40
	K M E
	.NUM BIG_EARTH
	PP M 9015
	P GSB GET_KEY
	RTN

MESS0:
.TEXT "Ввод маневра\0"
MESS1A:
.TEXT "Экипаж погибает от удушья.\0"
MESS1B:
.TEXT "Вспышка. Корабль сгорает.\0"
MESS1C:
.TEXT "Удар. Корабль разбивается.\0"
MESS1D:
.TEXT "Экипаж погиб от радиации.\0"
MESS1F:
.TEXT "Корабль погиб среди звёзд.\0"
MESS1E:
.TEXT "ЗЕМЛЯ ПОГИБЛА!\0"
MESS2:
.TEXT "Планета \0"
MESS2A:
.TEXT "Метеоритный рой!\0"
MESS2B:
.TEXT "Пояс астероидов\0"
MESS2C:
.TEXT "<Немезида>\0"
MESS3:
.TEXT "UTRN: \0"
MESS4:
.TEXT "VRAD: \0"
MESS5:
.TEXT "ANGL: \0"
MESS5A:
.TEXT "DHOR: \0"
MESS6:
.TEXT "DORB: \0"
MESS6A:
.TEXT "RORB: \0"
MESS7:
.TEXT "DSTR: \0"
MESS7A:
.TEXT "RPLN: \0"
MESS7B:
.TEXT "DNEE: \0"
MESS8:
.TEXT "DPLN: \0"
MESS9:
.TEXT "Ресурс \0"
MESSD1:
.TEXT "SCOR: \0"
MESSD2:
.TEXT "TTRN: \0"
MESSD3:
.TEXT "TRAD: \0"
MESSD4:
.TEXT "Время полета \0"
MESS10:
.TEXT "С ВОЗВРАЩЕНИЕМ!\0"
MESS11A:
.TEXT "0 - нейтронная звезда\0"
MESS11B:
.TEXT "1 - Солнечная система\0"
MESS11:
.TEXT "Число планет:\0"
MESS11D:
.TEXT "Миссия 'Спасение'?\0"
MESS12:
.TEXT "(БАЗА) \t\t\t\0"
MESS13:
.TEXT "(Медь) \t\t\t\0"
MESS14:
.TEXT "(Титан) \t\t\0"
MESS15:
.TEXT "(Серебро) \0"
MESS16:
.TEXT "(Золото) \t\0"
MESS17:
.TEXT "(Платина) \0"
PLAN0:
.TEXT "(Земля)\t\t\t\0"
PLAN1:
.TEXT "(Меркурий)\0"
PLAN2:
.TEXT "(Венера)\t\t\0"
PLAN3:
.TEXT "(Марс)\t\t\t\t\0"
PLAN4:
.TEXT "(Юпитер)\t\t\0"
PLAN5:
.TEXT "(Сатурн)\t\t\0"
PLAN6:
.TEXT "(Уран)\t\t\t\t\0"
PLAN7:
.TEXT "(Нептун)\t\t\0"
PLAN8:
.TEXT "(Плутон)\t\t\0"
PLAN9:
.TEXT "(Церера)\t\t\0"
STAR:
.TEXT "\0"
STAR1:
.TEXT "До Земли \0"
NEW_EDEM:
.TEXT "НОВЫЙ ЭДЕМ\0"
STAR0:
.TEXT "* ЗВЕЗДА *\0"
STAR2:
.TEXT " св.лет\0"
STAR3:
.TEXT "Размер \0"
STAR4:
.TEXT " Солнца\0"
STAR5:
.TEXT "Число планет: \0"
SOS:
.TEXT "Принят сигнал SOS!\0"
MISS:
.TEXT "Миссия выполнена!\0"
MISS1:
.TEXT "ЗЕМЛЯ СПАСЕНА!\0"
FAILED:
.TEXT "Миссия не удалась.\0"
TEMP:
.TEXT "Температура \0"
PELENG:
.TEXT "PLNG: \0"
RANGE:
.TEXT "RANG: \0"
MESS20:
.TEXT " км\0"
MESS21:
.TEXT " гр\0"
MESS22:
.TEXT " км/c \0"
MESS23:
.TEXT " c\0"
MESS24:
.TEXT "Файл сохранён.\0"
SCORE:
.TEXT "Cчёт: \0"
TITLE1:
.TEXT "ГРАВИЛЁТ-XXI. Версия 2.2\0"
TITLE2:
.TEXT "Место действия:\0"
TITLE3:
.TEXT "Выбор задания:\0"
TITLE3A:
.TEXT "0 - свободный полёт\0"
TITLE3B:
.TEXT "1 - земная группа\0"
TITLE3C:
.TEXT "2 - планеты-гиганты\0"
TITLE3D:
.TEXT "3 - малые планеты\0"
TITLE3E:
.TEXT "4 - вся система\0"
TITLE3F:
.TEXT "5 - полет к Солнцу\0"
TITLE4:
.TEXT "Прилёт Немезиды?\0"
BELT:
.TEXT "Найден астероид \0"
BREAK0:
.TEXT "Попадание в \0"
BREAK1:
.TEXT "термоблок!\0"
BREAK2:
.TEXT "резервуар!\0"
BREAK3:
.TEXT "двигатель!\0"
BREAK4:
.TEXT "компьютер!\0"
BREAK5:
.TEXT "регулятор!\0"
FLY0:
.TEXT "Энергия \0"
FLY2:
.TEXT "Скорость \0"
FLY3:
.TEXT "Контроль \0"
FLY4:
.TEXT " % \0"
FLY5:
.TEXT " мес\0"

BIG_EARTH:
.DB 02Fh, 02Eh, 000h, 000h, 0E0h, 001h, 000h, 000h,
.DB 000h, 000h, 01Fh, 03Eh, 000h, 000h, 000h, 0E0h, 
.DB 000h, 0C0h, 001h, 000h, 000h, 010h, 000h, 000h, 
.DB 002h, 000h
.DB 000h, 00Ch, 000h, 000h, 00Ch, 000h, 000h, 002h, 
.DB 000h, 000h, 010h, 000h, 080h, 001h, 000h, 000h, 
.DB 060h, 000h, 040h, 000h, 0F8h, 000h, 080h, 000h, 
.DB 040h, 01Ch, 0FCh, 001h, 080h, 000h
.DB 020h, 01Eh, 0FCh, 003h, 000h, 001h, 030h, 03Fh, 
.DB 0FEh, 003h, 000h, 002h, 030h, 07Fh, 0FFh, 003h, 
.DB 000h, 002h, 038h, 03Fh, 0FFh, 003h, 000h, 004h, 
.DB 034h, 03Fh, 0FFh, 007h, 000h, 008h
.DB 004h, 03Fh, 0FFh, 01Fh, 000h, 008h, 084h, 01Fh, 
.DB 0FFh, 0FFh, 000h, 008h, 082h, 01Fh, 0FFh, 0FFh, 
.DB 007h, 010h, 0FAh, 07Fh, 0FFh, 0FFh, 0FFh, 010h, 
.DB 0FAh, 03Fh, 0FFh, 0FFh, 0FFh, 011h
.DB 0FAh, 01Fh, 0FFh, 0FFh, 0FFh, 011h, 0FAh, 00Fh, 
.DB 0FFh, 0FFH, 0FFh, 011h, 0F9h, 01Fh, 0FFh, 0FFh, 
.DB 0FFh, 021h, 0F9h, 01Fh, 0FFh, 0FFh, 0FFh, 021h, 
.DB 0E1h, 00Fh, 0FBh, 0FFh, 07Fh, 020h
.DB 0C3h, 01Fh, 0E3h, 0FFh, 01Fh, 020h, 0C7h, 067h, 
.DB 0CFh, 01Fh, 000h, 020h, 0C6h, 0E3h, 09Fh, 003h, 
.DB 000h, 010h, 0FEh, 0E3h, 03Fh, 001h, 03Ch, 010h, 
.DB 0FEh, 0E3h, 0FFh, 000h, 07Eh, 010h
.DB 0E6h, 0FFh, 0FFh, 000h, 018h, 010h, 0E6h, 0FFh, 
.DB 0FFh, 000h, 000h, 010h, 0F8h, 0FCh, 0F9h, 000h, 
.DB 000h, 008h, 0FCh, 0F8h, 0E1h, 000h, 000h, 008h, 
.DB 0FCh, 0F3h, 04Fh, 000h, 000h, 008h
.DB 0F8h, 0F7h, 01Fh, 000h, 000h, 004h, 0F0h, 0FFh, 
.DB 01Fh, 000h, 000h, 002h, 0F0h, 0FFh, 01Fh, 000h, 
.DB 000h, 002h, 0E0h, 0FFh, 01Fh, 000h, 000h, 001h, 
.DB 0C0h, 0FFh, 01Fh, 000h, 080h, 000h
.DB 0C0h, 0FFh, 01Fh, 000h, 080h, 000h, 080h, 0FFh, 
.DB 00Fh, 000h, 060h, 000h, 000h, 0FEh, 00Fh, 000h, 
.DB 010h, 000h, 000h, 0FCh, 01Fh, 000h, 00Ch, 000h, 
.DB 000h, 0F0h, 0FFh, 000h, 002h, 000h
.DB 000h, 0E0h, 0FFh, 0CFh, 001h, 000h, 000h, 000h, 
.DB 0FFh, 03Fh, 000h, 000h, 000h, 000h, 0E0h, 001h, 
.DB 000h, 000h

.END	


Файлы программ доступны на странице "Игры"


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)