Исходный код «Аполлона-11» опубликован на Github



    20 июля 2009 года в честь 40-летия высадки на Луну распечатки с исходным кодом программы для бортового управляющего компьютера КА «Аполлон» (Apollo Guidance Computer, AGC) были оцифрованы и выложены в интернете. Прошло семь лет — и сейчас этот уникальный образец компьютерной истории получил вторую жизнь. Сегодня исходный код для AGC на ассемблере опубликован на Github в полном виде, открыт для поиска, комментариев, форков и т.д.

    В коде можно найти вызовы ставших знаменитыми ошибок с кодами 1201 и 1202, которые так беспокоили Нила Армстронга, и многое другое.

    На Github репозиторий Apollo-11 быстро взлетел на 1-е место в списке самых популярных репозиториев за сутки (можно не сомневаться, что в рейтинге за неделю у него будет 1-е место уже завтра). Там действительно есть на что посмотреть. Особенно интересно почитать некоторые названия процедур (BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.s) и комментарии в оригинальном коде.

    CAF	CODE500		# ASTRONAUT:	PLEASE CRANK THE
    TC	BANKCALL	#		SILLY THING AROUND
    CADR	GOPERF1
    TCF	GOTOP00H	# TERMINATE
    TCF	P63SPOT3	# PROCEED	SEE IF HE'S LYING
    
    TC	BANKCALL	# ENTER		INITIALIZE LANDING RADAR
    CADR	SETPOS1
    
    TC	POSTJUMP	# OFF TO SEE THE WIZARD ...
    CADR	BURNBABY

    В программе есть «временный» код, как и во многих современных программах.

    TC	BANKCALL	# TEMPORARY, I HOPE HOPE HOPE
    CADR	STOPRATE	# TEMPORARY, I HOPE HOPE HOPE
    TC	DOWNFLAG	# PERMIT X-AXIS OVERRIDE

    А вот версия 1969 года популярного комментария «Это никогда не должно произойти».

    CA	A		# SHOULD NEVER HIT THIS LOCATION

    В репозитории на Github уже создан первый тикет — обсуждение «бага», которые необходимо исправить в программе.

    Разработчик SilverWingedSeraph пишет: «У одного пользователя возникла довольно серьёзная проблема с криогенным перемешиванием в кислородных баках с появлением сообщения о неисправности». Для воспроизведения ошибки в программе следует повторить такую последовательность действий:

    1. Построить сервисный модуль.
    2. Пролететь до окололунной орбиты.
    3. На окололунной орбите запустить перемешивание в кислородных баках.

    «Если в модуле есть проблема с проводкой, то ошибка может быть воспроизведена. Будьте осторожны, потому что ситуация может опасна для тестировщика, который пытается воспроизвести ошибку», — отмечает не лишённый чувства юмора разработчик на Github.

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

    Вообще, к настоящему времени сохранилась всего одна физическая копия распечаток программы лунного модуля. Книга с распечаткой хранится в музее Массачусетского технологического института.

    Код программы написал Дон Айлс с коллегами. Лично Айлс является автором около 2000 строк кода, которые отвечали за посадку лунного модуля.

    Управляющие команды «Аполлона» можете попробовать запустить в эмуляторе (это лишь симулятор компьютера, без самого космического аппарата).


    Эмулятор компьютера космического аппарата Apollo


    Инструкция к эмулятору Apollo

    Компьютеры Apollo Command Module (CM) и Lunar Module (LM) осуществляли посадку на лунную поверхность в автоматическом режиме. Компьютер управлял двигателями и сервомоторами в реальном времени.


    Бортовой управляющий компьютер КА «Аполлон»


    Дисплей бортового управляющего компьютера

    Управление осуществлял Apollo Guidance Computer (AGC). Бортовой компьютер оснащался ОС реального времени с поддержкой многопоточности, он управлял всеми системами, получая сигналы с радаров, телескопов, гироскопов и акселерометров.

    В книге «Цифровой Аполлон» хорошо рассказано, как программа расставляла приоритеты и распределяла процессорное время.



    Технические спецификации бортового управляющего компьютера КА «Аполлон»
    Временные эталоны работы AGC задавались кварцевым резонатором с частотой в 2,048 МГц. Память компьютера состояла из 2048 слов перезаписываемого ОЗУ и 36 К слов ПЗУ с линейной выборкой на многократно прошитых сердечниках. Цикл чтения-записи ОЗУ и ПЗУ занимал 11,72 мкс. Длина слова составляла 16 бит: 15 бит данных и 1 бит чётности. Формат 16-битного слова процессора включал в себя 14 бит данных, бит переполнения и бит знака.

    См. также:
    Руководство по программированию Apollo Guidance Computer
    Поделиться публикацией
    Никаких подозрительных скриптов, только релевантные баннеры. Не релевантные? Пиши на: adv@tmtm.ru с темой «Полундра»

    Зачем оно вам?
    Реклама
    Комментарии 28
    • +19
      Сейчас народ побежит портировать это на Ардуино и все улетят на луну.
      • +7
        Обсуждение упомянутого тикета бесценно!

        Скрытый текст
        image
        image
        image
        image
        • +4
          А ведь бортовой комп был не мощнее ардуины, и ничего, на луну слетали.
          • 0
            Точно менее мощным.
            • +2
              Вангую статьи в скором времени «Полёт на луну на Ардуино».
          • +1
            It works for me
            • 0
              На будущее, можно в фаерфоксе нажать shift+F2 и написать screenshot --fullpage test.png
              А в хроме только плагинами, афаик.
              • 0
                В Опере тоже. Буду переходить в полноэкранный режим и там щелкать.
            • +5
              Глянуть бы на исходники Бурана… мечты, мечты.
              • 0
                На всю проектную документацию…
              • НЛО прилетело и опубликовало эту надпись здесь
                • 0
                  Это ж можно заставить его настоящим КА управлять в симуляторе!
                  • 0
                    Настоящие КА по музеям уже. А в симуляторе можно. Есть аддон к Orbiter, где можно управлять этим компьютером на эмуляторе. Я не пробовал, посчитал, что буду слишком долго учиться.
                    • +3
                      Аддон Project Apollo. Там реализованы не все функции, но главные есть — взлет с Земли, программирование запуска двигателей CM и LM. Летал на нем — супер вещь )
                      • 0
                        Кстати, пытался когда-то к Project Apollo (nassp.sourceforge.net) прикрутить Virtual AGC (www.ibiblio.org/apollo/ ). Но что-то так и не получилось…
                        • 0
                          А как вам такая хардварная реплика? https://www.youtube.com/watch?v=Qj2IETkScWA
                  • +1
                    Настоящий артефакт в мире ПО!
                    • +9
                      Требуем проверки PVS Studio! (Шутка)
                      • +3
                        Зря вы добавили последнее слово, уже собирался ставить вам плюс…
                        • +1
                          Врядли добавление поддержки ассембера под AGC того стоит.
                          Но в качестве прикольной рекламы — это могло бы проканать.
                      • 0
                        Осталось сделать дополнение для Kerbal Space Program с эмулятором AGC и можно будет тестировать и развивать свой форк.
                        • 0
                          Именно, такой бы плагин в IVA.
                          • 0
                            Для Orbiter уже есть.
                          • –2
                            It's a fake.gif
                            • +1
                              Ребят, отправьте кто нибудь это в Роскосмос, пусть сделают форк.
                              • +2
                                Если смогут зайти на гитхаб…
                                https://geektimes.ru/post/278244/
                              • 0
                                Так а почему сразу не опубликовали? Чего тянули резину?

                                Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.