A Glimpse into the Apollo Guidance Computer
21–29 of 29 posts
Re: A Glimpse into the Apollo Guidance Computer
#22Interestingly, Steve Wozniak would come up with a similar solution for the Apple II about a decade later:
https://en.m.wikipedia.org/wiki/SWEET16
SWEET16 is an interpreted byte-code language invented by Steve Wozniak and implemented as part of the Integer BASIC ROM in the Apple II series of computers. It was created because Wozniak needed to manipulate 16-bit pointer data in his implementation of BASIC, and the Apple II was an 8-bit computer.
Re: A Glimpse into the Apollo Guidance Computer
#23The Margaret Hamilton picture actually just shows her next to computer manuals, not code she wrote. This was cleared up in another thread a long time ago.
Re: A Glimpse into the Apollo Guidance Computer
#24Included near the bottom of the article is a link to a Spanish outlet's interview with Margaret Hamilton (the lead flight software engineer) that I had only recently discovered: https://medium.com/@verne/margaret-hamilton-the-engineer-who... She gives some general insight to how the code works, but the biggest highlight for me was how she apparently coined the term "software engineering": > Software during the early…
Re: A Glimpse into the Apollo Guidance Computer
#25https://en.wikipedia.org/wiki/Moon_Machines#Part_3:_the_navi...
They are available on public torrent sites.
Re: A Glimpse into the Apollo Guidance Computer
#26To address the limited instruction set, the AGC team wrote a software virtual machine (or p-code machine) for the AGC to interpret an entirely new instruction set called the “interpretive language”. Interestingly, Steve Wozniak would come up with a similar solution for the Apple II about a decade later: https://en.m.wikipedia.org/wiki/SWEET16 SWEET16 is an interpreted byte-code language invented by Steve Wozniak and…
https://en.wikipedia.org/wiki/Short_Code_%28computer_languag...
Going back further, Turing's 1936 Universal Machine is "universal" because it can interpret a description of another machine, which could be a different Universal Machine (i.e. an interpreter), an application-specific machine, or even the same universal machine (i.e. self-emulation).
Gates and Allen developed Altair BASIC on a PDP-10 at Harvard in 1976, handling invalid-instruction traps by emulating the 8080 instructions they were using, thus turning the PDP-10's operating system into an interpreter for a different instruction set.
The Alto being used at the same time at Xerox PARC was optimized for such emulations: it ran "microcode" loaded from RAM, so that you could program it to interpret whatever instruction set was most appropriate for your application.
Throughout the 1960s and 1970s, a large fraction of IBM computer time was spent running emulators of earlier IBM models like the 650, 704, 709, and 7090, in order to run the software developed for those older machines.
And of course today much of our computer time is spent running software represented as JVM bytecodes, SpiderMonkey bytecodes https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Sp..., CPython bytecodes, or Lua "bytecodes"; and Vulkan, the new replacement for OpenGL, defines a vendor-independent bytecode format for representing GPU programs.
A level below this, the currently popular out-of-order CPUs recompile the i386 or amd64 instructions emitted by our compilers into sets of "micro-ops", which are then independently scheduled; sometimes these micro-op representations are cached so that the recompilation process doesn't have to be repeated every time through a loop. You could argue that this, even more than the usual microcode approach that was supposed to go out the window with the advent of RISC, has turned our entire software infrastructure into bytecode for a more convenient virtual machine.
Your comment seems to be predicated on the misconception that programming a computer to interpret a more convenient instruction set is some kind of bizarre or unusual thing to do. In fact, it is not only commonplace, but absolutely central to our modern concept of "computer".
Re: A Glimpse into the Apollo Guidance Computer
#27To address the limited instruction set, the AGC team wrote a software virtual machine (or p-code machine) for the AGC to interpret an entirely new instruction set called the “interpretive language”. Interestingly, Steve Wozniak would come up with a similar solution for the Apple II about a decade later: https://en.m.wikipedia.org/wiki/SWEET16 SWEET16 is an interpreted byte-code language invented by Steve Wozniak and…
Short Code was an interpreted bytecode proposed by Mauchly in 1949 and implemented by Schmitt on the UNIVAC I in 1950: https://en.wikipedia.org/wiki/Short_Code_%28computer_languag... Going back further, Turing's 1936 Universal Machine is "universal" because it can interpret a description of another machine, which could be a different Universal Machine (i.e. an interpreter), an application-specific machine, or even th…
If my dim memory of Knuth's article on the early history of compilers is right, Short Code was meant more for programmer productivity than code size.
Re: A Glimpse into the Apollo Guidance Computer
#28Included near the bottom of the article is a link to a Spanish outlet's interview with Margaret Hamilton (the lead flight software engineer) that I had only recently discovered: https://medium.com/@verne/margaret-hamilton-the-engineer-who... She gives some general insight to how the code works, but the biggest highlight for me was how she apparently coined the term "software engineering": > Software during the early…
Do you think in the male dominated world of engineering in the middle part of the 20th century that they considering programming to not be a serious discipline in engineering lead to women being hired in positions they would not have if programming carried higher prestige? If so what does this tell us about the contributions made by women like Margaret Hamilton, Grace Hopper, and the ENIAC programmers? The issue of m…
Should we just say that all the sexist women went to the teacher profession and pushed out the men, and all the sexist men went to the programming profession and pushed out the women? One thing seem for sure, only recruiting from half the population seem to cause a problem for both the teacher and programming profession.
Re: A Glimpse into the Apollo Guidance Computer
#29To address the limited instruction set, the AGC team wrote a software virtual machine (or p-code machine) for the AGC to interpret an entirely new instruction set called the “interpretive language”. Interestingly, Steve Wozniak would come up with a similar solution for the Apple II about a decade later: https://en.m.wikipedia.org/wiki/SWEET16 SWEET16 is an interpreted byte-code language invented by Steve Wozniak and…
Short Code was an interpreted bytecode proposed by Mauchly in 1949 and implemented by Schmitt on the UNIVAC I in 1950: https://en.wikipedia.org/wiki/Short_Code_%28computer_languag... Going back further, Turing's 1936 Universal Machine is "universal" because it can interpret a description of another machine, which could be a different Universal Machine (i.e. an interpreter), an application-specific machine, or even th…
Vulcan's SPIR-V, however, is more like a compiler's intermediate format than an ISA to be interpreted by either a program or hardware. It's probably more similar to AS/400's TIMI encoding in how it's supposed to work.
(Also, the mention of SWEET16 and the way of making parts of low-level programs more palatable reminded of the invention of Forth in late 1950s/early 1960s as well.)