• quick_snail@feddit.nl
    link
    fedilink
    arrow-up
    9
    ·
    22 hours ago

    the crucial 30 lines of assembly for calculating Apollo 11’s navigation trajectories.

    I was never skeptical we went to the moon until now.

    How the hell can you do all that in 30 lines?!?

    • Buddahriffic@lemmy.world
      link
      fedilink
      arrow-up
      2
      ·
      5 hours ago

      Very efficiently.

      Or for a less cheeky answer, I believe the method they used at a high level was pointing a camera at a few guide stars, so the 30 lines of assembly might have been a loop that checked those cameras for any drift of those stars and did a correction pulse of the rotation boosters to keep them centered. Oh, one of the references might have been the signal strength from home, too (signal gets weaker if the antenna isn’t aligned).

      Unless it was an emergency, it might only need to look at 5 pixels to determine alignment and correction.

      Also, just because it’s assembly doesn’t mean it can’t call subroutines and functions, so that 30 lines might be misleading in the way those several lines in the other reply have way more going on. That said, if it’s just doing a pixel brightness comparison, that’s one line to read the central pixel, then for each direction one line to read that pixel, one more to compare, one line to jump to next comparison if center is brighter, one instruction to initiate correction burn, one instruction to stop it immediately after, then one instruction to return to the start of the loop… Which comes to 22 lines total, leaving 8 for logging or maybe timing the burn. And that’s assuming their instruction set didn’t have anything fancy like read and compare, compare and jump, or a single instruction burn pulse.