Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Apollo Guidance Computer
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== Software === [[file:Margaret Hamilton - restoration.jpg|thumb|upright|[[Margaret Hamilton (software engineer)|Margaret Hamilton]] standing next to listings of the software she and her MIT team produced for the [[Apollo program|Apollo Project]].<ref name="Weinstock2016">{{Cite web | title = Scene at MIT: Margaret Hamilton's Apollo code | last = Weinstock | first = Maia | work = MIT News | date = 2016-08-17 | access-date = 2016-08-17 | url = https://news.mit.edu/2016/scene-at-mit-margaret-hamilton-apollo-code-0817 }}</ref>]] AGC software was written in AGC [[assembly language]] and stored on [[rope memory]]. The bulk of the software was on read-only rope memory and thus could not be changed in operation,{{Sfn|Mindell|2008|pp=154, 157}} but some key parts of the software were stored in standard read-write [[magnetic-core memory]] and could be overwritten by the astronauts using the DSKY interface, as was done on [[Apollo 14]]. A simple [[real-time operating system]] designed by [[J. Halcombe Laning]]<ref name="Hoag">{{cite web|url=http://klabs.org/history/history_docs/mit_docs/1711.pdf|last=Hoag|first=David|title=The History of Apollo On-board Guidance, Navigation, and Control|date=September 1976|publisher=Charles Stark Draper Laboratory}}</ref> consisting of the 'Exec', a batch job-scheduling using [[cooperative multitasking|cooperative multi-tasking]],{{Sfn|Mindell|2008|p=149}} and an [[interrupt]]-driven [[Fixed-priority pre-emptive scheduling|pre-emptive scheduler]] called the 'Waitlist' which scheduled timer-driven 'tasks', controlled the computer. Tasks were short threads of execution which could reschedule themselves for re-execution on the Waitlist, or could kick off a longer operation by starting a 'job' with the Exec. Calculations were carried out using the [[metric system]], but display readouts were in units of feet, feet per second, and nautical miles – units that the Apollo astronauts were accustomed to.<ref name="metric">{{cite web|url=https://ukma.org.uk/why-metric/myths/metric-internationally/the-moon-landings/ |last=|first=|title=The Moon landings|date=18 October 2018|publisher=UK Metric Association}}</ref> The AGC had a sophisticated software interpreter, developed by the [[MIT Instrumentation Laboratory]], that implemented a [[virtual machine]] with more complex and capable pseudo-instructions than the native AGC. These instructions simplified the navigational programs. Interpreted code, which featured double precision [[trigonometry|trigonometric]], scalar and vector arithmetic (16 and 24-bit), even an <code>MXV</code> (matrix × vector) instruction, could be mixed with native AGC code. While the execution time of the pseudo-instructions was increased (due to the need to interpret these instructions at runtime) the interpreter provided many more instructions than AGC natively supported and the memory requirements were much lower than in the case of adding these instructions to the AGC native language which would require additional memory built into the computer (in [[history of computing hardware (1960s–present)#Third generation|the 1960s]] memory was very expensive). The average pseudo-instruction required about 24 ms to execute. The assembler, named ''YUL'' for an early prototype ''Christmas Computer'',<ref>{{citation |url=http://authors.library.caltech.edu/5456/1/hrst.mit.edu/hrs/apollo/public/conference3/blairsmith.htm |title=Hugh Blair-Smith's Introduction |publisher=MIT |date=30 November 2001 |work=AGC History Project (Caltech archive, original site closed) |access-date=2010-03-21}}</ref> enforced proper transitions between native and interpreted code. A set of interrupt-driven user interface routines called 'Pinball' provided keyboard and display services for the jobs and tasks running on the AGC. A set of user-accessible routines were provided to let the astronauts display the contents of various memory locations in [[octal]] or decimal in groups of 1, 2, or 3 registers at a time. 'Monitor' routines were provided so the operator could initiate a task to periodically redisplay the contents of certain memory locations. Jobs could be initiated. The design principles developed for the AGC by [[MIT Instrumentation Laboratory]], directed in late 1960s by [[Charles Stark Draper|Charles Draper]], became foundational to [[software engineering]]—particularly for the design of more reliable systems that relied on [[Asynchrony (computer programming)|asynchronous software]], [[Scheduling (computing)#Priority scheduling|priority scheduling]], testing, and [[human-in-the-loop]] decision capability.<ref name=apolo11>{{cite press release |url=https://www.nasa.gov/history/alsj/a11/a11Hamilton.html |title=NASA Honors Apollo Engineer |date=September 3, 2003}}</ref> When the design requirements for the AGC were defined, necessary software and programming techniques did not exist so they had to be designed from scratch. Many of the trajectory and guidance algorithms used were based on earlier work by [[Richard Battin]].<ref name="Hoag"/> The first command module flight was controlled by a software package called CORONA whose development was led by Alex Kosmala. Software for lunar missions consisted of COLOSSUS for the command module, whose development was led by Frederic Martin, and LUMINARY<ref>{{cite web | url=https://www.ibiblio.org/apollo/Luminary.html | title=Virtual AGC Luminary Page }}</ref> on the lunar module led by George Cherry. Details of these programs were implemented by a team under the direction of [[Margaret Hamilton (scientist)|Margaret Hamilton]].<ref name=":0">{{Cite magazine|url=https://www.wired.com/2015/10/margaret-hamilton-nasa-apollo/|title=Her Code Got Humans on the Moon—And Invented Software Itself|last=Harvey IV|first=Harry Gould|date=13 October 2015|magazine=WIRED|access-date=2018-11-25|language=en-US}}</ref> Hamilton was very interested in how the astronauts would interact with the software and predicted the types of errors that could occur due to human error.{{Sfn|Mindell|2008|p=149}}<ref name=":0" /> In total, software development on the project comprised 1400 [[person-years]] of effort, with a peak workforce of 350 people.<ref name="Hoag"/> In 2016, Hamilton received the [[List of Presidential Medal of Freedom recipients#Computing|Presidential Medal of Freedom]] for her role in creating the flight software. The Apollo Guidance Computer software influenced the design of [[Skylab]], [[Space Shuttle]] and early fly-by-wire fighter aircraft systems.<ref name=klabs>{{cite web |publisher=NASA Office of Logic Design |url=http://klabs.org/home_page/hamilton.htm |title=About Margaret Hamilton |date=February 3, 2010}}</ref><ref name=50th>{{cite web |author=A.J.S. Rayl |url=http://www.nasa.gov/50th/50th_magazine/scientists.html |title=NASA Engineers and Scientists-Transforming Dreams Into Reality |archive-url=https://web.archive.org/web/20160516060422/http://www.nasa.gov/50th/50th_magazine/scientists.html |archive-date=May 16, 2016 |url-status=dead}}</ref> The Apollo Guidance computer has been called "The fourth astronaut" for its role in helping the three astronauts who relied on it: [[Neil Armstrong]], [[Buzz Aldrin]] and [[Michael Collins (astronaut)|Michael Collins]].<ref>{{cite web|url=https://www.bbc.co.uk/programmes/w3csz4dn|website=bbc.co.uk|publisher=[[BBC World Service]]|first=Kevin|last=Fong|year=2019|title=13 minutes to the moon: Episode 5 The fourth astronaut}}</ref>
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)