# What Is the yaYUL Assembler in the Apollo 11 Code Repository?

> Discover the yaYUL assembler, a modern re-implementation of NASA's original YUL assembler. Learn how it converts Apollo 11 source code into binary for the Lunar and Command Modules.

- Repository: [Chris Garry/Apollo-11](https://github.com/chrislgarry/Apollo-11)
- Tags: internals
- Published: 2026-03-04

---

**The yaYUL assembler is a modern re-implementation of NASA's original YUL assembler that converts Apollo Guidance Computer (AGC) source code into binary memory images for the Lunar Module (Luminary 099) and Command Module (Comanche 055) programs.**

The `chrislgarry/Apollo-11` repository hosts the complete source code for the Apollo 11 Guidance Computer. Because the original assembly tools are no longer available, the project relies on the **yaYUL assembler** to transform the historic AGC source files into executable binaries that can run on modern emulators like VirtualAGC.

## What Is yaYUL and Why Is It Used?

### The Lost Original YUL and GAP Assemblers

According to the source code documentation in [`Luminary099/README.md`](https://github.com/chrislgarry/Apollo-11/blob/main/Luminary099/README.md) (lines 28-30), the original **YUL** assembler and its successor **GAP** (Generalized Assembly Program) used at NASA to build the AGC software are no longer available. These historic tools translated handwritten assembly into the binary instructions executed by the AGC's rope memory.

### yaYUL as the Modern Replacement

**yaYUL** is a modern reconstruction that understands a slightly different syntax than the original but produces identical binary output. As noted in the repository's top-level [`README.md`](https://github.com/chrislgarry/Apollo-11/blob/main/README.md) at line 108, the project explicitly targets yaYUL for all assembly operations, making it the bridge between 1960s source listings and contemporary development workflows.

## How yaYUL Is Used in the Apollo 11 Source Code

### File Headers and Assembler Declaration

Every AGC source file in the repository begins with a standardized header comment that declares the intended assembler. In `Luminary099/WAITLIST.agc` at line 6, you will find:

```agc

# Assembler:	yaYUL

```

This metadata ensures that build systems and developers immediately recognize which tool should process the file.

### Assembling Individual Modules

You can assemble individual AGC source files using the yaYUL command-line interface. For example, to assemble the waitlist management routines:

```bash
yaYUL Luminary099/WAITLIST.agc -o WAITLIST.bin

```

This command produces `WAITLIST.bin`, a binary memory image compatible with AGC hardware emulators.

### Master Build Files for Luminary and Comanche

The Apollo 11 codebase uses monolithic build scripts that include multiple source chunks. The `Luminary099/MAIN.agc` file serves as the master assembly file for the Lunar Module software, while `Comanche055/MAIN.agc` handles the Command Module. These files use `INCLUDE` directives to pull in subsystem code, all processed by yaYUL:

```agc
* MAIN.agc – Top-level build script for Luminary 099
	INCLUDE "WAITLIST.agc"
	INCLUDE "UPDATE_PROGRAM.agc"
	INCLUDE "THROTTLE_CONTROL_ROUTINES.agc"

```

When yaYUL processes `MAIN.agc`, it recursively assembles all included components into a single binary suitable for the AGC's fixed memory banks.

## Summary

- **yaYUL** is the modern replacement for NASA's lost YUL and GAP assemblers, specifically designed to build Apollo Guidance Computer code.
- Every source file in `chrislgarry/Apollo-11` declares `# Assembler: yaYUL` in its header (e.g., `Luminary099/WAITLIST.agc`).

- The assembler translates `.agc` source files into binary images that can be loaded onto AGC emulators like VirtualAGC.
- Master build files (`Luminary099/MAIN.agc` and `Comanche055/MAIN.agc`) orchestrate the assembly of complete Lunar Module and Command Module programs.

## Frequently Asked Questions

### What does yaYUL stand for?

**yaYUL** stands for "yet another YUL," indicating its status as a modern re-implementation of the original YUL (Yale University Language) assembler developed for the Apollo program.

### Can I use the original NASA assembler instead of yaYUL?

No. According to the [`Luminary099/README.md`](https://github.com/chrislgarry/Apollo-11/blob/main/Luminary099/README.md) (lines 28-30), the original YUL assembler and its successor GAP are no longer available. yaYUL is the only known tool capable of assembling the Apollo 11 source code into valid AGC binary format.

### What file extension does yaYUL expect?

The Apollo 11 source files use the `.agc` extension (Apollo Guidance Computer). The assembler processes these files along with their `# Assembler: yaYUL` header declarations to generate binary output.

### Is yaYUL compatible with modern operating systems?

Yes. Unlike the original 1960s-era assembly tools that ran on mainframes, yaYUL is designed to run on modern operating systems including Linux, macOS, and Windows, making it accessible for historical research and education.