Computers in Spaceflight: The NASA Experience
- Chapter Five -
- From Sequencers to Computers: Exploring the Moon and the Inner Planets -
Programmable sequencers: Mariners to Mars, Venus and Mercury
[144] Mariner Mars 1969 carried a 26-pound, programmable Central Computer and Sequencer designed by Herman and his team at JPL and built by Motorola15. The machine originated in studies done in l964-1965 for a Mars orbiter and lander called "Voyager" and Mariner Mars 1966, neither of which flew16. The major difference between the fixed sequencers and the programmable sequencer is that it had a memory of 128 words that could be altered in flight. Although this device had far greater flexibility and capabilities than the fixed sequencers, one of the older sequencers traveled on the spacecraft as a backup. During critical maneuvers, the two sequencers would run in parallel, a disagreement causing an abort of the maneuver. The Sequencer commanded all spacecraft systems, including the Attitude and Pointing System and Flight Data System, each of which evolved to include their own computers by the time JPL designed the outer planets Voyager in the 1970s.
[145] Original requirements for Mariner Mars 1969 called for 20 words of memory, making the 128-word version more than enough. Yet the memory was quickly exceeded, necessitating the use of "creative" programming techniques for the duration of the mission. Fortunately, the Sequencer was reprogrammable in flight. Memory locations used for terminated mission phases could be given to tasks scheduled for later. Edward Greenberg of JPL, who did most of the programming, replaced the launch and mid-course burn routines with new code after they had been executed17.
Despite the autonomy and flexibility gained by using the programmable Central Computer and Sequencer, the two Mariner Mars 1969 missions were the "most commanded" to that date. Mariner VI received 946 radio commands, Mariner VII got 957; either number exceeded the total number of commands sent to all the three previous successful missions combined18. One of the reasons for this was the memory restrictions; another could be that the engineers on the project downplayed the full capabilities of the Sequencer, not realizing what was possible19. However, the full capabilities of the device were more than exercised on the last Mariner missions.

Box 5-1: Programmable Central Computer and Sequencer Architecture and Software
The new Central Computer and Sequencer had no accumulator or central registers common to standard computers. Each memory location could be used as a register, and all operations began at a location, acted on the contents of another location, and ended in a third memory location20. Memory consisted of 22-bit words stored in magnetic core, with destructive serial readout21. Three types of words could be stored. An instruction word used the first 4 bits for one of the 16 operation codes, the next 9 for the address of the memory location to be acted on, and the last 9 for the address of where to go afterward22. Instruction DHJ meant "decrement hours and jump," so the computer would subtract one from the time portion of the event word stored in the location specified by the first address in the instruction and then jump to the location specified by the second address. An event word contained a 13-bit time, scaled to hours, minutes, or seconds, and a 9-bit address of where to go to start the event being timed when the time part zeroed23. For instance, if the event word was timing the mid-course correction burn, when the time portion reached zero, a branch would occur to the specified address, the first address of the mid-course maneuver subroutine. The last type of word was a data word, containing 22 bits of data.
[146] An instruction set of 16 operation codes contained mostly counting-type instructions: five scaled decrementing instructions (countdown hours, minutes, seconds, variables), and an incrementing instruction (count and jump). There was an ADD and a SUBtract, each requiring 27 milliseconds of machine time, by far the slowest instructions. Programmers used those very rarely, as the other instructions were better suited to sequencing. Subtraction was in one's complement form.
The sequencer executed the software by making a scan of the first seven instructions each hour24. Those instructions constituted the entire executive! They contained sufficient decrement and branching instructions to check if anything needed to be done during that hour of flight. As an example, the exec might contain a counter that kept track of the time to an imaging session. The resulting routine might look like this:25
1. Count 123 hours from start.
2. Count 45 minutes.
3. Activate camera and start frame count.
4. At 29th frame, start sending images.
5. At 32nd frame, rotate filter wheel to blue.
6. At 93rd frame, stop scan and stow platform.
7. Resume cruise mode counting.
After resuming cruise mode, the spacecraft clock would activate a scan at hour intervals again. Mission control could interrupt a scan, or a quiet time, and cause a jump to a specified subroutine26. (The entire Mariner Mars 1969 flight program is reproduced in Appendix IV.)
A memory location could be changed by issuing two consecutive commands from earth stations. JPL called these commands CC-1 and CC-2. CC-1 sent the address and the least significant 7 bits of the new word, and it caused an interrupt in the receiving Sequencer. CC-2 relayed the most significant 15 bits and released the scan inhibit27. A related command, CC-3, caused the Central Computer and Sequencer to read out the contents of a specified memory location, l bit per second28. Input was even slower, requiring an average of 2 minutes per word, compared with a ground-loading time of all 128 words in less than a minute29.

link to previous pagelink to indexlink to next page