thumb|250px|Komputer zastosowany w module dowodzenia i w module księżycowym thumb|250px|18 bajtów zawartych w każdym sektorze 5 cm × 7,5 cm, utkanych ręcznie w pierścieniach ferrytowych Komputery pokładowe programu Apollo ang. Apollo Guidance Computers (AGC) służyły do kierowania Modułem Dowodzenia/Serwisowym ang. Command/Service Module (CSM) i modułem księżycowym ang. Lunar Module (LM). Głównym zadaniem komputerów programu Apollo była realizacja programów zgromadzonych w pamięciach komputerów. Programy były napisane w języku maszynowym i nazywały się Instrukcje Podstawowe. Najmniejszą jednostką adresowalną w AGC było słowo maszynowe o długości 16 bitów. Instrukcje podstawowe mogły być słowami maszynowymi przenoszącymi instrukcje lub słowami maszynowymi przenoszącymi dane.
Chociaż firma IBM wprowadziła pojęcie bajt w latach sześćdziesiątych, to w podręczniku NASA opisującym komputer modułu księżycowego i w podręczniku NASA opisującym komputer modułu dowodzenia, pojęcie bajt się nie pojawia. Dla porównania z pojemnością dzisiejszych twardych dysków i RAM-u, pamięci komputerów programu Apollo można podać w bajtach. W komputerach PC, w zależności od architektury, dla procesora słowem jest przynajmniejW szerszym rozwinięciu: W komputerach PC, w zależności od architektury, dla procesora słowem jest 2-bajtowy (16-bitowy), 4-bajtowy (32-bitowy) lub 8-bajtowy (64-bitowy) element danych 2-bajtowy (16-bitowy) element danych. W każdej misji programu Apollo używano dwóch identycznych komputerów, jeden ang. Command Module Computer (CMC) na pokładzie modułu dowodzenia, drugi ang. Lunar Guidance Computer (LGC) na pokładzie modułu księżycowego.
AGC, które w programie Apollo służyły do kierowania CSM i kierowania LM podczas lądowania na powierzchni Księżyca, nie posiadały żadnego nośnika pamięci masowej używanego obecnie. W celu realizacji oprogramowania komputery posiadały po 74 kB informacji zgromadzonej w toroidalnych rdzeniach ferrytowych.
Odpowiedzialnymi za program komputerowy dla modułu księżycowego byli Peter Adler i Don Eyles z pracowni MIT Instrumentation Laboratory.
Skład komputera Komputery modułu księżycowego i modułu dowodzenia zawierały: zegar generator sekwencji procesor sterowanie priorytetem sekcje wejścia - wyjścia pamięci stała pamięć ferrytowa - 36864 słów kasowalna pamięć ferrytowa - 2048 słów 16-bitowych
Zegar Zegar generował wszystkie impulsy synchronizujące konieczne do zapewnienia przepływu danych z jednego obszaru komputera do innego. Zegar również generował inne przebiegi, które były wykorzystywane przez obwody ostrzegawcze komputera i inne obszary statku kosmicznego. Był głównym źródłem czasowych sygnałów produkowanych dla wszystkich podsystemów.
Częstotliwość zegara głównego, generowana przez generator, była podawana do dzielnika czasu zbudowanego na układach logicznych. Logiczny dzielnik czasu, dzielił częstotliwość zegara głównego na impulsy, będące podstawowymi jednostkami czasu komputera. Podstawowa szybkość taktowania zegara wynosiła 1,024 kpps ang. kilo packets per second (kpps). Następnie częstotliwość taktowania zegara była podawana do skalera i do generatora impulsów czasu. Skaler dokonywał dalszego podziału impulsów z wyjścia układu logicznego na impulsy i sygnały które były użyte do bramkowaniaBramkowanie - cyfrowa realizacja dowolnej funkcji logicznej i do generowania wyjść sygnału tempa taktowania i naliczania czasu. Generator impulsu czasu produkował zestaw powtarzających się impulsów czasu, które określały specyficzne cykle pamięci, podczas których następował dostęp do pamięci i przepływ danych wewnątrz komputera.
Licznik czasu rzeczywistego W liczniku pamięci czasu głównego był utrzymywany czas rzeczywisty, który był używany w rozwiązywaniu problemów kierowania i nawigacji CSM, CM i LM. Licznik czasu głównego zapewniał 745,65 godzin (w przybliżeniu 31 dni). Przyrostowe impulsy generowane przez zegar były wysyłane do sekcji kontroli priorytetu w celu zwiększania przyrostów głównego licznika czasu. Czas AGC był synchronizowany z upływającym ziemskim czasem ang. Ground Elapsed Time (GET) który zaczynał się, „czas 0”, podczas startu statku kosmicznego. Czas AGC był transmitowany do Centrum Łączności Kierowania Załogowymi Lotami Kosmicznymi (ang.) Manned Space Flight Network (MSFN) raz na sekundę w celu porównania.
Generator sekwencji Generator sekwencji wykonywał instrukcje zgromadzone w pamięci. Przetwarzał kody instrukcji i generował impulsy kontrolne regulujące odpływ danych z komputera. W skład generatora sekwencji wchodziły generatory: generator kodu kolejności generator poleceń generator impulsów kontrolnych Generator sekwencji odbierał sygnały kodu kolejności od centralnego procesora i od kontroli priorytetów. Sygnały te były zakodowane przez procesor kodu kolejności i dostarczane do generatora poleceń. Inny zestaw impulsów sterujących był używany do bramkowania sygnałów kodu kolejności do generatora sekwencji na koniec każdej instrukcji. Generator poleceń dekodował impulsy wejściowe i generował instrukcje poleceń, które były dostarczane do generatora impulsów kontrolnych.
Procesor centralny Procesor centralny: wykonywał operacje arytmetyczne przechowywał informacje wychodzące i przychodzące do pamięci poprzez kontrolę parzystości wykrywał przekłamania w słowach maszynowych przychodzących z pamięci generował bit parzystości w słowach maszynowych zapisywanych do pamięci Procesor centralny składał się z: rejestrów realizowanych poprzez dwustanowe przerzutniki zapisujące kasujące wzmacniaczy zapisu rejestrów buforów pamięci rejestrów adresów pamięci dekodera logiki parzystości Generalnie procesor centralny wykonywał operacje dyktowane przez Instrukcje Podstawowe programu zawartego w pamięci stałej. Komunikacja wewnątrz centralnego procesora była realizowana poprzez wzmacniacze zapisu. Dane przepływały do, lub z pamięci do rejestrów, pomiędzy indywidualnymi rejestrami, lub do centralnego procesora z zewnętrznych źródeł. Dane umieszczone na liniach zapisu były kierowane do określonego rejestru lub innej części centralnego procesora do zapisu, kasowania lub odczytu.
Pamięci thumb|250px|Pamięć stała komputerów pokładowych programu Apollo thumb|250px|RAM w Apollo Każdy komputer posiadał dwa typy pamięci, kasowalną i stałą. Pamięć kasowalna mogła być zapisywana i odczytywana. Pamięć stała służyła tylko do odczytu ang. Read Only Memory (ROM). Zawierała programy użytkowe, wartości stałe, współrzędne selenograficzne i astronomiczne, używała 36 864 terminów lub słów, każdy o długości 16 bitówKażde słowo maszynowe zawierało 2 bajty informacji. W sumie pamięć stała była zawarta w 74 kB. Pamięć kasowalna była pamięcią ferrytową, o dostępie swobodnym ang. Random access memory (RAM) i o destrukcyjnym odczycie. Pamięć kasowalna była użyteczna w gromadzeniu wartości zmiennych, w obliczeniach, lub w rejestrach do operacji logicznych i posiadała tylko 2 048 16 bitowych słów, czyli 4 kB. Dane zgromadzone w pamięci kasowalnej mogły być zmieniane lub aktualizowane. To, co zdecydowanie różni pamięć kasowalną od dzisiaj stosowanej pamięci RAM to fakt, że dane zawarte w pamięci RAM giną po wyłączeniu komputera, a giną, ponieważ informacje w niej zawarte, są stanami układów logicznych, które istnieją dopóki podawane jest napięcie zasilania.
Pamięć stała była wykonana z toroidalnych rdzeni ferrytowych. Elementy programów użytkowych były zakodowane w rdzeniach ferrytowych utkanych ręcznie zgodnie ze wzorem splotu. Pamięć stała była niezniszczalna w zależności od istnienia lub nie, napięcia zasilania. Odczyt danych z tej pamięci nie miał wpływu na jej zawartość.
Pamięć kasowalna była zbudowana z podobnych materiałów, lecz inaczej skonstruowana. Dla pamięci kasowalnej gęstość zapisu w zależności od ilości rdzeni ferrytowych do tego wykorzystanych, wynosiła jedno słowo na 16 rdzeni ferrytowych; dla pamięci stałej ten wskaźnik wynosił 8 rdzeni ferrytowych na jedno słowo maszynowe. Informacje zawarte w pamięci kasowalnej nie znikały po odłączeniu napięcia zasilania.
Obydwie pamięci były rdzeniami magnetycznymi służącymi do przechowywania informacji, jednakże rdzenie magnetyczne były wykorzystane różnie w obydwu typach pamięci. Dalszy opis wymaga od czytelnika znajomości podstawowych właściwości ferrytowych rdzeni magnetycznych opisanych przez krzywą pętli histerezy. Rdzeń jest statycznym urządzeniem przechowującym pamięć, posiadającym dwa stany stabilne. Może on być namagnesowany w jednym lub drugim kierunku, prądem o adekwatnym natężeniu przepływającym przez przewód przechodzącym przez rdzeń. Kierunek przepływu prądu definiował kierunek namagnesowania rdzenia. Rdzenie zachowywały namagnesowanie aż do momentu kiedy prąd o przeciwnym kierunku przełączył kierunek namagnesowania. Prądy płynące różnymi przewodami przez ten sam rdzeń powodowały skutki stosowne do prądu będącego ich algebraiczną sumą. Przewody odczytu przechodzące przez przełączany rdzeńWzbudzanie wybranego rdzenia było dokonywane przez jednoczesne wzbudzenie dwoma prostopadłymi przewodami adresowymi indukowały impuls.
Każde słowo maszynowe było umiejscowione stosownie do swojego adresu. Adresy pamięci stałej były przypisane do słów maszynowych jako wskazówka kolejności w jakiej były one realizowane; bloki adresów były rezerwowane dla danych takich jak wielkości stałe i tabele. Informacja w pamięci stałej była umiejscowiona na zawsze poprzez utkanie jej według określonego wzoru w magnetycznych rdzeniach. W pamięci kasowalnej informacje były umieszczane poprzez klawiaturę urządzenia DSKY, poprzez sekcję wejścia, lub z programów użytkowych.
W pamięci słowo maszynowe składało się z jednego bitu parzystości, 14 bitów przenoszących znaczenie, 1 bitu przenoszącego znak. Binarnie 1 w bicie znaku wskazywało liczbę ujemną, a binarnie 0 w bicie znaku wskazywało liczbę dodatnią. Słowa maszynowe przenoszące instrukcje zawierały 12 bitowy kod adresu i 3 bitowy kod polecenia. Normalnie kod adresu przedstawiał lokalizację słowa w pamięci lub w centralnym procesorze. Kod polecenia definiował przepływ danych wewnątrz komputera, a kod adresu wybierał dane, które były użyte do obliczeń.
Kod polecenia reprezentował operację, która była realizowana na danych, których lokalizację reprezentował kod adresu. Kod polecenia każdej instrukcji był wprowadzany do generatora sekwencji, który sterował przepływem danych i wytwarzał różne sekwencje impulsów kontrolnych dla każdej instrukcji. Każda instrukcja była poprzedzona inną instrukcją. Do określenia kolejności, według której instrukcje miały być realizowane normalnie były przechowywane w kolejnych lokalizacjach pamięci. Adres instrukcji, która miała być realizowana jako następna wywodził się od adresu instrukcji aktualnie realizowanej poprzez dodanie do adresu wartości jeden. Zakończenie realizacji instrukcji następowało wtedy, gdy kod realizacji następnej instrukcji został przesłany do generatora sekwencji, a stosowny adres został przesłany do centralnego procesora.
Komputery działały w środowiskach, w których wiele parametrów i warunków zmieniało się w czasie w sposób ciągły. Komputery działały operując nad jednym tylko elementem w tym samym czasie. Dlatego do przetwarzania parametrów, czas przydzielony do określonego sprzętu komputerowego, był dzielony. Przydział czasu był realizowany poprzez wyznaczenie priorytetów dla poszczególnych funkcji procedur każdego komputera.
DSKY thumb|250px|Monitor i klawiatura komputera Apollo