|
Apollo Command Module Computer (CMC)also known asApollo Guidance Computer (AGC) |
Content
|
| 1.Hardware |
|
|
| Figure 1.1 | |
|
In the picture above the Apollo Guidance Computer and the user interface, the DSKY are shown. The computer consisted of two metal trays, tray A and tray B.Tray B was mountd on top of Tray A. |
|
|
|
| Figure 1.2 | |
|
The two trays of the Apollo Guidance Computer containing the circuit modules. Tray A contained logic modules (24), interface modules (5) and power supplies. Tray B held the core rope memory modules (6), the driver circuitry for the core rope memory (4 modules), the erasable memory module (1), the circuitry to drive the erasable memory (4 modules), alarm circuits (1 module) and oscillator (1 module). The central processor was formed by most of the 24 logic modules. The whole logic circuitry was formed by 5,600 three-input NOR gates for which 4,100 integrated circuits were used. These three-input NOR gates were the building blocks for constructing data gates, flip-flops, which were the building blocks for the registers, the 16-bit adder, counters and the logic control circuitry. Table 1.1 contains a description of each logic module. |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Based on ref. 8 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Table 1.1 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Text | Text | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
| Figure 1.3 | |
|
The human interface of the Apollo Guidance Computer (AGC) also known as the Command Module Computer (CMC).
With the DSKY the crew could iniiate programs, routines and enter data. |
|
| 2.Architecture and Instruction set |
TOPICS TO BE ADDRESSED
|
Based on ref.2, figure 2-27 |
|||
| Figure 2.1 | |||
| Text | Acronyms | ||
|
|
||
Based on ref.1, figure VI-1 and ref.2, figure 2-21 |
|
|
Figure 2.2 |
Table 2.1 |
|
Assembly code The AGC was not equipped with an assembler program to convert the assembly codes, expressed in mnemonics, into binary machine instructions. The conversion was done on mainframes. The binary machine instructions were then stored in the fixed memory of the AGC. To be more precise: the binary codes were handwoven into core rope memory.
The Interpreter
Programs and user routines
Conversion of machine instructions into control signals
Input directly to registers.
Interrupt-driven input via I/O channels. |
A 12-bit address field was needed to address a core rope memory location, a 10-bit address field was needed to address a erasable memory location, and a 9-bit addressfiel was needed to address a I/O channel. An instructions with an 12-bit address field coould address a memory location in both memory types and could address a channel. |
|
|
|
Figure 2.3 |
|
|
Note The diagram above has been derived from various descriptions of the AGC programs, routines, the operating system, the virtual machine, and the native assembly code. With this software stack I have tried to represent the relationships between the various entities as they appear in my mind. It helps to briefly picture how functionality has been organized in the AGC. Software stacks are a common way to show how software has been implemented in IT systems. The diagram might suggest that the Interpreter did not use all the available assembly code. That is, however, not correct. It has been drawn in this way to illustrate that routines and programs were written in interpreter language and in assembly language.
Interface program "Pinball" |
Routines, VERB and NOUN The crew had access to various functions and programs via routines. A specific routine could be initiated by entering a two digit VERB code and a two digit NOUN code via the DSKY. The verb referred to a specific action or command. The noun referred to specific data or parameters. For example, entering VERB 37 and NOUN 31 means initiate program (VERB 37) 31 (NOUN 31).
"AGC Operating System" |
Based on ref. X X X X X |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 2.2 |
(Figure or Table) |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Text | Text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Based on ref.4, page 12 and ref.9, table "Channel Bit Assignments" |
|||
|
Table 2.3 |
|||
|
Note The readings from the IMU, GDC (BMAGs), and the Optics Subsystem (OSS) were retrieved via the CDU data channels and were then directly sent to registers which acted as counters and were residing in erasable memory. The I/O channnels were not involved in retrieving the readings. The name of registers which were related to the IMU and the OSS were: CDUX, CDUY, CDUZ, OPTY, OPTX, PIPAX, PIPAY, and PIPAZ. The registers that served as counters for the GDC (BMAG) readings are currently unknown to me. I need to check whether timer registers (TIME4, TIME5, and TIME6 ?) have been used as counters for the GDC (BMAG) readings. The registers mentioned above were updated by a counter instruction which belonged to the category of involuntary instructions. This category of high priority instructions were inserted between the normal instruction cycles and enabled the AGC to receive measurements which were hardware interrupt driven. |
Acronyms | ||
|
|
||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| With regard to the addressable registers: based on ref. 5 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 2.4 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Note The way registers were accessible by the central processor (CP) is an example of the AGC's optimized design. There were 9 registers which were internal to the CP and were directly accessible without the use of any address. These 9 registers were always flip-flop registers and could only be accessed by the CP.
|
There were registers which were accomodated by the erasable core memory and not by flip-flop circuitry. These registers occupied far less physical space than the flip-flop registers. The design decision which registers should realized by using integrated circuits or core memory was determined by finding an optimal trade-off between speed and the required physical weight and cost. (During the development phase, the Apollo hardware and the S-II stage of the Saturn V rocket were periodically subjected to stringent weight-saving measures so as not to exceed the launch capacity of the Saturn V.)
The 3 registers (A, L and Q) of the 7 Central Registers (A, L, Q, EB, FB, Z and BB) were directly accessible for the CP and did have both a memory address and a channel address.
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Based on ref.2, figure 4-VI | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 2.5 |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Control pulses for executing machine instructions Programs, routines and Virtual Machine (interpreter) instructions resulted in a sequence of assembly codes (machine instructions). Each machine instruction was converted by the Instruction Decoder in conjunction with the Sequence Generator into a sequence of control pulses over 12 time intervals, each with a duration of 11.7 microseconds. These 12 time intervals corresponded with one machine cycle. |
Text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Based on ref.2, figures 4-II and 4-IV | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 2.6 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
A list of 56 machine instruction or native instructions This set of machine instructions, together with the configuration of the AGC hardware and the hardware control logic, defined the architecture of the AGC. The machine instructions were contained in the hardwired control logic. All program, routine and interpreter instructions resulted in a sequence of machine instructions which were presented to the Instruction Decoder (figure 1.1). In conjunction with the Sequence Generator, the Instruction Decoder converted the instructions into control signals for executing the instructions. Both functional components were part of the control logic. |
Text | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||
|
Based on ref.5 and ref.6 |
|
|
Table 2.7 |
Table 2.8 |
|
|
A 12-bit address field was needed to address a core rope memory location, a 10-bit address field was needed to address a erasable memory location, and a 9-bit addressfiel was needed to address a I/O channel. An instructions with an 12-bit address field could address a memory location in both memory types and could address a channel. |
How the code space for order codes was organized The table above provides an overview of how order codes were assigned to the various instructions which always had a word lenght of 15 bits. A basic 15-bit instruction word contained an order code which was 3 bits long, accomodated by bit 15, 14, and 13. This 3-bit basic instruction was called an opcode (operation code) |C|C|C|, which accomodated a maximum of 8 instructions. This number was insufficient by far to use the available functionality of the central prcocessor efficiently and effectively.
Methods to enlarge the code space for the order code
|
|
|
||
Based on ref.5 and ref.6 |
|
|
|
Table 2.9 |
||
|
In the tables above is stepwise shown how the code space for the order code was enlarged to increase the number of instructions.
There were cases in which the 12-bit operand field or the address field could be partly used as extensions of the order code because the 12-bit address space was not always needed. Three categories of AGC central processor peripherals could be distinguished: the ROM, the RAM and the data channels, which included the 31 I/O channels. The ROM was 18 times larger than the RAM. To address a memory location in ROM, a 12-bit address was needed. To address a memory location in RAM a 10-bit address was needed. To address a data channel, 9 bits were needed to accommodate a maximum of 512 data channels, which was more than enough. Therefore, three categories of instructions could be distinguished according to the size of their operand size: 12, 10 or 9 bits. In the tables above is shown how the three categories of instructions are classified by their opcode. |
The absolute maximum number of instructions with 12-bit operands was 16 if each instruction must be able to target all memory locations from 0000 (OCT) to 7777 (OCT). In principle it was possible to increase this number of instructions significantly by introducing a mechanism in which each instruction was only allowed to address a limited range of addresses. The downside of this approach was that instructions may not be able to share data with other instructions via memory because they are not able to share the same memory address space. It was possible to share data via the processor registers. But this would have had a severe impact on the processor performance because its registers would not only be used for control and for arithmetic operations but also to manage the data-sharing between the instructions. This approach would have complicated the architecture and the programming. So opcode-specific distinctions between categories of instructions would not introduce these data-sharing problems. However, instructions with 12-bit operands were able to address memory locations in ROM and RAM. Instructions with 10-bit operands were only able to address memory locations in RAM.
In table 2.9.4 an arrangement is shown in which there are 11 instructions with 12-bit operands, 16 instructions with 10-bit operands, and 8 instructions with 9-bit operands. |
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Based on X X X X X |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 2.10 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Interpreter instructions are routines composed of native instructions In the table above, only 57 of the approximately 128 interpreter instructions are shown. These interpreter instructions can be considered as routines composed of the native machine instructions. A set of 42 of a total of 56 native instructions could be used to construct interpreter instructions. The other 14 native instructions from the categories PRIORITY and PERIPHERAL were not designed to be used for programming. The interpreter instructions contained complex mathematical functions. These interpreter instructions made it more efficient for programmers to develop navigation, guidance & software. It also saved a lot of memory space.
Storage in core rope memory |
Text | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 3.Navigation Software "Colossus" for the Apollo Command Module Computer |
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Based on X X X X X |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 3.1 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Storage in core rope memory Programs were stored in fixed memory. These fixed memories were made using electric wires which were handwoven through and around tiny magnetic rings. A wire through a ring represented a binary 1. and a wire bypassing a ring represented a binary 0. Multiple wires were woven through and around the rings. As a result, one ring was used to constitute multiple bits. A very efficient way to store information. |
Text | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Based on X X X X X |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Table 3.2 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Routines used by end-users, programs and other routines The routines mentioned in the table above were of a different category than the routines of the peudo insrtctions mentioned in table 1.3. These routines mentioned in table 2.2 were small programs, blocks of instructions to perform a specific task. There were routines which could be used by an user, various programr or various other routines. |
V25N07 means VERB 25 - NOUN 07 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||
|
||
|
Based on X X X X X |
||
|
Table 3.3 |
||
| Text | Text | |
| 4.Title |
|
Figure 4.1 Text |
Figure 4.2 Text |
|
Figure 4.3 Text |
|
| Acronyms | |
|---|---|
|
AGC Apollo Guidance Computer
BU Bus Management Unit BMAG Body Mounted Attitude Gyro CDH Constant Delta Altitude CDU Coupling Data Unit CMC Command Module Computer CMC Command Module Computer CSI Co-elliptic Sequence Initiate CTS Computer Test Set EOI Earth Orbit Insertion GDC Gyro Display Coupler GNCS Guidance, Navigation & Control System HAM Height Adjustment Maneuver IMU Inertial Measurement Unit ISS Inertial SubSystem (IMU, PIPA and CDU's) LOI Lunar Orbit Insertion LPD Landing Point Designator L.R. Landing Radar |
OSC Oscillator of the AGC
OSS Optical SubSystem PC Plane Change PGNCS Primary Guidance Navigation & Control System PIPA Pulsed Integrating Pendulous Accelerometer PMA Processing Module Assembly PMI Pitch Manual Input RHC Rotation Hand Controller RMC Rope Memory Core RMI Roll Manual Input R.R. Rendezvous Radar RTE Return To Earth S/C Spacecraft SOM Stable Orbit Midcourse SOR Stable Orbit Rendezvous THC Translation Hand Controller TLI Trans Lunar Injection TPI Transfer Phase Initiation YMI Yaw Manual Input |
References
|
Site Map | 
References | 
Change History
|
Comments and questions are welcome. All pictures and drawings contained on and through these pages are the author's, unless otherwise noted. No unauthorized reproduction without permission. |