• starkparker 4 hours ago |
    Happy 10-year anniversary to this repo being shared on HN.

    Most significant discussion: https://news.ycombinator.com/item?id=12048945, 652 points, 145 comments on July 7, 2016

    All previous submissions: https://news.ycombinator.com/from?site=github.com/chrislgarr...

  • corvad 4 hours ago |
    Really cool to see this digitized and archived, it's such an important piece of history and really one of the earliest digital ic bases computers.
  • prabhanjana_c 4 hours ago |
    Great to see the AGC assembly code and knowing that Apollo 11 is coded purely in assembly. Not sure if it has any compiler. Also found https://github.com/virtualagc/virtualagc while searching for compiler.
    • pistate 4 hours ago |
      Part of the AGC ROMs implemented a virtual machine for things like matrix multiplication. So, a higher level of abstraction was available but it was still very much coded in its own assembly language.
    • palmotea 3 hours ago |
      > knowing that Apollo 11 is coded purely in assembly

      Of course. According to Wikipedia, it was introduced in 1966, so it's development must have been started earlier. Also according to Wikipedia higher-level languages like Fortran and Cobol were introduced in 1957/58. They were a cutting-edge technology of the era.

      So programmers of the day would have been comfortable with assembly, and the inefficiency and novelty of higher-level languages would have probably been a bad fit for the application.

      > Not sure if it has any compiler.

      What you're looking for is an assembler.

    • shakna 2 hours ago |
      The assembler you're looking for, is called YUL. [0]

      You can find much of that code here [1], but unless you have a Honeywell, it isn't much help. yaYUL is a modern remake, and can assemble most of the Apollo code.

      [0] https://www.ibiblio.org/apollo/Documents/agcis_13_yul.pdf

      [1] https://klabs.org/history/software/yul/

  • miohtama 3 hours ago |
    In 1969, they had not invented lowercase yet.
    • trq01758 2 hours ago |
      With our current RAM prices we may soon need to lose lowercase again.
  • Anonasty 3 hours ago |
    Ok, someone evaluate it with Fable and vibecode it better. Remember "make no mistake".
  • mellosouls 2 hours ago |
    More here (linked in the repo):

    Original scans (featuring Margaret Hamilton!)

    https://28gpc.csb.app/

    The Virtual AGC Project Spaceborne Computer Systems

    https://www.ibiblio.org/apollo/

    The purpose of this project is to provide the original flight software and emulations of the onboard guidance computers flown in historical spacecraft, so that the flight software can be run on computers commonly available to the public today. The particular emphasis is on the Apollo Guidance Computer (AGC) flown in lunar missions in the 1960's and 1970's.

    Wikipedia on the hardware:

    https://en.wikipedia.org/wiki/Apollo_Guidance_Computer

  • netsharc 2 hours ago |
    Clicking around the code, it mentions a page with images... even more clicking around got me to this page/image: https://www.ibiblio.org/apollo/Block1.html#DSKY / https://www.ibiblio.org/apollo/Block1ControlPanelDSKY.jpg

    Damn, a control panel to input values, probably straight to the CPU. I guess the astronauts didn't have to learn assembly, but imagine a programmer having to recite all the raw code (I guess the commands (verbs) are numeric as well) to debug something, all the way at the moon.

    • voidUpdate 2 hours ago |
      The DSKY was the main input system for the AGC, and commands were inputted using the verb/noun system. Verb says what you want to do, and Noun says what you want to do that verb to.

      For example, "Verb 35 Enter" lights every single segment and light on the DSKY, to make sure they're all working. "Verb 16 Noun 17 Enter" displays the IMU measurements, "Verb 16 Noun 36 Enter" displays the current time and "Verb 16 Noun 43 Enter" displays the current GPS lat/long. Verb 16 indicates to display something as decimal, and the noun indicates what to display.

      Other commands could be used to input data, or set what program the AGC was running, for example if you wanted to change the current running program to 67, that would be "Verb 37 Enter 67 Enter"

    • p_l 2 hours ago |
      The funniest thing is that DSKY was, IIRC, a "temporary solution" that became the norm, and despite all the platitudes today it was apparently hated by astronauts.
  • fjfaase 2 hours ago |
    Strange that no one took the effort to fix yaYUL to read the YUL format, but instead of adapting the transcription of the source to match the 'quirks' of yaYUL.
  • mittermayr 2 hours ago |
    Well, I have no idea how complete this is, but perhaps a neat Christmas-time-project for anyone with seemingly unlimited tokens to take this and let it build up a simulator, using the real code to drive simulated machinery.
    • mb_thd an hour ago |
      Or you use the virtualagc project linked in the readme to do the same thing without wasting a bunch of money on tokens.
  • BinaryRage 28 minutes ago |
    For an terrific AGC deep dive, I can’t recommend Marc’s restoration videos enough. The work they did was incredible:

    https://youtube.com/playlist?list=PL-_93BVApb59FWrLZfdlisi_x...

    • _joel 5 minutes ago |
      and Master Ken and co...