9 ms·
Don Eyles Walks Us Through the Lunar Module Source Code
- szczys 10y agoThere's something amazing about carrying around your dot-matrix printed source code in a roller suitcase. The only thing that says "stable release" more than printing it out on hundreds of pages of paper is launching the computer running the code into space with no hope of doing an update.
- gumby 10y agoThats line printer output. Dot Matrix was only invented in the late 60s and in any case was too slow, being character at a time.
- jgrahamc 10y agoAnd you don't know terrifying power until you've seen a line printer going at full speed.
- AstroJetson 10y ago.. or the unworldly noise that a broken chain makes as it flails itself to death.
- sizzzzlerz 10y agoKids, today! You have no idea how lucky you are. At the time of writing this code, there were no 32" color monitors, IDEs, code text editors, or source code management systems. Code was first written out by hand and then typed onto punch cards or paper tape. These were fed into a mainframe computer for assembly. If you made a mistake, you had to find cards (by hand), remove and replace them with corrected cards. Get the cards out of order, you were toast. In general, the only way to gain a big picture of the code was to print it out, often over and over. Needless to say, paper was in huge demand.
- liotier 10y agoAlso, for all but the richest programmers who had direct access to the computer, the typical experience was that you submitted your stack of cards at the end of the day and got a printout in the morning... Probably why my old programming teacher scorned our iterative approach to repeatedly stumbling upon syntax errors by hitting the 'compile' key and adding the missing commas.
- nervousvarun 10y agoYup..."back then" you would arrange all your cards in a shoebox and then take a marker and make a diagonal mark from top left to bottom right JUST IN CASE you dropped said shoebox on the way to class to turn in your homework/take home test. Without that mark there's no easy way to recreate the correct order of the punch cards. Source: dad was an engineering major in the early 70s.
- kjs3 10y agoI was an engineering major in the mid 80s. You still goddamn well did mark your card deck. Wide tip sharpie, top left to bottom right. I think they retired the punches after my freshman year or the year after.
- punchthrowaway 10y agoThis comment is extremely interesting to me as my first instinct would be numbering the cards w marker. But it makes far more sense to draw a line on the edge for visual sorting.
- lettercarrier 10y agoAnd... you always kept your card decks until you graduated.
- donarb 10y agoThe first six columns of IBM cards used for COBOL programming had sequence numbers that could be used to validate that program lines were in order.
- Arnavion 10y ago>with no hope of doing an update To be fair, space probes occasionally do get software updates, eg http://blogs.esa.int/rosetta/2014/03/28/software-upgrade-at-655-million-kilometres/ http://blogs.esa.int/rosetta/2014/03/28/software-upgrade-at-... In the case of the Curiosity Rover, it didn't even "ship" with the software of what it was supposed to do on Mars until it had landed there http://www.space.com/17034-mars-rover-curiosity-software-upgrade.html http://www.space.com/17034-mars-rover-curiosity-software-upg... Edit: I'm not saying this was possible in 1969. I posted this because I was genuinely curious if it was ever done.
- szczys 10y agoYeah, I know the modern era machines have in-the-field updates, but I assume that wasn't a feature on the Lunar Module. You need a device capable of self-programming and with the state and cost of memory at the time I would think that an impossibility at the time.
- Bromskloss 10y agoWe'll just include a little robot that can rethread the core rope memory!
- lisper 10y ago> space probes occasionally do get software updates Sure. In 2014. Not in 1969. I once had the very interesting experience of developing an in-place update for a mid-1980s-vintage spacecraft instrument: the magnetometer on the Galileo spacecraft. It used an 1802 processor with 2k bytes of memory and was programmed in Forth. The development system ran on an Apple II. The instrument developed a bad byte of RAM and so a patch had to be developed, but the Apple II that ran the Forth compiler had long since been decommissioned. (It was nine years between when the spacecraft was completed and when it arrived at Jupiter, three of which were a delay caused by the Challenger explosion.) I ended up writing a complete 1802 emulator and new Forth development environment that was able to compile the original source code and reproduce what was then running on the instrument. That code ran in Common Lisp on a Macintosh II. Using that new development system, I produced a patch, which was only about a dozen bytes long. It was quite an inexpensive project by NASA standards (took about three months from start to finish with just me working on it) but the cost per byte of output code was pretty staggering :-)
- xhrpost 10y agoThere's a link to the source code on GitHub[0], is that not the full source though? Just searching for a comment like 'hello there' from the photo[1] doesn't seem to exist in the repo. [0] https://github.com/chrislgarry/Apollo-11 https://github.com/chrislgarry/Apollo-11 [1] https://hackadaycom.files.wordpress.com/2016/07/apollo-sourcecode-example-wb.jpg https://hackadaycom.files.wordpress.com/2016/07/apollo-sourc...
- mmastrac 10y agoGoogling some of the surrounding lines suggests that it is available here: https://github.com/avtobiff/virtualagc/blob/master/Luminary131/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc#L878 https://github.com/avtobiff/virtualagc/blob/master/Luminary1...
- diego898 10y agoIf you enjoy this, you might also enjoy a DIY Apollo Guidance Computer build by John Pultorak [1]: "John Pultorak created a working reproduction of the Apollo Guidance Computer (AGC), wrote a complete manual that will allow you to build your own Apollo flight computer clone and released it in the public domain." [1]: http://www.galaxiki.org/web/main/_blog/all/build-your-own-nasa-apollo-landing-computer-no-kidding.shtml http://www.galaxiki.org/web/main/_blog/all/build-your-own-na...
- spacecop 10y agoDoes no digital copy of this exist to the public?
- szczys 10y agoThere are digital copies if you search around the Internet (at least a couple have been linked in other comments). For me the most interesting part is that there are hand-written notes in this version which are from the development process.
- boznz 10y agoThe I/O on the diagram blows your mind, I wish the projects I worked on had outputs like Decent Engine My career choices really suck, should have joined NASA or SpaceX :-)
- foobarge 10y agoThere's mention of interpreted sections in the code. Do you know if it was possible to manually enter interpreted code to have it ran by the system afterward - or even program some of software by hand (being dictated hex) in case something unexpected occurring during the mission warranted it?
- robryk 10y agoAll of the code was in read-only memory (core rope), so it was impossible to modify it. There was at least one case when the behaviour of the code was significantly changed in flight to work around a hardware failure (shorted button). This involved changing the writable memory, which kept all the state, to selectively disable some parts of the lunar landing program. For more details see: http://www.ibiblio.org/apollo/#Final_exam_for_the_advanced_student_ http://www.ibiblio.org/apollo/#Final_exam_for_the_advanced_s...
- cwilkes 10y agoI couldn't have been the only one that read this as Don Rickles. Man you thought reviews from coders was tough, wait till you get roasted.