Историческият компютърен код, който отведе Apollo 11 до Луната, вече е с отворен код и е достъпен за всеки, който желае да го прочете, изтегли и експериментира с него. Крис Гари от НАСА публикува кода в GitHub като част от общественото достояние. Публикуваният ресурс се състои основно от две големи кодови бази – един набор от код за командния модул (Comanche055) и друг за лунния модул (Luminary099). И двата модула разполагаха със свои собствени навигационни компютри Apollo 11 (AGC), върху които се изпълняваше кодът, и бяха от решаващо значение за успеха на тази забележителна мисия – първото кацане на човек на Луната в историята.
В GitHub хранилището Гари посочва, че този знаменателен код е бил дигитализиран от екипа на Virtual AGC (Virtual Apollo Guidance Computer) и Музея на MIT. Това означава, че хартиената версия на кода, съхранявана в Музея на MIT, е била сканирана и проверена за дигитално разпространение. В този конкретен случай разполагаме с огромно количество машинен код, който вече е обществено достояние и е лесно достъпен онлайн.
Ако разгледаме отблизо директорията Commanche055 ще открием един интересен файл, който привлича вниманието: ALARM_AND_ABORT.agc. След стандартното въведение в кода в началото на файла се разкрива неговата цел – нещо, което в този случай е съвсем очевидно от името на файла. Освен това коментарите в кода разкриват, че кодът записва състояния на аларма, включва предупредителна светлина, ако е приложимо, и обработва различни аларми на ниво прекъсване и аларми, които не водят до прекъсване.
Друг интересен пример за код представя ключовите 30 реда асемблерен код за изчисляване на навигационните траектории на Apollo 11.
Ако искате да направите нещо повече от просто разглеждане на историческата кодова база, можете да компилирате кода, който вече е в публичното пространство, с помощта на инструмента Virtual AGC (връзка към GitHub). Софтуерът Virtual AGC е проектиран да работи в Linux, Windows XP/Vista/7, Mac OS X 10.3 или по-нова версия, както и в някои версии на FreeBSD. Това хранилище е също добро място да научите повече за AGC, които са били на борда както на командния модул, така и на лунния модул.
Спецификациите на AGC бледнеят в сравнение дори с най-основните компютри днес. Например, един AGC имаше само 3 840 байта RAM и 69 120 байта памет. Той можеше да изпълнява максимум около 85 000 инструкции в секунда. Въпреки това той е сравним по размер с днешните настолни геймърски кутии с размери 61,595 x 31,580 x 15,174 см и тежи 31,8 кг. Освен това се нуждаеше от два DSKY контролера с тегло 8,1 кг всеки в командния модул и един DSKY в лунния модул.
Интересно е да видим как този код от Apollo 11, създаден преди почти 60 години, се споменава в контекста на текущата лунна мисия Artemis II. Днес обаче не се възхищаваме на изчистения и ефективен машинен код, който НАСА използва, за да изпраща хора до Луната и обратно. По-скоро грешките в електронната поща на Microsoft Outlook и неизправната тоалетна в космическия кораб „Орион“ бяха новото поколение любопитни случки в тази последна мисия.
Снимка: Unsplash
Виж още: Нова Android функция обещава да ни спаси от тихата лудост на недостатъчното място за съхранение