Apollo navigatsiooniarvuti

Apollo navigatsiooniarvuti (inglise keeles Apollo Guidance Computer – AGC) oli digitaalne arvuti, mis loodi 1960. aastate alguses Apollo programmi jaoks ja paigaldati igasse Apollo juhtimismoodulisse ja kuumoodulisse. Arvuti teostas arvutusi ja omas elektroonilisi liideseid kosmoselaeva juhtimiseks ja navigeerimiseks. Andmete edastamiseks kasutas arvuti 16 bitti: 15 bitti andmete jaoks ja ühte paarsusbitti. Taktsageduseks oli 2,048 MHz. Enamus programmidest säilitati spetsiaalses ROM tüüpi programmimälus, milleks oli 74 kilobaiti sillatud (epoksiidplastikusse valatud traatsildadest ja ferriitrõngastest) programmimälu ning 4 kilobaiti muutmälu. Arvuti tarkvara kujutas endast tänapäevases mõistes multitegumilist reaalaja operatsioonisüsteemi.
Astronaudid kasutasid arvutile käskude andmiseks ja informatsiooni saamiseks numbritega klaviatuuri ja ekraani, mida nimetati DSKY-ks (inglise keeles display & keyboard). Arvuti ja selle kasutajaliides töötati välja Massachusettsi Tehnoloogiainstituudi seadmete laboris (tollane MIT Instrumentation Laboratory ja praegune Charles Stark Draper Laboratory). Apollo navigatsiooniarvuti on üks esimestest mikroskeemidel põhinevatest arvutitest.
Arvuti eesmärk oli juhtida 13 tonni kaaluvat kuumoodulit, mis liikus Kuu orbiidil kiirusega 3500 km/h, maandada see ohutult Kuu pinnale meetri täpsusega, startida Kuu pinnalt ja juhtida kuumoodul tagasi Kuu orbiidile, et põkkuda orbiidil liikuva juhtimismooduliga. Eksimusteks polnud ruumi, sest kuumoodulil jätkus kütust vaid üheks laskumiskatseks.

Veakoodid 1201 ja 1202

20. juulil 1969 olid Apollo 11 astronaudid Neil Armstrong ja Buzz Aldrin laskumas kuumooduliga Eagle (Kotkas) Kuu pinnale, milleni oli jäänud veel 6000 jalga. Kuumooduli peamootor täitis viimast töötsüklit. Turvalise Kuu pinnale laskumiseni oli jäänud 6 minutit. Äkitselt süttis navigatsiooniarvuti juhtpaneelil kollane hoiatustuli. Arvuti raporteeris programmi viga 1202 – mälu ületäitumine. Astronaudid pöördusid juhiste saamiseks juhtimiskeskuse poole. Viga oli põhjustatud laskumisradarist tuleva ootamatu andmevoo poolt. Õnneks oli Apollo navigatsiooniarvuti programmeeritud liigitama neid andmeid teisejärgulisteks ja ignoreerima neid siis, kui oli vaja tegeleda tähtsamate arvutustega.
Juhtimiskeskuses tol hetkel valves olnud 26-aastane navigatsioonisüsteemide ekspert Steve Bales pidi otsustama, kas viga on kriitiline või mitte ehk kas missioon katkestada või laskumist jätkata. Jack Garmanile, kes Bales'i abistas, meenus, et sarnane probleem esines arvuti testimisel simulatsioonil. Ta veenis Bales'i, et viga pole kriitiline ja ei takista ohutut Kuu pinnale laskumist. Otsuse tegemiseks kulus 15 sekundit. Bales teatas lennujuhile, et viga võib ignoreerida. Missioon jätkus.
Järgnevate minutite jooksul kordus viga 1202 ja sama tüüpi viga 1201 veel mõned korrad. See ei takistanud kuumooduli laskumist. Arvuti sooritas taaskäivitamisi, programmide taaslaadimisi ja jätkas töötamist poolelijäänud ülesannetega iga kord, kui kuvas ekraanile veakoodi 1201 või 1202. Laskumine Kuu pinnale õnnestus – Kotkas oli laskunud. Steve Bales sai õige otsuse langetamise eest hiljem, kui president Richard Nixon andis Apollo 11 astronautidele üle "Vabaduse medali" (Presidential Medal of Freedom), samuti austuse osaliseks, olles valitud NASA Group Achievement Awardi saajaks kogu missiooni korraldanud meeskonna poolt.
Sel ajal kui astronaudid Kuu pinnal jalutasid, otsiti MIT-is vea põhjusi. Missioon polnud veel kaugeltki läbi – ees oli lahkumine Kuult ja põkkumine Kuu orbiidil liikuva juhtimismooduliga, milles viibis Michael Collins. Vea leidsid Fred H. Martin ja George Silver. Selgus, et astronaudid olid unustanud välja lülitada laskumisradari. Apollo navigatsiooniarvuti aga raiskas mälu protsessoritsükleid kasutute radariandmete ootamisele ja töötlemisele. Hiljem selgus veel, et simulaatoris, kus astronaute treeniti, polnud radar üldse navigatsiooniarvutiga ühendatud ja seetõttu ei ilmnenud viga treeningutel. Seega osutus üks ajaloo kuulsamaid programmivigu – "program alarm 1202", tegelikult hoopis inimese ehk kasutaja veaks.