Die Implementierung in der ICBM-Welt bestand darin, dass sechs Kollegen gleichzeitig an einem Tisch saßen und die mathematischen Routinen und die Gesamtarchitektur, die detaillierte Codierung der Programmkomponente und die Computerhardware entwarfen. Fünf Codezeilen pro Tag galten als gute Arbeit. Die meiste Zeit wurde damit verbracht, darüber zu streiten, ob etwas mit Hardware oder Software gemacht werden soll. Integrierte Schaltungen waren so weit fortgeschritten, dass Vier-Bit-Register verfügbar waren. Sie wurden für die beiden Register der CPU verwendet.
In dem System, an dem ich gearbeitet habe, war kein adressierbarer Speicher vorhanden. Nur eine Scheibe mit ein paar festen Köpfen. Der Code wurde auf die Festplatte getaktet. Es gab einen oberen und einen unteren Bus und zwei Register mit einer Wortlänge, aber es war ein großes Wort.
Am Ende gab es vier Programme, die durch Remote-Datenänderung ausgetauscht werden konnten. Nur eines war für den Flug, die anderen waren Bodenprogramme.
Hardware erledigte den größten Teil der Arbeit. Dinge wie 3 x 3-Matrix-Mathematik wurden mit ein paar Mikrocode-Anweisungen durchgeführt, die dazu führten, dass eine neue Matrix eine alte ersetzte an derselben Stelle auf der Festplatte.
Die CPU hatte häufig Bereiche, die während dieser längeren Eingriffe nicht verwendet wurden, sodass sie kleine Additionen / Subtraktionen / Multiplikationen / Divisionen in die Mitte schleichen konnten. Diese Anweisungen haben nur kleine Teile der CPU ausgetauscht, und es waren VIELE Anweisungen verfügbar. Sie mussten nur sicherstellen, dass sich alles an der richtigen Stelle auf der Festplatte befand, damit es verfügbar war, wenn etwas Freizeit zur Verfügung stand. Sie hatten fünf verschiedene Anweisungen zum Teilen von zwei Zahlen, die sich nur in der Route und dem Zeitpunkt des Prozesses innerhalb der CPU unterschieden, um eine Kollision mit anderen laufenden Berechnungen zu vermeiden. Viele der Buchhaltungsfunktionen wurden auf diese Weise ausgeführt.
Der wirklich lustige Teil war, dass Sie eine lange Anweisung beginnen konnten, bevor Sie alle Zahlen hatten, um sie zu vervollständigen. Während es am vorderen Ende schleifte, konnten Sie einen Additionsvorgang einleiten und in einem Register belassen, damit die lange Anweisung später gefunden werden kann. Möglicherweise können Sie es sogar auf die Festplatte schreiben. Es war eine wahre Freude, diese zu verfolgen und zu debuggen.
Der Navigationscomputer musste drei Ausgangssignale ansteuern, um die Rakete zu steuern. Es wusste nichts über Inszenierung oder irgendetwas anderes. Es gab eine Tabelle, die besagte, dass zum Zeitpunkt t Beschleunigungsmesserzählungen von x, y, z angezeigt werden sollten (akkumulierte Impulse entsprachen der Geschwindigkeit der Beschleunigungsmesserachse). Es verglich die tatsächlichen Zählwerte mit der vorprogrammierten Tabelle und berechnete neue Lenksignale.
Unter dem Strich hatten die Programmierer ein ziemlich begrenztes Ziel und hatten eine vollständige Karte der CPU im Kopf und konnten der gesamten folgen CPU-Operation in ihrem Kopf, als die Programmkomponenten ausgeführt wurden.
Ich war nicht in der Entwurfsphase, wurde aber von einem der Jungs, die am Tisch saßen, auf CPU und Mikrocode geschult.