Il 20 luglio 1969 è una data storica perché per la prima volta un essere umano ha messo piede sulla Luna. Per festeggiare l’evento è stato organizzato il Moon Day, durante il quale verranno proposti numerosi documentari sulla missione Apollo 11. Sicuramente si parlerà del suo computer di bordo e dei famosi “Program Alarm” visualizzati durante la discesa del modulo lunare.
Apollo Guidance Computer
La navicella Apollo 11 era composta da due parti, il modulo di comando (Columbia) e il modulo lunare (Eagle). Su entrambi era installato un PGNCS (Primary Guidance, Navigation and Control System), il sistema di guida inerziale progettato dal MIT Instrumentation Laboratory. Uno dei componenti era il computer di bordo denominato AGC (Apollo Guidance Computer). Gli astronauti comunicavano con il computer tramite un’interfaccia con display numerico e tastiera (DSKY). L’AGC era uno dei primi computer con circuiti integrati. All’epoca i computer occupavano un’intera stanza e utilizzavano schede perforate.
L’AGC utilizzava word lunghe 16 bit, 15 bit per i dati e 1 bit per il controllo di parità. In totale c’erano 2.048 word di memoria cancellabile e 36.864 word di memoria read-only. In pratica il computer integrava 2 KB di RAM e 16 KB di ROM. Il computer funzionava ad una frequenza di 2 MHz. Le prestazioni erano paragonabili all’Apple II e al Commodore PET. Un AGC è stato recentemente modificato per effettuare il mining dei Bitcoin.
Program Alarm
Il software era scritto in linguaggio Assembly. La maggior parte era memorizzato nella ROM, ma una piccola parte era conservato nella memoria cancellabile e poteva essere sovrascritta dagli astronauti tramite l’interfaccia DSKY. Il software del modulo di comando (COLOSSUS) e del modulo lunare (LUMINARY) è stato sviluppato da un team di 350 persone sotto la guida di Margareth Hamilton, dando origine a quella che oggi viene chiamata ingegneria del software. Il codice sorgente è disponibile su GitHub.
Circa tre minuti prima dell’allunaggio, gli astronauti segnalano al Controllo Missione di Houston la comparsa di due Program Alarm (1201 e 1202) che indicano un “executive overflow”. In pratica il computer di bordo non aveva più risorse per gestire tutti i task in tempo reale, quindi doveva posticipare quelli meno critici. L’AGC ha quindi effettuato un autoreset, cancellando i task a bassa priorità, tra cui il comando 1668 dato da Aldrin, e consentendo al LEM di raggiungere il suolo lunare.
Gli ingegneri della NASA hanno scoperto il giorno dopo il motivo del problema. Non si è trattato di un errore di programmazione o di un errore dei piloti, ma di un bug hardware già individuato durante i test per l’Apollo 5, considerato tuttavia di poco conto perché verificatosi solo una volta. Dato che il rendezvous radar del modulo lunare era alimentato da una corrente alternata con una fase diversa da quella del computer, l’AGC ha rilevato una variazione di posizione facendo scattare gli allarmi. Fortunatamente tutto è andato per il meglio e domani possiamo festeggiare questo storico evento.