Misje Apollo posiadały technologię nie bardziej skomplikowaną niż kieszonkowy kalkulator.
Z linku tutaj znajduje się informacja o Apollo Guidance Computer (AGC)
Komputer pokładowy Apollo Guidance Computer (AGC) miał około 1 stopy sześciennej z 2K 16-bitowej pamięci RAM i 36K na sztywno podłączonej pamięci z rdzeniem linowym z drutami miedzianymi nawleczonymi lub nie gwintowanymi przez małe rdzenie magnetyczne. 16-bitowe słowa zawierały na ogół 14 bitów danych (lub dwa kody operacyjne), 1 bit znaku i 1 bit parzystości. Czas cyklu wynosił 11,7 mikrosekund. Programowanie odbywało się w języku asemblera i języku interpretacyjnym, w odwrotnej polszczyźnie.
Tak więc natknąłem się na kod źródłowy, kiedy badałem, co tam jest, i zauważyłem świetne komentarze (np. TYMCZASOWE, NADZIEJE NADZIEJA)
VRTSTART TS WCHVERT
# Page 801
CAF TWO # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
TS WCHPHOLD
TS WCHPHASE
TC BANKCALL # TEMPORARY, I HOPE HOPE HOPE
CADR STOPRATE # TEMPORARY, I HOPE HOPE HOPE
TC DOWNFLAG # PERMIT X-AXIS OVERRIDE
ADRES XOVINFLG
TC DOWNFLAG
ADRES REDFLAG
TCF VERTGUID
Rzeczywiste programy w statku kosmicznym były przechowywane w pamięci liny rdzeniowej , starożytnej technologii pamięci wykonanej przez (dosłownie) tkanie tkaniny / liny, w której bitami były fizyczne pierścienie z materiału ferrytowego. Pamięć „rdzenia” jest odporna na promienie kosmiczne. Stan rdzenia nie zmieni się po bombardowaniu przez promieniowanie w kosmosie.
Oprogramowanie Virtual Apollo Guidance Computer (AGC) jest również dostępne na GITHUB!
Część dokumentacji znajduje się tutaj.
Kolejna próbka kodu źródłowego z świetnymi komentarzami.
033911,000064: 32,3017 06037 FLAGORGY TC INTPRET # DIONYSIAN FLAG WAVING
034090,000243: 32,3241 13247 BZF P63SPOT4 # BRANCH IF ANTENNA ALREADY IN POSITION 1
034091,000244:
034092,000245: 32,3242 33254 CAF CODE500 # ASTRONAUT: PLEASE CRANK THE
034093,000246: 32,3243 04616 TC BANKCALL # SILLY THING AROUND
034094,000247: 32,3244 20623 CADR GOPERF1
034095,000248: 32,3245 16001 TCF GOTOP00H # TERMINATE
034096,000249: 32,3246 13235 TCF P63SPOT3 # PROCEED SEE IF HE'S LYING
034101,000254: 32,3251 04635 TC POSTJUMP # OFF TO SEE THE WIZARD ...
034102,000255: 32,3252 74126 CADR BURNBABY
Moje pytanie brzmi:
- W jaki sposób zespoły piszące tak dużo kodu mogły sprawić, że był on funkcjonalny, biorąc pod uwagę ówczesne narzędzia?
Ponieważ jeśli skompilujesz tyle kodu, który został użyty w Apollo 11 ... zajęłoby to dni, a nawet tygodnie. Poważnie wątpię, że wtedy programiści zostawili wszystko, by stało się przypadkiem.
HOPE HOPE HOPE
to dobrze za pierwszym razem.Odpowiedzi:
Był piękny dokument, który staram się ścigać o Johnie „Jacku”. Garman musiał „wymyślić” „wieloprogramowy system operacyjny o ustalonym priorytecie”. Być może miało to związek z modułem lądownika. Historia polegała na tym, że lądując na lądowniku, lepiej dać pierwszeństwo kierownictwu, ponieważ inne rzeczy, takie jak temperatura w kabinie przez następne 15 sekund, tak naprawdę nie miały znaczenia, czy się rozbiłeś i spłonął. Przy pierwszym strzale przeciążyli komputer i zaczęły się dziać alarmy, ponieważ niektóre podprogramy nie były wykonywane. Załadowano ich zbyt wiele, ale dzięki koncepcji priorytetu, którą Garman przewidział i wbudował, ponieważ uważał, że to dobry pomysł, procedury o niskim priorytecie nie zawiodły procedury lądowania o wyższym priorytecie.
Oglądając ówczesny film dokumentalny, byłem zaskoczony, jak to jest zrobić poważną zmianę kodu bez informowania kierownictwa i prawie wyrzucenia z pracy, ponieważ spóźniłeś się nad tym, nad czym miałeś pracować. W tym przypadku jednak refaktoryzacja wyszła na jaw, gdy zbadano przyczynę alarmów. (A zarządzanie wciąż było wkurzone! :-)
Niektóre linki:
Nie, „błąd listy kontrolnej” prawie nie wykoleił pierwszego lądowania na Księżycu
OPOWIEŚCI Z KOMPUTERA PROWADNICY LUNAR MODULE
Jak je zbudowali: oprogramowanie Apollo 11
NASA Johnson Space Center Projekt historii mówionej Edytowana transkrypcja historii mówionej
Krótka historia programu Apollo NASA Fragment: Pięć minut do zejścia z wysokości i 1800 m nad powierzchnią Księżyca komputer nawigacyjny i nawigacyjny LM wywołał pierwszy z kilku nieoczekiwanych alarmów programu „1202” i „1201”. Inżynier komputerowy w Mission Control Center w Houston, Jack Garman, powiedział oficerowi poradnictwa Steve'owi Balesowi, że kontynuowanie zejścia jest bezpieczne. Alarmy te wskazywały na „przepełnienie kadry kierowniczej”, co oznacza, że komputer nawigacyjny nie mógł wykonać wszystkich swoich zadań w czasie rzeczywistym i musiał odłożyć niektóre z nich.
Przywołując fragment „Wielkiego skoku” : Wiedzieliśmy, co to jest i że nie powinno się tak dziać. Ale zaprojektowaliśmy system, który ciężko próbował odzyskać od warunków przeciążenia. Pamiętam więc, jak usłyszałem [inżyniera komputerowego z NASA] Jacka Garmana krzyczącego: „Idź, idź!” I poszli dalej. Potem słuchaliśmy, jak Neil latał LEM i próbował znaleźć dobre miejsce do przyziemienia. Naszym nowym zmartwieniem był brak paliwa. Ale w końcu usłyszeliśmy zawiadomienie o kontakcie, a potem „Orzeł wylądował”.
Wywiad z Jackiem Garmanem
EDYCJA: Może to był dokument: Apollo 11: The Untold Story (2006)
Obsada: John R. Garman ...
sam - inżynier informatyk Apollo 11 (jako Jack Garman)
(Pośród innych).
Aktualizacja: Haker z Południowej Afryki właśnie uratował pierwszy komputer NASA w kosmosie
źródło
Jeśli dobrze rozumiem, proces rozwoju polegał na wzajemnej ocenie i eksperymentowaniu.
Zespół składał się z ludzi takich jak „Math Doctors” - niezwykle oddanych, inteligentnych, pełnych pasji i zorientowanych na szczegóły ludzi, których życie było poświęcone ich pracy. Kiedy więc mówię o wzajemnej ocenie, mam na myśli wiele recenzji w ciągu wielu miesięcy (ponad roku).
Ci programiści „przeprowadzili symulacje w głowach”, „debugowali oprogramowanie na papierze” i pracowali w grupach z wieloma programistami przeglądającymi ten sam kod w kółko, dopóki nie przekonali się, że jest poprawny. Było wiele zespołów - każdy pracował nad częścią całości.
Mój profesor metod numerycznych z Ohio State University (Spring '96) napisał kod, który zdecydował, kiedy rozpocząć etap rakiety przypominającej. Opisał wydruk jako rozmiar książki telefonicznej (więc może 2,5 do 3,5 cali grubości papieru 8,5 x 11 cali - nie opisał rozmiaru czcionki) kodu Fortran.
Po przekonaniu wystrzelili bezzałogowy pocisk (rakiety technicznie nie mają żyroskopów) z radiem na pokładzie, które emitowało sygnał dźwiękowy w regularnych odstępach czasu. Słuchali sygnałów dźwiękowych do momentu, w którym spodziewali się, że radio uderzy w księżyc (uderzy w niego i sam się zniszczy) i przestanie emitować sygnał dźwiękowy. Wiedzieli, że jeśli spóźnią się, radio będzie dawać sygnał dźwiękowy długo po obliczonym czasie uderzenia. Uderzenie nastąpiło 15 sekund po obliczonym czasie.
Ta przypuszczalnie niepotwierdzona historia to moje wspomnienia z wizyty w gabinecie lekarskim. Był bardzo stary i to było dawno temu. To moje najlepsze wspomnienie.
źródło
AGC jest kontrolowane za pomocą czasowników i rzeczowników
Oprogramowanie sterujące Apollo nie jest napisane w żadnej składni, którą użytkownicy rozpoznaliby dzisiaj. Astronauci wprowadzają polecenia numerycznie, przy czym każda dwucyfrowa liczba reprezentuje czasownik lub rzeczownik. Czasownik opisuje akcję, która ma zostać wykonana, a rzeczownik określa dane, na które ma wpływ akcja czasownika.
Astronauci nie znosili konfiguracji czasownika i rzeczownika
Ramón Alonso, jeden z oryginalnych twórców sprzętu AGC, powiedział, że interfejs został wymyślony, aby zaimponować odwiedzającym ich laboratorium, ale pozostał przy lotach, gdy nikt nie opracował lepszego interfejsu. Krytycy powiedzieli, że to nie było „naukowe”, a pierwsi astronauci - wszyscy elitarni piloci odrzutowi - woleli tarcze i przełączniki, podobne do panelu sterowania samolotem.
Oprogramowanie w takiej postaci, w jakiej zostało zaprojektowane, zostało zbudowane od podstaw przez MIT.
Możesz pobrać i zainstalować program emulatora Apollo Guidance Computer na swoim komputerze osobistym, bez problemu. Oto jak to wygląda w Mac OS X.
źródło
Jak prawie każdy inny projekt oprogramowania, został on wykonany w agresywnym terminie i pod presją jakości. Na szczęście duże archiwum materiałów od kierownika projektu oprogramowania Howarda W. „Billa” Tindalla, Jr. jest dostępne tutaj .
Jeśli spróbujesz notatek, możesz bardzo dobrze zrozumieć normalny konflikt między czasem, funkcjami i defektami. Warto zauważyć, że prace rozwojowe przebiegały przez wiele lat, podobnie jak reszta projektu.
Nie mogę znaleźć konkretnych odniesień do tego, jak powstało oprogramowanie, ale biorąc pod uwagę datę, mogę jedynie założyć, że wiele z nich zostało zrobionych na papierze i długopisie, z „symulacjami” wykonanymi ręcznie. Wygląda na to, że istniał system do ładowania programów do AGC z kartami dziurkowanymi, prawdopodobnie do „szybkich” testów na ziemi bez potrzeby tworzenia pamięci liny.
źródło