AGC: úsporný režim, datové sběrnice, software
Kapitoly článků
Standby mód
Správa napájení byla u AGC řízena přepínačem. Tento režim vypnul napájení AGC vyjma 2,048 MHz hodin a škálovače. Signál F17 ze škálovače uměl AGC znovu spustit během 1,28 vteřiny. V úsporném režimu mohl AGC vykonávat základní instrukce, tedy kontrolovat standby přepínač a, pokud byl stále zapnut, vypnout napájení do doby, než obdržel příští signál F17.
V úsporném režimu AGC spal drtivou většinu své doby, takže se ani neprobouzel, aby vykonal Pinc instrukci potřebnou k updatování hodin reálného času v 10ms intervalech. Toto bylo kompenzováno jednou dodatečnou instrukcí updatující hodiny každých 1,28 vteřiny.
Úsporný režim dokázal srazit spotřebu AGC z nějakých 70W na 5 až 10W v klidné střední části letu Apolla. Nikdy to ale nebylo využito, AGC byl ponecháván zapnutý po celou dobu mise.
Datové sběrnice
Jak již zaznělo, AGC měl 16bitovou čtecí a 16bitovou zapisovací sběrnici. Data z centrálních registrů (A, Q, Z nebo LP) či jiných interních registrů mohla být synchronizována na čtecí sběrnici kontrolním signálem. Ta byla propojena se zapisovací skrze neinvertující buffer, takže veškerá data objevivší se na čtecí sběrnici byla i na zapisovací sběrnici. Jiný kontrolní signál pak mohl data ze zapisovací sběrnice uložit do registrů (obojího bylo využíváno v postupech výše popsaných).
Přenosy dat fungovaly následovně: pro přesun adresy příští instrukce z registru B do registru S se volal kontrolní signál RB (read B). Ten způsobil přesun adresy z registru B na čtecí sběrnici a v návaznosti na to na zapisovací sběrnici. WS signál (write S) poté adresu z této sběrnice přesunul do registru S.
Na čtecí sběrnici mohlo být načteno hned několik registrů současně. Když se tak stalo, data z každého registru byla „ORnuta“ na tuto čtecí sběrnici. OR bylo používáno pro implementaci Mask instrukce provádějící logický AND. Protože AGC neměl žádnou přirozenou výbavu pro AND, ale uměl OR skrze sběrnici a mohl provádět invertování dat skrze registr C, jako ekvivalent logického AND byl používán De Morganův theorém (podrobněji viz. Wikipedia, v Booleovské logice jsou De Morganovy zákony využívány k AND pomocí OR, resp. OR pomocí AND). AND dvou operandů se tedy prováděl jako OR invertovaných hodnot těchto operandů a inverze výsledku.
Software
Tolik tedy k hardwaru. Softwarová část byla samozřejmě napsána v assembleru AGC a skladována v rope paměti. Tvořil ji jednoduchý realtime operační systém obsahující exekuční část, plánovač dávkových úloh schopný uběhat až osm jobů v jednom čase pomocí nepreemptivního multitaskingu (každý job periodicky vracel kontrolu zpět exekutoru). Dále zde byla přerušeními řízená komponenta zvaná WaitList, která uměla plánovat pořadí několika časovačem řízených úloh. Úlohami se zde míní krátká vlákna příkazů, která mohla sama sebe přeplánovat pro znovuspuštění skrze WaitList, nebo mohla sama vyhodit z pořadí delší operaci spuštěním jobu v exekutoru (berme to jako dvouúrovňové řízení priority).
Priorita jobů exekutoru se dále dělila. Nejnižší prioritu měl takzvaný dummy job, který byl vždy přítomen a prováděl diagnostické kontroly a řídil zelené světlo informující na Dsky panelu o aktivitě počítače. Pokud dummy job běžel, znamenalo to, že počítač nemá nic lepšího na práci a v podstatě se poflakuje a vypnulo se indikační světlo na panelu, přičemž tento dummy job (s nejnižší možnou prioritou) mohl být v každém elementárním okamžiku přebit "normálním" jobem s vyšší prioritou, což způsobilo opětovné nahození zelené indikace činnosti na Dsky panelu.
AGC také měl sofistikovaný softwarový překladač, který implementoval virtuální stroj s komplexnějšími a schopnějšími instrukcemi, než jaké byly výše zmíněné nativní AGC instrukce. Kód překladače zahrnoval double precision skalární a vektorovou aritmetiku, MXV (Matice×Vektor) instrukci a mohl být míchán s nativním AGC kódem. Assembler a verzovací systém (pojmenovaný YUL) zajišťoval správný převod mezi nativním a překladačovým kódem.
Sada přerušeními řízených rutin rozhraní zvaná Pinball poskytovala klávesnici a displeji služby pro joby a úlohy běžící na AGC. Bohatá sada uživatelsky přístupných rutin dávala astronautům na displeji údaje o obsahu rozličných částí paměti v osmičkové nebo desítkové soustavě po skupinách jednoho až tří registrů v daném čase. K dispozici byly rutiny pro monitoring, takže astronaut mohl vyvolat úlohu periodicky zobrazující obsah různých oblastí paměti. Mohl inicializovat i joby. Pinball rutiny tak poskytovaly velmi hrubý, primitivní ekvivalent UNIXového shellu.