Full Code of chrislgarry/Apollo-11 for AI

master 247dd7d0d1b0 cached
262 files
3.4 MB
908.1k tokens
1 requests
Download .txt
Showing preview only (3,627K chars total). Download the full file or copy to clipboard to get everything.
Repository: chrislgarry/Apollo-11
Branch: master
Commit: 247dd7d0d1b0
Files: 262
Total size: 3.4 MB

Directory structure:
gitextract_sw4va6c1/

├── .editorconfig
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── Discussion.md
│   │   ├── Humour.md
│   │   ├── Proof_Comanche.md
│   │   └── Proof_Luminary.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── labeler.yml
│   └── workflows/
│       ├── label.yml
│       └── markdownlint.yml
├── .gitignore
├── .markdownlint.yml
├── CONTRIBUTING.md
├── Comanche055/
│   ├── AGC_BLOCK_TWO_SELF-CHECK.agc
│   ├── ALARM_AND_ABORT.agc
│   ├── ANGLFIND.agc
│   ├── ASSEMBLY_AND_OPERATION_INFORMATION.agc
│   ├── AUTOMATIC_MANEUVERS.agc
│   ├── CM_BODY_ATTITUDE.agc
│   ├── CM_ENTRY_DIGITAL_AUTOPILOT.agc
│   ├── CONIC_SUBROUTINES.agc
│   ├── CONTRACT_AND_APPROVALS.agc
│   ├── CSM_GEOMETRY.agc
│   ├── DISPLAY_INTERFACE_ROUTINES.agc
│   ├── DOWN-TELEMETRY_PROGRAM.agc
│   ├── DOWNLINK_LISTS.agc
│   ├── ENTRY_LEXICON.agc
│   ├── ERASABLE_ASSIGNMENTS.agc
│   ├── EXECUTIVE.agc
│   ├── EXTENDED_VERBS.agc
│   ├── FIXED_FIXED_CONSTANT_POOL.agc
│   ├── FRESH_START_AND_RESTART.agc
│   ├── GIMBAL_LOCK_AVOIDANCE.agc
│   ├── GROUND_TRACKING_DETERMINATION_PROGRAM.agc
│   ├── IMU_CALIBRATION_AND_ALIGNMENT.agc
│   ├── IMU_COMPENSATION_PACKAGE.agc
│   ├── IMU_MODE_SWITCHING_ROUTINES.agc
│   ├── INFLIGHT_ALIGNMENT_ROUTINES.agc
│   ├── INTEGRATION_INITIALIZATION.agc
│   ├── INTER-BANK_COMMUNICATION.agc
│   ├── INTERPRETER.agc
│   ├── INTERPRETIVE_CONSTANTS.agc
│   ├── INTERRUPT_LEAD_INS.agc
│   ├── JET_SELECTION_LOGIC.agc
│   ├── KALCMANU_STEERING.agc
│   ├── KEYRUPT_UPRUPT.agc
│   ├── LATITUDE_LONGITUDE_SUBROUTINES.agc
│   ├── LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc
│   ├── LUNAR_LANDMARK_SELECTION_FOR_CM.agc
│   ├── MAIN.agc
│   ├── MEASUREMENT_INCORPORATION.agc
│   ├── MYSUBS.agc
│   ├── ORBITAL_INTEGRATION.agc
│   ├── P11.agc
│   ├── P20-P25.agc
│   ├── P30-P37.agc
│   ├── P32-P33_P72-P73.agc
│   ├── P34-35_P74-75.agc
│   ├── P37_P70.agc
│   ├── P40-P47.agc
│   ├── P51-P53.agc
│   ├── P61-P67.agc
│   ├── P76.agc
│   ├── PHASE_TABLE_MAINTENANCE.agc
│   ├── PINBALL_GAME_BUTTONS_AND_LIGHTS.agc
│   ├── PINBALL_NOUN_TABLES.agc
│   ├── PLANETARY_INERTIAL_ORIENTATION.agc
│   ├── POWERED_FLIGHT_SUBROUTINES.agc
│   ├── R30.agc
│   ├── R31.agc
│   ├── R60_62.agc
│   ├── RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc
│   ├── RCS-CSM_DIGITAL_AUTOPILOT.agc
│   ├── README.md
│   ├── REENTRY_CONTROL.agc
│   ├── RESTARTS_ROUTINE.agc
│   ├── RESTART_TABLES.agc
│   ├── RT8_OP_CODES.agc
│   ├── S-BAND_ANTENNA_FOR_CM.agc
│   ├── SERVICER207.agc
│   ├── SERVICE_ROUTINES.agc
│   ├── SINGLE_PRECISION_SUBROUTINES.agc
│   ├── STABLE_ORBIT.agc
│   ├── STAR_TABLES.agc
│   ├── SXTMARK.agc
│   ├── SYSTEM_TEST_STANDARD_LEAD_INS.agc
│   ├── T4RUPT_PROGRAM.agc
│   ├── TAGS_FOR_RELATIVE_SETLOC.agc
│   ├── TIME_OF_FREE_FALL.agc
│   ├── TPI_SEARCH.agc
│   ├── TVCDAPS.agc
│   ├── TVCEXECUTIVE.agc
│   ├── TVCINITIALIZE.agc
│   ├── TVCMASSPROP.agc
│   ├── TVCRESTARTS.agc
│   ├── TVCROLLDAP.agc
│   ├── TVCSTROKETEST.agc
│   ├── UPDATE_PROGRAM.agc
│   └── WAITLIST.agc
├── LICENSE.md
├── Luminary099/
│   ├── AGC_BLOCK_TWO_SELF_CHECK.agc
│   ├── AGS_INITIALIZATION.agc
│   ├── ALARM_AND_ABORT.agc
│   ├── AOSTASK_AND_AOSJOB.agc
│   ├── AOTMARK.agc
│   ├── ASCENT_GUIDANCE.agc
│   ├── ASSEMBLY_AND_OPERATION_INFORMATION.agc
│   ├── ATTITUDE_MANEUVER_ROUTINE.agc
│   ├── BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
│   ├── CONIC_SUBROUTINES.agc
│   ├── CONTROLLED_CONSTANTS.agc
│   ├── DAPIDLER_PROGRAM.agc
│   ├── DAP_INTERFACE_SUBROUTINES.agc
│   ├── DISPLAY_INTERFACE_ROUTINES.agc
│   ├── DOWNLINK_LISTS.agc
│   ├── DOWN_TELEMETRY_PROGRAM.agc
│   ├── ERASABLE_ASSIGNMENTS.agc
│   ├── EXECUTIVE.agc
│   ├── EXTENDED_VERBS.agc
│   ├── FINDCDUW--GUIDAP_INTERFACE.agc
│   ├── FIXED_FIXED_CONSTANT_POOL.agc
│   ├── FLAGWORD_ASSIGNMENTS.agc
│   ├── FRESH_START_AND_RESTART.agc
│   ├── GENERAL_LAMBERT_AIMPOINT_GUIDANCE.agc
│   ├── GIMBAL_LOCK_AVOIDANCE.agc
│   ├── GROUND_TRACKING_DETERMINATION_PROGRAM.agc
│   ├── IMU_COMPENSATION_PACKAGE.agc
│   ├── IMU_MODE_SWITCHING_ROUTINES.agc
│   ├── IMU_PERFORMANCE_TESTS_4.agc
│   ├── IMU_PERFORMANCE_TEST_2.agc
│   ├── INFLIGHT_ALIGNMENT_ROUTINES.agc
│   ├── INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc
│   ├── INTEGRATION_INITIALIZATION.agc
│   ├── INTER-BANK_COMMUNICATION.agc
│   ├── INTERPRETER.agc
│   ├── INTERPRETIVE_CONSTANT.agc
│   ├── INTERRUPT_LEAD_INS.agc
│   ├── KALCMANU_STEERING.agc
│   ├── KALMAN_FILTER.agc
│   ├── KEYRUPT_UPRUPT.agc
│   ├── LANDING_ANALOG_DISPLAYS.agc
│   ├── LATITUDE_LONGITUDE_SUBROUTINES.agc
│   ├── LEM_GEOMETRY.agc
│   ├── LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc
│   ├── LUNAR_LANDING_GUIDANCE_EQUATIONS.agc
│   ├── MAIN.agc
│   ├── MEASUREMENT_INCORPORATION.agc
│   ├── ORBITAL_INTEGRATION.agc
│   ├── P-AXIS_RCS_AUTOPILOT.agc
│   ├── P12.agc
│   ├── P20-P25.agc
│   ├── P30_P37.agc
│   ├── P32-P35_P72-P75.agc
│   ├── P34-35_P74-75.agc
│   ├── P40-P47.agc
│   ├── P51-P53.agc
│   ├── P70-P71.agc
│   ├── P76.agc
│   ├── PHASE_TABLE_MAINTENANCE.agc
│   ├── PINBALL_GAME_BUTTONS_AND_LIGHTS.agc
│   ├── PINBALL_NOUN_TABLES.agc
│   ├── PLANETARY_INERTIAL_ORIENTATION.agc
│   ├── POWERED_FLIGHT_SUBROUTINES.agc
│   ├── Q_R-AXIS_RCS_AUTOPILOT.agc
│   ├── R30.agc
│   ├── R31.agc
│   ├── R60_62.agc
│   ├── R63.agc
│   ├── RADAR_LEADIN_ROUTINES.agc
│   ├── RCS_FAILURE_MONITOR.agc
│   ├── README.md
│   ├── RESTARTS_ROUTINE.agc
│   ├── RESTART_TABLES.agc
│   ├── RTB_OP_CODES.agc
│   ├── S-BAND_ANTENNA_FOR_LM.agc
│   ├── SERVICER.agc
│   ├── SERVICE_ROUTINES.agc
│   ├── SINGLE_PRECISION_SUBROUTINES.agc
│   ├── SPS_BACK-UP_RCS_CONTROL.agc
│   ├── STABLE_ORBIT.agc
│   ├── SYSTEM_TEST_STANDARD_LEAD_INS.agc
│   ├── T4RUPT_PROGRAM.agc
│   ├── T6-RUPT_PROGRAMS.agc
│   ├── TAGS_FOR_RELATIVE_SETLOC.agc
│   ├── THE_LUNAR_LANDING.agc
│   ├── THROTTLE_CONTROL_ROUTINES.agc
│   ├── TIME_OF_FREE_FALL.agc
│   ├── TJET_LAW.agc
│   ├── TRIM_GIMBAL_CONTROL_SYSTEM.agc
│   ├── UPDATE_PROGRAM.agc
│   └── WAITLIST.agc
├── README.md
├── Translations/
│   ├── CONTRIBUTING.ar.md
│   ├── CONTRIBUTING.az.md
│   ├── CONTRIBUTING.ca.md
│   ├── CONTRIBUTING.cz.md
│   ├── CONTRIBUTING.da.md
│   ├── CONTRIBUTING.de.md
│   ├── CONTRIBUTING.es.md
│   ├── CONTRIBUTING.fr.md
│   ├── CONTRIBUTING.gl.md
│   ├── CONTRIBUTING.gr.md
│   ├── CONTRIBUTING.hi_in.md
│   ├── CONTRIBUTING.id.md
│   ├── CONTRIBUTING.it.md
│   ├── CONTRIBUTING.ja.md
│   ├── CONTRIBUTING.jv.md
│   ├── CONTRIBUTING.ko_kr.md
│   ├── CONTRIBUTING.ku.md
│   ├── CONTRIBUTING.lt.md
│   ├── CONTRIBUTING.mn.md
│   ├── CONTRIBUTING.nl.md
│   ├── CONTRIBUTING.no.md
│   ├── CONTRIBUTING.pl.md
│   ├── CONTRIBUTING.pt_br.md
│   ├── CONTRIBUTING.sv.md
│   ├── CONTRIBUTING.tr.md
│   ├── CONTRIBUTING.uk.md
│   ├── CONTRIBUTING.vi.md
│   ├── CONTRIBUTING.zh_cn.md
│   ├── CONTRIBUTING.zh_tw.md
│   ├── README.ar.md
│   ├── README.as_in.md
│   ├── README.az.md
│   ├── README.bd_bn.md
│   ├── README.be.md
│   ├── README.ca.md
│   ├── README.cz.md
│   ├── README.da.md
│   ├── README.de.md
│   ├── README.es.md
│   ├── README.fa.md
│   ├── README.fi.md
│   ├── README.fr.md
│   ├── README.gl.md
│   ├── README.gr.md
│   ├── README.hi_in.md
│   ├── README.id.md
│   ├── README.it.md
│   ├── README.ja.md
│   ├── README.jv.md
│   ├── README.ko_kr.md
│   ├── README.ku.md
│   ├── README.lt.md
│   ├── README.ml.md
│   ├── README.mm.md
│   ├── README.mn.md
│   ├── README.ne.md
│   ├── README.nl.md
│   ├── README.no.md
│   ├── README.pl.md
│   ├── README.pt_br.md
│   ├── README.ro.md
│   ├── README.ru.md
│   ├── README.si.md
│   ├── README.sv.md
│   ├── README.tr.md
│   ├── README.uk.md
│   ├── README.vi.md
│   ├── README.zh_cn.md
│   └── README.zh_tw.md
├── bun.lockb
└── package.json

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.agc]
indent_style = tab
tab_width = 8

[*.md]
indent_style = space
indent_size = 2


================================================
FILE: .github/ISSUE_TEMPLATE/Discussion.md
================================================
---
name: Discussion & Questions
about: Discussion about the Apollo 11 source code is highly welcomed.
labels: "Type: Discussion"
---


================================================
FILE: .github/ISSUE_TEMPLATE/Humour.md
================================================
---
name: Humour / Jokes
about: Humourous issues are allowed, but please follow GitHub's Acceptable Use policies
labels: "Type: Humour"
---


================================================
FILE: .github/ISSUE_TEMPLATE/Proof_Comanche.md
================================================
---
name: Proof Comanche055
about: Template for Comanche055 Proof issues 
title: "Proof "
---
Proof read transcribed code of [](//github.com/chrislgarry/Apollo-11/blob/master/Comanche055/.agc) against scans

**Multiple PRs for a few pages at a time are recommended!**

Lines: 
Page: — ()

Reduced quality scans can be found [here][1]

[1]://ibiblio.org/apollo/ScansForConversion/Comanche055


================================================
FILE: .github/ISSUE_TEMPLATE/Proof_Luminary.md
================================================
---
name: Proof Luminary099
about: Template for Luminary099 Proof issues 
title: "Proof "
---
Proof read transcribed code of [](//github.com/chrislgarry/Apollo-11/blob/master/Luminary099/.agc) against scans

**Multiple PRs for a few pages at a time are recommended!**

Lines: 
Page: — ()

Reduced quality scans can be found [here][1]

[1]://ibiblio.org/apollo/ScansForConversion/Luminary099


================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
<!-- Proofing PRs:
1. Title should follow "Proof [FILE NAME] #[PROOF ISSUE]", e.g:
    "Proof ALARM_AND_ABORT #564"
2. Mention pages checked if you have not proofed the entire file

--><!-- New README/CONTRIBUTING PRs:
1. Title should follow "Add [LANGUAGE] [README|CONTRIBUTING]", e.g:
    "Add Dutch README"
-->


================================================
FILE: .github/labeler.yml
================================================
"Type: Proof":
  - "**/*.agc"
"Type: Meta":
  - "**/MAIN.agc"
  - "**/*.md"
  - "*.md"


================================================
FILE: .github/workflows/label.yml
================================================
name: Pull Request Labeler
on:
  schedule:
    - cron: '0 */3 * * *'
jobs:
  labeler:
    runs-on: ubuntu-latest
    steps:
      - uses: paulfantom/periodic-labeler@master
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          GITHUB_REPOSITORY: ${{ github.repository }}
          LABEL_MAPPINGS_FILE: .github/labeler.yml


================================================
FILE: .github/workflows/markdownlint.yml
================================================
name: markdownlint
on: [push, pull_request]
jobs:
  delivery:
    runs-on: ubuntu-latest
    steps:
    - name: Check out code
      uses: actions/checkout@v6
    - name: Lint markdown
      uses: DavidAnson/markdownlint-cli2-action@v19
      with:
        config: .markdownlint.yml
        globs: '*.md,translations/*.md,Comanche055/*.md,Luminary099/*.md'
        separator: ','


================================================
FILE: .gitignore
================================================
yaYUL.exe
node_modules


================================================
FILE: .markdownlint.yml
================================================
default: true
MD007: false
MD010: false
MD013: false
MD026: false
MD033: false
MD034: false
MD036: false
MD041: false
MD050: false
MD053: false


================================================
FILE: CONTRIBUTING.md
================================================
# Contributing

🌐
[Azerbaijani][AZ],
[bahasa Indonesia][ID],
[Basa Jawa][JV],
[Català][CA]،
[Čeština][CZ],
[Dansk][DA],
[Deutsch][DE],
[English][EN],
[Español][ES],
[Français][FR],
[Galego][GL],
[Italiano][IT],
[Kurdi][KU],
[Kurdî][KU],
[Lietuvių][LT],
[Mongolia][MN],
[Nederlands][NL],
[Norsk][NO],
[Polski][PL],
[Português][PT_BR],
[Svenska][SV],
[tiếng Việt][VI],
[Türkçe][TR],
[Ελληνικά][GR],
[Українська][UK]،
[العربية][AR],
[हिन्दी][HI_IN],
[한국어][KO_KR],
[日本語][JA],
[正體中文][ZH_TW],
[简体中文][ZH_CN],
[Basa Jawa][JV]

[AR]:Translations/CONTRIBUTING.ar.md
[AZ]:Translations/CONTRIBUTING.az.md
[CA]:Translations/CONTRIBUTING.ca.md
[CZ]:Translations/CONTRIBUTING.cz.md
[DA]:Translations/CONTRIBUTING.da.md
[DE]:Translations/CONTRIBUTING.de.md
[EN]:CONTRIBUTING.md
[ES]:Translations/CONTRIBUTING.es.md
[FR]:Translations/CONTRIBUTING.fr.md
[GL]:Translations/CONTRIBUTING.gl.md
[GR]:Translations/CONTRIBUTING.gr.md
[HI_IN]:Translations/CONTRIBUTING.hi_in.md
[ID]:Translations/CONTRIBUTING.id.md
[IT]:Translations/CONTRIBUTING.it.md
[JA]:Translations/CONTRIBUTING.ja.md
[JV]:Translations/CONTRIBUTING.jv.md
[KO_KR]:Translations/CONTRIBUTING.ko_kr.md
[KU]:Translations/CONTRIBUTING.ku.md
[LT]:Translations/CONTRIBUTING.lt.md
[MN]:Translations/CONTRIBUTING.mn.md
[NL]:Translations/CONTRIBUTING.nl.md
[NO]:Translations/CONTRIBUTING.no.md
[PL]:Translations/CONTRIBUTING.pl.md
[PT_BR]:Translations/CONTRIBUTING.pt_br.md
[SV]:Translations/CONTRIBUTING.sv.md
[TR]:Translations/CONTRIBUTING.tr.md
[UK]:Translations/CONTRIBUTING.uk.md
[VI]:Translations/CONTRIBUTING.vi.md
[ZH_CN]:Translations/CONTRIBUTING.zh_cn.md
[ZH_TW]:Translations/CONTRIBUTING.zh_tw.md

The source code in this repository was digitized manually from paper printouts, so typos and other discrepancies have been introduced accidentally. The code shall be modified to be made consistent with the following scanned printouts:

- [AGC printouts for Comanche][8]
- [AGC printouts for Luminary][9]

The following website can be used to easily navigate around the scanned printouts for both Comanche and Luminary: https://28gpc.csb.app/

## Useful Extensions

GitHub has syntax support for the AGC assembly language built-in. Unfortunately your code editor will not, however there are AGC language extensions that provides syntax highlighting for the following editors:

- [Atom][Atom]†
- [CodeBlocks][CodeBlocks]
- [Eclipse][Eclipse]
- [Kate][Kate]
- [ProgrammersNotepad][ProgrammersNotepad]
- [Sublime Text 3][Sublime Text]†
- [TextPad][TextPad]
- [Vim][Vim]
- [Visual Studio Code][VisualStudioCode]†
- [jEdit][jEdit]

† Supports automatic formatting

[Atom]:https://github.com/Alhadis/language-agc
[CodeBlocks]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/CodeBlocks
[Eclipse]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Eclipse
[Kate]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/Kate
[ProgrammersNotepad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/ProgrammersNotepad
[Sublime Text]:https://github.com/jimlawton/AGC-Assembly
[TextPad]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/TextPad
[Vim]:https://github.com/wsdjeg/vim-assembly
[VisualStudioCode]:https://github.com/wopian/agc-assembly
[jEdit]:https://github.com/virtualagc/virtualagc/tree/master/Contributed/SyntaxHighlight/jEdit

## Formatting

**Note:** GitHub and extensions marked above will ensure you're using the correct formatting automatically.

- Use tab indentation
- Use tab width of 8
- Trim trailing whitespace

## What do I check?

Any discrepancies between the scans and the source code in this repository.

### Comments

Comments in the transcribed code **MUST** match the scans **exactly**.

Common issues you should look out for while proofing include, but not limited to:

#### Typographic Errors

In some places, the original developers made typographic errors while writing comments. Some of these were mistakenly corrected during the initial digitisation, however the digitisation has also introduced typographic errors that were not present in the scans.

For example, if the digitised comments contained `SPACECRAFT`, but `SPAECRAFT` was printed in the scans, then the digitisation **MUST** be corrected to `SPAECRAFT` (missing `C`).

Likewise, if a word has a typo in the digitisation but is spelt correctly in the scans then the typo **MUST** be corrected.

#### Spaces

Spaces between two characters in comments **SHOULD** match the scans. In most cases (see the discussion in [#316][10]), this is:

- Single space for new words.
- Double space for new sentences.
- Triple space for indentations.

Not all pages in the scans follow this generalisation, if the scans only have a single space instead of a double space, use a single space.

### Line breaks

- Line breaks *with* `R0000` in column 1 should match the scans exactly.
- Line breaks *with**__out__* `R0000` in column 1 should contain only 1 or 2 blank lines in a row.
  - If there are more than 2 blank lines breaks, strip the extra line breaks.
    - Lines with `R0000` in column 1 do not count towards this.
  - In the source images, these were created by an unprinted digit in column 8. A 2 there forced a double space (single blank line) and a 3 forced a triple space (double blank line). Values 4-8 were defined but never used. Read more about it in [#159][7]

For example the following:

```plain
R0819   SUBROUTINE TO SKIP...
R0820



 0821   LAMPTEST  CS  IMODES33
```

Should become:

```plain
R0819   SUBROUTINE TO SKIP...
R0820


 0820   LAMPTEST  CS  IMODES33
```

## Note

Before you make a PR, please make sure your changes are consistent with the scans!

[0]:https://github.com/chrislgarry/Apollo-11/pull/new/master
[1]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/
[2]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/
[6]:https://github.com/wopian/agc-assembly#user-settings
[7]:https://github.com/chrislgarry/Apollo-11/issues/159
[8]:http://www.ibiblio.org/apollo/ScansForConversion/Comanche055/
[9]:http://www.ibiblio.org/apollo/ScansForConversion/Luminary099/
[10]:https://github.com/chrislgarry/Apollo-11/pull/316#pullrequestreview-102892741


================================================
FILE: Comanche055/AGC_BLOCK_TWO_SELF-CHECK.agc
================================================
# Copyright:	Public domain.
# Filename:	AGC_BLOCK_TWO_SELF-CHECK.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Pages:	1394-1403
# Mod history:  2009-05-10 SN   (Sergio Navarro).  Started adapting
#				from the Colossus249/ file of the same
#				name, using Comanche055 page images.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#    Assemble revision 055 of AGC program Comanche by NASA
#    2021113-051.  10:28 APR. 1, 1969
#
#    This AGC program shall also be referred to as
#            Colossus 2A

# Page 1394
# PROGRAM DESCRIPTION				DATE  20 DECEMBER 1967
# PROGRAM NAME - SELF-CHECK			LOG SECTION  AGC BLOCK TWO SELF-CHECK
# MOD NO -  1					ASSEMBLY SUBROUTINE UTILITYM REV 25
# MOD BY - GAUNTT
#
#
# FUNCTIONAL DESCRIPTION
#
# 	PROGRAM HAS TWO MAIN PARTS. THE FIRST IS SELF-CHECK WHICH RUNS AS A ZERO PRIORITY JOB WITH NO CORE SET, AS
# PART OF THE BACK-UP IDLE LOOP. THE SECOND IS SHOW-BANKSUM WHICH RUNS AS A REGULAR EXECUTIVE JOB WITH ITS OWN
# STARTING VERB.
# 	THE PURPOSE OF SELF-CHECK IS TO CHECK OUT VARIOUS PARTS OF THE COMPUTER AS OUTLINED BELOW IN THE OPTIONS.
# 	THE PURPOSE OF SHOW-BANKSUM IS TO DISPLAY THE SUM OF EACH BANK , ONE AT A TIME.
# 	IN ALL THERE ARE  7 POSSIBLE OPTIONS IN THIS BLOCK II VERSION OF SELF-CHECK. MORE DETAIL DESCRIPTION MAY BE
# FOUND IN E-2065 BLOCK II AGC SELF-CHECK AND SHOW BANKSUM BY EDWIN D. SMALLY DECEMBER 1966, AND ADDENDA 2 AND 3.
# 	THE DIFFERENT OPTIONS ARE CONTROLLED BY PUTTING DIFFERENT NUMBERS IN THE SMODE REGISTER (NOUN 27). BELOW IS
# A DESCRIPTION OF WHAT PARTS OF THE COMPUTER THAT ARE CHECKED BY THE OPTIONS, AND THE CORRESPONDING NUMBER, IN
# OCTAL, TO LOAD INTO SMODE.
# +-4	ERASABLE MEMORY
# +-5	FIXED MEMORY
# +-1,2,3,6,7,10   EVERYTHING IN OPTIONS 4 AND 5.
# -0	SAME AS +-10 UNTIL AN ERROR IS DETECTED.
# +0	NO CHECK, PUTS COMPUTER INTO THE BACKUP IDLE LOOP.
#
#
# WARNINGS
# 	USE OF E MEMORY RESERVED FOR SELF-CHECK (EVEN IN IDLE LOOP) AS TEMP STORAGE BY OTHER PROGRAMS IS DANGEROUS.
# 	SMODE SET GREATER THAN OCT 10 PUTS COMPUTER INTO BACKUP IDLE LOOP.
#
#
# CALLING SEQUENCE
#
# 	TO CALL SELF-CHECK KEY IN
# 	     V 21 N 27 E  OPTION NUMBER E
# 	TO CALL SHOW-BANKSUM KEY IN
# 	     V 91 E	    DISPLAYS FIRST BANK
# 	     V 33 E	    PROCEED, DISPLAYS NEXT BANK
#
#
# EXIT MODES, NORMAL AND ALARM
#
# 	SELF-CHECK NORMALLY CONTINUES INDEFINITELY UNLESS THERE IS AN ERROR DETECTED. IF SO + OPTION NUMBERS PUT
# COMPUTER INTO BACKUP IDLE LOOP, - OPTION NUMBERS RESTART THE OPTION.
# 	THE -0 OPTION PROCEEDS FROM THE LINE FOLLOWING THE LINE WHERE THE ERROR WAS DETECTED.
# 	SHOW-BANKSUM PROCEEDS UNTIL A TERMINATE IS KEYED IN (V 34 E). THE COMPUTER IS PUT INTO THE BACKUP IDLE LOOP
#
#
#
# OUTPUT
# Page 1395
# 	SELF-CHECK UPON DETECTING AN ERROR LOADS THE SELF-CHECK ALARM CONSTANT (01102) INTO THE FAILREG SET AND
# TURNS ON THE ALARM LIGHT. THE OPERATOR MAY THEN DISPLAY THE THREE FAILREGS BY KEYING IN V 05 N 09 E. FOR FURTHER
# INFORMATION HE MAY KEY IN V 05 N 08 E, THE DSKY DISPLAY IN R1 WILL BE ADDRESS+1 OF WHERE THE ERROR WAS DETECTED,
# IN R2 THE BBCON OF SELF-CHECK, AND IN R3 THE TOTAL NUMBER OF ERRORS DETECTED BY SELF-CHECK SINCE THE LAST MAN
# INITIATED FRESH START (SLAP1).
# 	SHOW-BANKSUM STARTING WITH BANK 0 DISPLAYS IN R1 THE BANK SUM (A +-NUMBER EQUAL TO THE BANK NUMBER), IN R2
# THE BANK NUMBER, AND IN R3 THE BUGGER WORD.
#
#
# ERASABLE INITIALIZATION REQUIRED
# 	ACCOMPLISHED BY FRESH START
# 		SMODE SET TO +0
#
# DEBRIS
# 	ALL EXITS FROM THE CHECK OF ERASABLE (ERASCHK) RESTORE ORIGINAL CONTENTS TO REGISTERS UNDER CHECK.
# EXCEPTION IS A RESTART. RESTART THAT OCCURS DURING ERASCHK RESTORES ERASABLE, UNLESS THERE IS EVIDENCE TO DOUBT
# E MEMORY, IN WHICH CASE PROGRAM THEN DOES A FRESH START (DOFSTART).

		BANK	25
		SETLOC	SELFCHEC
		BANK

		COUNT	43/SELF

SBIT1		EQUALS	BIT1
SBIT2		EQUALS	BIT2
SBIT3		EQUALS	BIT3
SBIT4		EQUALS	BIT4
SBIT5		EQUALS	BIT5
SBIT6		EQUALS	BIT6
SBIT7		EQUALS	BIT7
SBIT8		EQUALS	BIT8
SBIT9		EQUALS	BIT9
SBIT10		EQUALS	BIT10
SBIT11		EQUALS	BIT11
SBIT12		EQUALS	BIT12
SBIT13		EQUALS	BIT13
SBIT14		EQUALS	BIT14
SBIT15		EQUALS	BIT15

S+ZERO		EQUALS	ZERO
S+1		EQUALS	BIT1
S+2		EQUALS	BIT2
S+3		EQUALS	THREE
S+4		EQUALS	FOUR
S+5		EQUALS	FIVE
# Page 1396
S+6		EQUALS	SIX
S+7		EQUALS	SEVEN
S8BITS		EQUALS	LOW8		# 00377
CNTRCON		=	OCT50		# USED IN CNTRCHK
ERASCON1	OCTAL	00061		# USED IN ERASCHK
ERASCON2	OCTAL	01373		# USED IN ERASCHK
ERASCON6	=	OCT1400		# USED IN ERASCHK
ERASCON3	OCTAL	01461		# USED IN ERASCHK
ERASCON4	OCTAL	01773		# USED IN ERASCHK
S10BITS		EQUALS	LOW10		# 01777, USED IN ERASCHK
SBNK03		EQUALS	PRIO6		# 06000, USED IN ROPECHK
-MAXADRS	=	HI5		# FOR ROPECHK
SIXTY		OCTAL	00060
SUPRCON		OCTAL	60017		# USED IN ROPECHK
S13BITS		OCTAL	17777
CONC+S1		OCTAL	25252		# USED IN CYCLSHFT
CONC+S2		OCTAL	52400		# USED IN CYCLSHFT
ERASCON5	OCTAL	76777
S-7		=	OCT77770
S-4		EQUALS	NEG4
S-3		EQUALS	NEG3
S-2		EQUALS	NEG2
S-1		EQUALS	NEGONE
S-ZERO		EQUALS	NEG0

		EBANK=	LST1
ADRS1		ADRES	SKEEP1
SELFADRS	ADRES	SELFCHK		# SELFCHK RETURN ADDRESS. SHOULD BE PUT
					# IN SELFRET WHEN GOING FROM SELFCHK TO
					# SHOWSUM AND PUT IN SKEEP1 WHEN GOING
					# FROM SHOWSUM TO SELF-CHECK.

PRERRORS	CA	ERESTORE	# IS IT NECESSARY TO RESTORE ERASABLE
		EXTEND
		BZF	ERRORS		# NO
		EXTEND
		DCA	SKEEP5
		INDEX	SKEEP7
		DXCH	0000		# RESTORE THE TWO ERASABLE REGISTERS
		CA	S+ZERO
		TS	ERESTORE
ERRORS		INHINT
		CA	Q
		TS	SFAIL		# SAVE Q FOR FAILURE LOCATION
		TS	ALMCADR		# FOR DISPLAY WITH BBANK AND ERCOUNT
		INCR	ERCOUNT		# KEEP TRACK OF NUMBER OF MALFUNCTIONS.
TCALARM2	TC	ALARM2
		OCT	01102		# SELF-CHECK MALFUNCTION INDICATOR
		CCS	SMODE
SIDLOOP		CA	S+ZERO
# Page 1397
		TS	SMODE
		TC	SELFCHK		# GO TO IDLE LOOP
		TC	SFAIL		# CONTINUE WITH SELF-CHECK

-1CHK		CCS	A
		TCF	PRERRORS
		TCF	PRERRORS
		CCS	A
		TCF	PRERRORS
		TC	Q

SMODECHK	EXTEND
		QXCH	SKEEP1
		TC	CHECKNJ		# CHECK FOR NEW JOB
		CCS	SMODE
		TC	SOPTIONS
		TC	SMODECHK +2	# TO BACKUP IDLE LOOP
		TC	SOPTIONS
		INCR	SCOUNT
		TC	SKEEP1		# CONTINUE WITH SELF-CHECK

SOPTIONS	AD	S-7
		EXTEND
		BZMF	+2		# FOR OPTIONS BELOW NINE.
BNKOPTN		TC	SIDLOOP		# ILLEGAL OPTION.  GO TO IDLE LOOP.
		INCR	SCOUNT		# FOR OPTIONS BELOW NINE.
		AD	S+7

		INDEX	A
		TC	SOPTION1
SOPTION1	TC	SKEEP1		# WAS TC+TCF
SOPTION2	TC	SKEEP1		# WAS IN:OUT1
SOPTION3	TC	SKEEP1		# WAS COUNTCHK
SOPTION4	TC	ERASCHK
SOPTION5	TC	ROPECHK
SOPTION6	TC	SKEEP1
SOPTION7	TC	SKEEP1
SOPTON10	TC	SKEEP1		# CONTINUE WITH SELF-CHECK

CHECKNJ		EXTEND
		QXCH	SELFRET		# SAVE RETURN ADDRESS WHILE TESTING NEWJOB
		TC	POSTJUMP	# TO SEE IF ANY JOBS HAVE BECOME ACTIVE.
		CADR	ADVAN

SELFCHK		TC	SMODECHK	# ** CHARLEY, COME IN HERE

# SKEEP7 HOLDS LOWEST OF TWO ADDRESSES BEING CHECKED.
# SKEEP6 HOLDS B(X+1).
# SKEEP5 HOLDS B(X).
# SKEEP4 HOLDS C(EBANK) DURING ERASLOOP AND CHECKNJ.
# Page 1398
# SKEEP3 HOLDS LAST ADDRESS BEING CHECKED (HIGHEST ADDRESS).
# SKEEP2 CONTROLS CHECKING OF NON-SWITCHABLE ERASABLE MEMORY WITH BANK NUMBERS IN EB.
# ERASCHK TAKES APPROXMATELY 7 SECONDS
ERASCHK		CA	S+1
		TS	SKEEP2
0EBANK		CA	S+ZERO
		TS	EBANK
		CA	ERASCON3	# 01461
		TS	SKEEP7		# STARTING ADDRESS
		CA	S10BITS		# 01777
		TS	SKEEP3		# LAST ADDRESS CHECKED
		TC	ERASLOOP

E134567B	CA	ERASCON6	# 01400
		TS	SKEEP7		# STARTING ADDRESS
		CA	S10BITS		# 01777
		TS	SKEEP3		# LAST ADDRESS CHECKED
		TC	ERASLOOP

2EBANK		CA	ERASCON6	# 01400
		TS	SKEEP7		# STARTING ADDRESS
		CA	ERASCON4	# 01773
		TS	SKEEP3		# LAST ADDRESS CHECKED
		TC	ERASLOOP

NOEBANK		TS	SKEEP2		# +0
		CA	ERASCON1	# 00061
		TS	SKEEP7		# STARTING ADDRESS
		CA	ERASCON2	# 01373
		TS	SKEEP3		# LAST ADDRESS CHECKED

ERASLOOP	INHINT
		CA	EBANK		# STORES C(EBANK)
		TS	SKEEP4
		EXTEND
		NDX	SKEEP7
		DCA	0000
		DXCH	SKEEP5		# STORES C(X) AND C(X+1) IN SKEEP6 AND 5.
		CA	SKEEP7
		TS	ERESTORE	# IF RESTART, RESTORE C(X) AND C(X+1)
		TS	L
		INCR	L
		NDX	A
		DXCH	0000		# PUTS OWN ADDRESS IN X AND X +1
		NDX	SKEEP7
		CS	0001		# CS X+1
		NDX	SKEEP7
		AD	0000		# AD X
		TC	-1CHK
		CA	ERESTORE	# HAS ERASABLE BEEN RESTORED
# Page 1399
		EXTEND
		BZF	ELOOPFIN	# YES, EXIT ERASLOOP.
		EXTEND
		NDX	SKEEP7
		DCS	0000		# COMPLEMENT OF ADDRESS OF X AND X+1
		NDX	SKEEP7
		DXCH	0000		# PUT COMPLEMENT OF ADDRESS OF X AND X+1
		NDX	SKEEP7
		CS	0000		# CS X
		NDX	SKEEP7
		AD	0001		# AD X+1
		TC	-1CHK
		CA	ERESTORE	# HAS ERASABLE BEEN RESTORED
		EXTEND
		BZF	ELOOPFIN	# YES, EXIT ERASLOOP.
		EXTEND
		DCA	SKEEP5
		NDX	SKEEP7
		DXCH	0000		# PUT B(X) AND B(X+1) BACK INTO X AND X+1
		CA	S+ZERO
		TS	ERESTORE	# IF RESTART, DO NOT RESTORE C(X), C(X+1)
ELOOPFIN	RELINT
		TC	CHECKNJ		# CHECK FOR NEW JOB
		CA	SKEEP4		# REPLACES B(EBANK)
		TS	EBANK
		INCR	SKEEP7
		CS	SKEEP7
		AD	SKEEP3
		EXTEND
		BZF	+2
		TC	ERASLOOP	# GO TO NEXT ADDRESS IN SAME BANK
		CCS	SKEEP2
		TC	NOEBANK
		INCR	SKEEP2		# PUT +1 IN SKEEP2.
		CA	EBANK
		AD	SBIT9
		TS	EBANK
		AD	ERASCON5	# 76777, CHECK FOR BANK E2
		EXTEND
		BZF	2EBANK
		CCS	EBANK
		TC	E134567B	# GO TO EBANKS 1,3,4,5,6, AND 7
		CA	ERASCON6	# END OF ERASCHK
		TS	EBANK
# CNTRCHK PERFORMS A CS OF ALL REGISTERS FROM OCT. 60 THROUGH OCT. 10.
# INCLUDED ARE ALL COUNTERS, T6-1, CYCLE AND SHIFT, AND ALL RUPT REGISTERS
CNTRCHK		CA	CNTRCON		# 00050
CNTRLOOP	TS	SKEEP2
		AD	SBIT4		# +10 OCTAL
		INDEX	A
# Page 1400
		CS	0000
		CCS	SKEEP2
		TC	CNTRLOOP

# CYCLSHFT CHECKS THE CYCLE AND SHIFT REGISTERS
CYCLSHFT	CA	CONC+S1		# 25252
		TS	CYR		# C(CYR) = 12525
		TS	CYL		# C(CYL) = 52524
		TS	SR		# C(SR) = 12525
		TS	EDOP		# C(EDOP) = 00125
		AD	CYR		# 37777		C(CYR) = 45252
		AD	CYL		# 00-12524	C(CYL) = 25251
		AD	SR		# 00-25251	C(SR) = 05252
		AD	EDOP		# 00-25376	C(EDOP) = +0
		AD	CONC+S2		# C(CONC+S2) = 52400
		TC	-1CHK
		AD	CYR		# 45252
		AD	CYL		# 72523
		AD	SR		# 77775
		AD	EDOP		# 77775
		AD	S+1		# 77776
		TC	-1CHK

		INCR	SCOUNT +1
		TC	SMODECHK
# SKEEP1 HOLDS SUM
# SKEEP2 HOLDS PRESENT CONTENTS OF ADDRESS IN ROPECHK AND SHOWSUM ROUTINES
# SKEEP2 HOLDS BANK NUMBER IN LOW ORDER BITS DURING SHOWSUM DISPLAY
# SKEEP3 HOLDS PRESENT ADDRESS (00000 TO 01777 IN COMMON FIXED BANKS)
#			       (04000 TO 07777 IN FXFX BANKS)
# SKEEP3 HOLDS BUGGER WORD DURING SHOWSUM DISPLAY
# SKEEP4 HOLDS BANK NUMBER AND SUPER BANK NUMBER
# SKEEP5 COUNTS 2 SUCCESSIVE TC SELF WORDS
# SKEEP6 CONTROLS ROPECHK OR SHOWSUM OPTION
# SKEEP7 CONTROLS WHEN ROUNTINE IS IN COMMON FIXED OR FIXED FIXED BANKS

ROPECHK		CA	S-ZERO		# *
		TS	SKEEP6		# * -0 FOR ROPECHK.
STSHOSUM	CA	S+ZERO		# * SHOULD BE ROPECHK

		TS	SKEEP4		# BANK NUMBER
		CA	S+1
COMMFX		TS	SKEEP7
		CA	S+ZERO
		TS	SKEEP1
		TS	SKEEP3
		CA	S+1
		TS	SKEEP5		# COUNTS DOWN 2 TC SELF WORDS
COMADRS		CA	SKEEP4
		TS	L		# TO SET SUPER BANK
# Page 1401
		MASK	HI5
		AD	SKEEP3
		TC	SUPDACAL	# SUPER DATA CALL
		TC	ADSUM
		AD	SBIT11		# 02000
		TC	ADRSCHK

FXFX		CS	A
		TS	SKEEP7
		EXTEND
		BZF	+3
		CA	SBIT12		# 04000, STARTING ADDRESS OF BANK 02
		TC	+2
		CA	SBNK03		# 06000, STARTING ADDRESS OF BANK 03
		TS	SKEEP3
		CA	S+ZERO
		TS	SKEEP1
		CA	S+1
		TS	SKEEP5		# COUNTS DOWN 2 TC SELF WORDS
FXADRS		INDEX	SKEEP3
		CA	0000
		TC	ADSUM
		TC	ADRSCHK

ADSUM		TS	SKEEP2
		AD	SKEEP1
		TS	SKEEP1
		CAF	S+ZERO
		AD	SKEEP1
		TS	SKEEP1
		CS	SKEEP2
		AD	SKEEP3
		TC	Q

ADRSCHK		LXCH	A
		CA	SKEEP3
		MASK	LOW10		# RELATIVE ADDRESS
		AD	-MAXADRS	# SUBTRACT MAX RELATIVE ADDRESS = 1777.
		EXTEND
		BZF	SOPTION		# CHECKSUM FINISHED IF LAST ADDRESS.
		CCS	SKEEP5		# IS CHECKSUM FINISHED
		TC	+3		# NO
		TC	+2		# NO
		TC	SOPTION		# GO TO ROPECHK SHOWSUM OPTION
		CCS	L		# -0 MEANS A TC SELF WORD.
		TC	CONTINU
		TC	CONTINU
		TC	CONTINU
		CCS	SKEEP5
		TC	CONTINU +1
# Page 1402
		CA	S-1
		TC	CONTINU +1	# AD IN THE BUGGER WORD
CONTINU		CA	S+1		# MAKE SURE TWO CONSECUTIVE TC SELF WORDS
		TS	SKEEP5
		CCS	SKEEP6		# *
		CCS	NEWJOB		# * +1, SHOWSUM
		TC	CHANG1		# *
		TC	+2		# *
		TC	CHECKNJ		# -0 IN SKEEP6 FOR ROPECHK

ADRS+1		INCR	SKEEP3
		CCS	SKEEP7
		TC	COMADRS
		TC	COMADRS
		TC	FXADRS
		TC	FXADRS

NXTBNK		CS	SKEEP4
		AD	LSTBNKCH	# LAST BANK TO BE CHECKED
		EXTEND
		BZF	ENDSUMS		# END OF SUMMING OF BANKS.
		CA	SKEEP4
		AD	SBIT11
		TS	SKEEP4		# 37 TO 40 INCRMTS SKEEP4 BY END RND CARRY
		TC	CHKSUPR
17TO20		CA	SBIT15
		ADS	SKEEP4		# SET FOR BANK 20
		TC	GONXTBNK
CHKSUPR		MASK	HI5
		EXTEND
		BZF	NXTSUPR		# INCREMENT SUPER BANK
27TO30		AD	S13BITS
		EXTEND
		BZF	+2		# BANK SET FOR 30
		TC	GONXTBNK
		CA	SIXTY		# FIRST SUPER BANK
		ADS	SKEEP4
		TC	GONXTBNK
NXTSUPR		AD	SUPRCON		# SET BNK 30 + INCR SUPR BNK AND CANCEL
		ADS	SKEEP4		# ERC BIT OF THE 37 TO 40 ADVANCE.
GONXTBNK	CCS	SKEEP7
		TC	COMMFX
		CA	S+1
		TC	FXFX
		CA	SBIT7		# HAS TO BE LARGER THAN NO OF FXSW BANKS.
		TC	COMMFX

SOPTION		CA	SKEEP4
		MASK	HI5		# = BANK BITS
		TC	LEFT5
# Page 1403
		TS	L		# BANK NUMBER BEFORE SUPER BANK
		CA	SKEEP4
		MASK	S8BITS		# = SUPER BANK BITS
		EXTEND
		BZF	SOPT		# BEFORE SUPER BANK
		TS	SR		# SUPER BANK NECESSARY
		CA	L
		MASK	SEVEN
		AD	SR
		TS	L		# BANK NUMBER WITH SUPER BANK
SOPT		CA	SKEEP6		# *
		EXTEND			# *
		BZF	+2		# * ON -0 CONTINUE WITH ROPE CHECK.
		TC	SDISPLAY	# * ON +1 GO TO DISPLAY OF SUM.
		CCS	SKEEP1		# FORCE SUM TO ABSOLUTE VALUE.
		TC	+2
		TC	+2
		AD	S+1
		TS	SKEEP1
BNKCHK		CS	L		# = - BANK NUMBER
		AD	SKEEP1
		AD	S-1
		TC	-1CHK		# CHECK SUM
		TC	NXTBNK

		EBANK=	NEWJOB
LSTBNKCH	BBCON*			# * CONSTANT, LAST BANK.
		SBANK=	LOWSUPER


================================================
FILE: Comanche055/ALARM_AND_ABORT.agc
================================================
# Copyright:    Public domain.
# Filename:     ALARM_AND_ABORT.agc
# Purpose:      Part of the source code for Comanche, build 055. It
#               is part of the source code for the Command Module's
#               (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler:    yaYUL
# Reference:    pp. 1493-1496
# Contact:      Ron Burkey <info@sandroid.org>
# Website:      http://www.ibiblio.org/apollo.
# Mod history:  2009-05-07 RSB	Adapted from Colossus249 file of the same
#				name, and page images. Corrected various
#				typos in the transcription of program
#				comments, and these should be back-ported
#				to Colossus249.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
#       Assemble revision 055 of AGC program Comanche by NASA
#       2021113-051.  April 1, 1969.
#
#       This AGC program shall also be referred to as Colossus 2A
#
#       Prepared by
#                       Massachusetts Institute of Technology
#                       75 Cambridge Parkway
#                       Cambridge, Massachusetts
#
#       under NASA contract NAS 9-4065.
#
# Refer directly to the online document mentioned above for further
# information.  Please report any errors to info@sandroid.org.

# Page 1493
# 	THE FOLLOWING SUBROUTINE MAY BE CALLED TO DISPLAY A NON-ABORTIVE ALARM CONDITION. IT MAY BE CALLED
# EITHER IN INTERRUPT OR UNDER EXECUTIVE CONTROL.
#
# 	CALLING SEQUENCE IS AS FOLLOWS:
#
#		TC	ALARM
#		OCT	NNNNN
#					# (RETURNS HERE)
		BLOCK	02
		SETLOC	FFTAG7
		BANK

		EBANK=	FAILREG

		COUNT	02/ALARM

# ALARM TURNS ON THE PROGRAM ALARM LIGHT, BUT DOES NOT DISPLAY.

ALARM		INHINT

		CA	Q
ALARM2		TS	ALMCADR
		INDEX	Q
		CA	0
BORTENT		TS	L

PRIOENT		CA	BBANK
 +1		EXTEND
		ROR	SUPERBNK	# ADD SUPER BITS.
		TS	ALMCADR +1

LARMENT		CA	Q		# STORE RETURN FOR ALARM
		TS	ITEMP1

		CA	LOC
		TS	LOCALARM
		CA	BANKSET
		TS	BANKALRM

CHKFAIL1	CCS	FAILREG		# IS ANYTHING IN FAILREG
		TCF	CHKFAIL2	# YES TRY NEXT REG
		LXCH	FAILREG
		TCF	PROGLARM	# TURN ALARM LIGHT ON FOR FIRST ALARM

CHKFAIL2	CCS	FAILREG +1
		TCF	FAIL3
		LXCH	FAILREG +1
		TCF	MULTEXIT

FAIL3		CA	FAILREG +2
# Page 1494
		MASK	POSMAX
		CCS	A
		TCF	MULTFAIL
		LXCH	FAILREG +2
		TCF	MULTEXIT

PROGLARM	CS	DSPTAB +11D
		MASK	OCT40400
		ADS	DSPTAB +11D

MULTEXIT	XCH	ITEMP1		# OBTAIN RETURN ADDRESS IN A
		RELINT
		INDEX	A
		TC	1

MULTFAIL	CA	L
		AD	BIT15
		TS	FAILREG +2

		TCF	MULTEXIT

# PRIOLARM DISPLAYS V05N09 VIA PRIODSPR WITH 3 RETURNS TO THE USER FROM THE ASTRONAUT AT CALL LOC +1,+2,+3 AND
# AN IMMEDIATE RETURN TO THE USER AT CALL LOC +4. EXAMPLE FOLLOWS,
#		CAF	OCTXX		# ALARM CODE
#		TC	BANKCALL
#		CADR	PRIOLARM
#
#		...	...
#		...	...
#		...	...		# ASTRONAUT RETURN
#		TC	PHASCHNG	# IMMEDIATE RETURN TO USER. RESTART
#		OCT	X.1		# PHASE CHANGE FOR PRIO DISPLAY

		BANK	10
		SETLOC	DISPLAYS
		BANK

		COUNT	10/DSPLA

PRIOLARM	INHINT			# * * * KEEP IN DISPLAY ROUTINES BANK
		TS	L		# SAVE ALARM CODE

		CA	BUF2		# 2 CADR OF PRIOLARM USER
		TS	ALMCADR
		CA	BUF2 +1
		TC	PRIOENT +1	# * LEAVE L ALONE
-2SEC		DEC	-200		# *** DONT MOVE
		CAF	V05N09
		TCF	PRIODSPR

# Page 1495
		BLOCK	02
		SETLOC	FFTAG13
		BANK

		COUNT	02/ALARM

BAILOUT		INHINT
		CA	Q
		TS	ALMCADR

		TC	BANKCALL
		CADR	VAC5STOR

		INDEX	ALMCADR
		CAF	0
		TC	BORTENT
OCT40400	OCT	40400

		INHINT
WHIMPER		CA	TWO
		AD	Z
		TS	BRUPT
		RESUME
		TC	POSTJUMP	# RESUME SENDS CONTROL HERE
		CADR	ENEMA

		SETLOC	FFTAG7
		BANK

POODOO		INHINT
		CA	Q
		TS	ALMCADR

		TC	BANKCALL
		CADR	VAC5STOR	# STORE ERASABLES FOR DEBUGGING PURPOSES.

		INDEX	ALMCADR
		CAF	0
ABORT2		TC	BORTENT

OCT77770	OCT	77770		# DONT MOVE
		CA	V37FLBIT	# IS AVERAGE G ON
		MASK	FLAGWRD7
		CCS	A
		TC	WHIMPER -1	# YES.  DONT DO POODOO.  DO BAILOUT.

		TC	DOWNFLAG
		ADRES	STATEFLG

		TC	DOWNFLAG
# Page 1496
		ADRES	REINTFLG

		TC	DOWNFLAG
		ADRES	NODOFLAG

		TC	BANKCALL
		CADR	MR.KLEAN
		TC	WHIMPER

CCSHOLE		INHINT
		CA	Q
		TS	ALMCADR
		TC	BANKCALL
		CADR	VAC5STOR
		CA	OCT1103
		TC	ABORT2
OCT1103		OCT	1103
CURTAINS	INHINT
		CA	Q
		TC	ALARM2
OCT217		OCT	00217
		TC	ALMCADR		# RETURN TO USER

DOALARM		EQUALS	ENDOFJOB
# CALLING SEQUENCE FOR VARALARM
#
#		CAF	(ALARM)
#		TC	VARALARM
#
# VARALARM TURNS ON PROGRAM ALARM LIGHT BUT DOES NOT DISPLAY
VARALARM	INHINT

		TS	L		# SAVE USERS ALARM CODE

		CA	Q		# SAVE USERS Q
		TS	ALMCADR

		TC	PRIOENT
OCT14		OCT	14		# DONT MOVE

		TC	ALMCADR		# RETURN TO USER

ABORT		EQUALS	BAILOUT		# *** TEMPORARY UNTIL ABORT CALLS OUT


================================================
FILE: Comanche055/ANGLFIND.agc
================================================
# Copyright:	Public domain.
# Filename:	ANGLFIND.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Pages:	399-411
# Mod history:	2009-05-09 RSB	Adapted from the Colossus249/ file
#				of the same name, using Comanche055 page
#				images.
#		2009-05-22 RSB	In NOGOM2, TC ZEROEROR corrected to
#				CADR ZEROEROR.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#	Assemble revision 055 of AGC program Comanche by NASA
#	2021113-051.  10:28 APR. 1, 1969
#
#	This AGC program shall also be referred to as
#			Colossus 2A

# Page 399
		BANK	15
		SETLOC	KALCMON1
		BANK

		EBANK=	BCDU

		COUNT	22/KALC

KALCMAN3	TC	INTPRET
		RTB
			READCDUK	# PICK UP CURRENT CDU ANGLES
		STORE	BCDU		# STORE THE INITIAL S/C ANGLES
		AXC,2	TLOAD		# COMPUTE THE TRANSFORMATION FROM
			MIS		# INITIAL S/C AXES TO STABLE MEMBER AXES
			BCDU		# (MIS)
		CALL
			CDUTODCM
		AXC,2	TLOAD		# COMPUTE THE TRANSFORMATION FROM
			MFS		# FINAL S/C AXES TO STABLE MEMBER AXES
			CPHI		# (MFS)
		CALL
			CDUTODCM
SECAD		AXC,1	CALL		# MIS AND MFS ARRAYS CALCULATED		$2
			MIS
			TRANSPOS
		VLOAD
		STADR
		STOVL	TMIS +12D
		STADR
		STOVL	TMIS +6
		STADR
		STORE	TMIS		# TMIS = TRANSPOSE(MIS) SCALED BY 2
		AXC,1	AXC,2
			TMIS
			MFS
		CALL
			MXM3
		VLOAD	STADR
		STOVL	MFI +12D
		STADR
		STOVL	MFI +6
		STADR
		STORE	MFI		# MFI = TMIS MFS (SCALED BY 4)
		SETPD	CALL		# TRANSPOSE MFI IN PD LIST
			18D
			TRNSPSPD
		VLOAD	STADR
		STOVL	TMFI +12D
		STADR
		STOVL	TMFI +6
# Page 400
		STADR
		STORE	TMFI		# TMFI = TRANSPOSE (MFI)  SCALED BY 4

# CALCULATE COFSKEW AND MFISYM

		DLOAD	DSU
			TMFI +2
			MFI +2
		PDDL	DSU		# CALCULATE COF SCALED BY 2/SIN(AM)
			MFI +4
			TMFI +4
		PDDL	DSU
			TMFI +10D
			MFI +10D
		VDEF
		STORE	COFSKEW		# EQUALS MFISKEW

# CALCULATE AM AND PROCEED ACCORDING TO ITS MAGNITUDE

		DLOAD	DAD
			MFI
			MFI +16D
		DSU	DAD
			DP1/4TH
			MFI +8D
		STORE	CAM		# CAM = (MFI0+MFI4+MFI8-1)/2 HALF SCALE
		ARCCOS
		STORE	AM		# AM=ARCCOS(CAM)  (AM SCALED BY 2)
		DSU	BPL
			MINANG
			CHECKMAX
		EXIT			# MANEUVER LESS THAN 0.25 DEG
		INHINT			# GO DIRECTLY INTO ATTITUDE HOLD
		CS	ONE		# ABOUT COMMANDED ANGLES
		TS	HOLDFLAG	# NOGO WILL STOP ANY RATE AND SET UP FOR A
		TC	LOADCDUD	# GOOD RETURN
		TCF	NOGO

CHECKMAX	DLOAD	DSU
			AM
			MAXANG
		BPL	VLOAD
			ALTCALC		# UNIT
			COFSKEW		# COFSKEW
		UNIT
		STORE	COF		# COF IS THE MANEUVER AXIS
		GOTO			# SEE IF MANEUVER GOES THRU GIMBAL LOCK
			LOCSKIRT
ALTCALC		VLOAD	VAD		# IF AM GREATER THAN 170 DEGREES
			MFI
# Page 401
			TMFI
		VSR1
		STOVL	MFISYM
			MFI +6
		VAD	VSR1
			TMFI +6
		STOVL	MFISYM +6
			MFI +12D
		VAD	VSR1
			TMFI +12D
		STORE	MFISYM +12D	# MFISYM=(MFI+TMFI)/2	SCALED BY 4

# CALCULATE COF

		DLOAD	SR1
			CAM
		PDDL	DSU		# PD0 CAM		 	       $4
			DPHALF
			CAM
		BOVB	PDDL		# PD2 1 - CAM			       $2
			SIGNMPAC
			MFISYM +16D
		DSU	DDV
			0
			2
		SQRT	PDDL		# COFZ = SQRT(MFISYM8-CAM)/(1-CAM)
			MFISYM +8D	#			  	 $ ROOT 2
		DSU	DDV
			0
			2
		SQRT	PDDL		# COFY = SQRT(MFISYM4-CAM)/(1-CAM) $ROOT2
			MFISYM
		DSU	DDV
			0
			2
		SQRT	VDEF		# COFX = SQRT(MFISYM-CAM)/(1-CAM) $ROOT 2
		UNIT
		STORE	COF

# DETERMINE LARGEST COF AND ADJUST ACCORDINGLY

COFMAXGO	DLOAD	DSU
			COF
			COF +2
		BMN	DLOAD		# COFY G COFX
			COMP12
			COF
		DSU	BMN
			COF +4
# Page 402
			METHOD3		# COFZ G COFX OR COFY
		GOTO
			METHOD1		# COFX G COFY OR COFZ
COMP12		DLOAD	DSU
			COF +2
			COF +4
		BMN
			METHOD3		# COFZ G COFY OR COFX

METHOD2		DLOAD	BPL		# COFY MAX
			COFSKEW +2	# UY
			U2POS
		VLOAD	VCOMP
			COF
		STORE	COF
U2POS		DLOAD	BPL
			MFISYM +2	# UX UY
			OKU21
		DLOAD	DCOMP		# SIGN OF UX OPPOSITE TO UY
			COF
		STORE	COF
OKU21		DLOAD	BPL
			MFISYM +10D	# UY UZ
			LOCSKIRT
		DLOAD	DCOMP		# SIGN OF UZ OPPOSITE TO UY
			COF +4
		STORE	COF +4
		GOTO
			LOCSKIRT
METHOD1		DLOAD	BPL		# COFX MAX
			COFSKEW		# UX
			U1POS
		VLOAD	VCOMP
			COF
		STORE	COF
U1POS		DLOAD	BPL
			MFISYM +2	# UX UY
			OKU12
		DLOAD	DCOMP
			COF +2		# SIGN OF UY OPPOSITE TO UX
		STORE	COF +2
OKU12		DLOAD	BPL
			MFISYM +4	# UX UZ
			LOCSKIRT
		DLOAD	DCOMP		# SIGN OF UZ OPPOSITE TO UY
			COF +4
		STORE	COF +4
		GOTO
			LOCSKIRT
METHOD3		DLOAD	BPL		# COFZ MAX
# Page 403
			COFSKEW	+4	# UZ
			U3POS
		VLOAD	VCOMP
			COF
		STORE	COF
U3POS		DLOAD	BPL
			MFISYM +4	# UX UZ
			OKU31
		DLOAD	DCOMP
			COF		# SIGN OF UX OPPOSITE TO UZ
		STORE	COF
OKU31		DLOAD	BPL
			MFISYM +10D	# UY UZ
			LOCSKIRT
		DLOAD	DCOMP
			COF +2		# SIGN OF UY OPPOSITE TO UZ
		STORE	COF +2
		GOTO
			LOCSKIRT

# Page 404
# MATRIX OPERATIONS

MXM3		SETPD			# MXM3 MULTIPLIES 2 3X3 MATRICES
			0		# AND LEAVES RESULT IN PD LIST
		DLOAD*	PDDL*		# ADDRESS OF 1ST MATRIX IN XR1
			12D,2		# ADDRESS OF 2ND MATRIX IN XR2
			6,2
		PDDL*	VDEF		# DEFINE VECTOR M2(COL 1)
			0,2
		MXV*	PDDL*		# M1XM2(COL 1) IN PD
			0,1
			14D,2
		PDDL*	PDDL*
			8D,2
			2,2
		VDEF	MXV*		# DEFINE VECTOR M2(COL 2)
			0,1
		PDDL*	PDDL*		# M1XM2(COL 2) IN PD
			16D,2
			10D,2
		PDDL*	VDEF		# DEFINE VECTOR M2(COL 3)
			4,2
		MXV*	PUSH		# M1XM2(COL 3) IN PD
			0,1
		GOTO
			TRNSPSPD	# REVERSE ROWS AND COLS IN PD AND
					# RETURN WITH M1XM2 IN PD LIST

TRANSPOS	SETPD	VLOAD*		# TRANSPOS TRANSPOSES A 3X3 MATRIX
			0		#  AND LEAVES RESULT IN PD LIST
			0,1		# MATRIX ADDRESS IN XR1
		PDVL*	PDVL*
			6,1
			12D,1
		PUSH			# MATRIX IN PD
TRNSPSPD	DLOAD	PDDL		# ENTER WITH MATRIX IN PD LIST
			2
			6
		STODL	2
		STADR
		STODL	6
			4
		PDDL
			12D
		STODL	4
		STADR
		STODL	12D
			10D
		PDDL
# Page 405
			14D
		STODL	10D
		STADR
		STORE	14D
		RVQ			# RETURN WITH TRANSPOSED MATRIX IN PD LIST
MINANG		DEC	.00069375
MAXANG		DEC	.472222
# GIMBAL LOCK CONSTANTS

# D = MGA CORRESPONDING TO GIMBAL LOCK = 60 DEGREES
# NGL = BUFFER ANGLE (TO AVOID DIVISIONS BY ZERO) = 2 DEGREES

SD		DEC	.433015		# = SIN(D)				$2
K3S1		DEC	.86603		# = SIN(D)				$2
K4		DEC	-.25		# = - COS(D)				$2
K4SQ		DEC	.125		# = COS(D)COS(D)			$2
SNGLCD		DEC	.008725		# = SIN(NGL)COS(D)			$2
CNGL		DEC	.499695		# = COS(NGL)				$2
READCDUK	INHINT			# LOAD T(MPAC) WITH THE CURRENT CDU ANGLES
		CA	CDUZ
		TS	MPAC +2
		EXTEND
		DCA	CDUX
		RELINT
		TCF	TLOAD +6
		BANK	16
		SETLOC	KALCMON2
		BANK

		COUNT*	$$/KALC

CDUTODCM	AXT,1	SSP		# SUBROUTINE TO COMPUTE  DIRECTION COSINE
		OCT	3		# MATRIX RELATING S/C AXES TO STABLE
			S1		# MEMBER AXES FROM 3 CDU ANGLES IN T(MPAC)
		OCT	1		# SET XR1, S1 AND PD FOR LOOP
		STORE	7
		SETPD
			0
LOOPSIN		SLOAD*	RTB
			10D,1
			CDULOGIC
		STORE	10D		# LOAD PD WITH 0 SIN(PHI)
		SIN	PDDL		#	       2 COS(PHI)
			10D		#	       4 SIN(THETA)
		COS	PUSH		#	       6 COS(THETA)
		TIX,1	DLOAD		#	       8 SIN(PSI)
			LOOPSIN		#	      10 COS(PSI)
			6
		DMP	SL1
			10D
# Page 406
		STORE	0,2
		DLOAD
			4
		DMP	PDDL
			0		# (PD6 SIN(THETA)SIN(PHI))
			6
		DMP	DMP
			8D
			2
		SL1	BDSU
			12D
		SL1
		STORE	2,2
		DLOAD
			2
		DMP	PDDL		# (PD7 COS(PHI)SIN(THETA)) SCALED 4
			4
			6
		DMP	DMP
			8D
			0
		SL1
		DAD	SL1
			14D
		STORE	4,2
		DLOAD
			8D
		STORE	6,2
		DLOAD
			10D
		DMP	SL1
			2
		STORE	8D,2
		DLOAD
			10D
		DMP	DCOMP
			0
		SL1
		STORE	10D,2
		DLOAD
			4
		DMP	DCOMP
			10D
		SL1
		STORE	12D,2
		DLOAD
		DMP	SL1		# (PUSH UP 7)
			8D
		PDDL	DMP		# (PD7 COS(PHI)SIN(THETA)SIN(PSI)) SCALE4
			6
# Page 407
			0
		DAD	SL1		#  (PUSH UP 7)
		STADR			# C7=COS(PHI)SIN(THETA)SIN(PSI)
		STORE	14D,2
		DLOAD
		DMP	SL1		#  (PUSH UP 6)
			8D
		PDDL	DMP		#  (PD6 SIN(THETA)SIN(PHI)SIN(PSI)) SCALE4
			6
			2
		DSU	SL1		#  (PUSH UP 6)
		STADR
		STORE	16D,2		# C8=-SIN(THETA)SIN(PHI)SIN(PSI)
		RVQ			#  +COS(THETA)COS(PHI)
ENDOCM		EQUALS

		BANK	15
		SETLOC	KALCMON1
		BANK

# CALCULATION OF THE MATRIX DEL......
#
#	*      *               --T           *
#	DEL = (IDMATRIX)COS(A)+UU (1-COS(A))+UX SIN(A)		SCALED 1
#
#             -
#	WHERE U IS A UNIT VECTOR (DP SCALED 2) ALONG THE AXIS OF ROTATION.
#	A IS THE ANGLE OF ROTATION (DP SCALED 2)
#					   -
#	UPON ENTRY THE STARTING ADDRESS OF U IS COF, AND A IS IN MPAC

		COUNT	22/KALC

DELCOMP		SETPD	PUSH		# MPAC CONTAINS THE ANGLE A
			0
		SIN	PDDL		# PD0 = SIN(A)
		COS	PUSH		# PD2 = COS(A)
		SR2	PDDL		# PD2 = COS(A)				$8
		BDSU	BOVB		# PD4 = 1-COS(A)			$2
			DPHALF
			SIGNMPAC

# COMPUTE THE DIAGONAL COMPONENTS OF DEL

		PDDL
			COF
		DSQ	DMP
			4
		DAD	SL3
# Page 408
			2
		BOVB
			SIGNMPAC
		STODL	DEL		# UX UX(U-COS(A)) +COS(A)		$1
			COF +2
		DSQ	DMP
			4
		DAD	SL3
			2
		BOVB
			SIGNMPAC
		STODL	DEL +8D		# UY UY(1-COS(A)) +COS(A)		$1
			COF +4
		DSQ	DMP
			4
		DAD	SL3
			2
		BOVB
			SIGNMPAC
		STORE	DEL +16D	# UZ UZ(1-COS(A)) +COS(A)		$1

# COMPUTE THE OFF DIAGONAL TERMS OF DEL

		DLOAD	DMP
			COF
			COF +2
		DMP	SL1
			4
		PDDL	DMP		# D6  UX UY (1-COS A)			$ 4
			COF +4
			0
		PUSH	DAD		# D8  UZ SIN A				$ 4
			6
		SL2	BOVB
			SIGNMPAC
		STODL	DEL +6
		BDSU	SL2
		BOVB
			SIGNMPAC
		STODL	DEL +2
			COF
		DMP	DMP
			COF +4
			4
		SL1	PDDL		# D6  UX UZ (1-COS A )		$ 4
			COF +2
		DMP	PUSH		# D8  UY SIN(A)
			0
		DAD	SL2
			6
# Page 409
		BOVB
			SIGNMPAC
		STODL	DEL +4		# UX UZ (1-COS(A))+UY SIN(A)
		BDSU	SL2
		BOVB
			SIGNMPAC
		STODL	DEL +12D	# UX UZ (U-COS(A))-UY SIN(A)
			COF +2
		DMP	DMP
			COF +4
			4
		SL1	PDDL		# D6  UY UZ (1-COS(A))		$ 4
			COF
		DMP	PUSH		# D6  UX SIN(A)
			0
		DAD	SL2
			6
		BOVB
			SIGNMPAC
		STODL	DEL +14D	# UY UZ(1-COS(A)) +UX SIN(A)
		BDSU	SL2
		BOVB
			SIGNMPAC
		STORE	DEL +10D	# UY UZ (1-COS(A)) -UX SIN(A)
		RVQ

# DIRECTION COSINE MATRIX TO CDU ANGLE ROUTINE
# X1 CONTAINS THE COMPLEMENT OF THE STARTING ADDRESS FOR MATRIX (SCALED 2)
# LEAVES CDU ANGLES SCALED 2PI IN V(MPAC)
# COS(MGA) WILL BE LEFT IN S1 (SCALED 1)
#
# THE DIRECTION COSINE MATRIX RELATING S/C AXES TO STABLE MEMBER AXES CAN BE WRITTEN AS***
#
#	C =COS(THETA)COS(PSI)
#	 0
#	C =-COS(THETA)SIN(PSI)COS(PHI)+SI (THETA)SIN(PHI)
#	 1
#	C =COS(THETA)SIN(PSI)SIN(PHI) + S N(THETA)COS(PHI)
#	 2
#	C =SIN(PSI)
#	 3
#	C =COS(PSI)COS(PHI)
#	 4
#	C =-COS(PSI)SIN(PHI)
#	 5
#	C =-SIN(THETA)COS(PSI)
#	 6
#	C =SIN(THETA)SIN(PSI)COS(PHI)+COS THETA)SIN(PHI)
#	 7
# Page 410
#	C =-SIN(THETA)SIN(PSI)SIN(PHI)+COS(THETA)COS(PHI)
#	 8
#
#	WHERE	PHI = OGA
#		THETA = IGA
#		PSI = MGA

DCMTOCDU	DLOAD*	ARCSIN
			6,1
		PUSH	COS		# PD +0		PSI
		SL1	BOVB
			SIGNMPAC
		STORE	S1
		DLOAD*	DCOMP
			12D,1
		DDV	ARCSIN
			S1
		PDDL*	BPL		# PD +2		THETA
			0,1		# MUST CHECK THE SIGN OF COS(THETA)
			OKTHETA		# TO DETERMINE THE PROPER QUADRANT
		DLOAD	DCOMP
		BPL	DAD
			SUHALFA
			DPHALF
		GOTO
			CALCPHI
SUHALFA		DSU
			DPHALF
CALCPHI		PUSH
OKTHETA		DLOAD*	DCOMP
			10D,1
		DDV	ARCSIN
			S1
		PDDL*	BPL		# PUSH DOWN PHI
			8D,1
			OKPHI
		DLOAD	DCOMP		# PUSH UP PHI
		BPL	DAD
			SUHALFAP
			DPHALF
		GOTO
			VECOFANG
SUHALFAP	DSU	GOTO
			DPHALF
			VECOFANG
OKPHI		DLOAD			# PUSH UP PHI
VECOFANG	VDEF	RVQ

# Page 411
# ROUTINE FOR TERMINATING AUTOMATIC MANEUVERS

NOGOM2		INHINT			# THIS LOCATION ACCESSED BY A BZMF NOGO -2
		TC	BANKCALL
		CADR	ZEROEROR

NOGO		INHINT
		TC	STOPRATE

					# TERMINATE MANEUVER
		CAF	TWO		# NOTE - ALL RETURNS ARE NOW MADE VIA
		TC	WAITLIST	# GOODEND
		EBANK=	BCDU
		2CADR	ENDMANU

		TCF	ENDOFJOB



================================================
FILE: Comanche055/ASSEMBLY_AND_OPERATION_INFORMATION.agc
================================================
# Copyright:	Public domain.
# Filename:	ASSEMBLY_AND_OPERATION_INFORMATION.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Mod history:	2009-05-05 RSB	Adapted from the Colossus249/ file of the
#				same name, using Comanche055 page images.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#	Assemble revision 055 of AGC program Comanche by NASA
#	2021113-051.  10:28 APR. 1, 1969
#
#	This AGC program shall also be referred to as
#			Colossus 2A

# Page 2

# ASSEMBLY AND OPERATIONS INFORMATION
# TAGS FOR RELATIVE SETLOC AND BLANK BANK CARDS
# SUBROUTINE CALLS
#
#
#	COMERASE
#		ERASABLE ASSIGNMENTS
#	COMAID
#		INTERRUPT LEAD INS
#		T4RUPT PROGRAM
#		DOWNLINK LISTS
#		FRESH START AND RESTART
#		RESTART TABLES
#		SXTMARK
#		EXTENDED VERBS
#		PINBALL NOUN TABLES
#		CSM GEOMETRY
#		IMU COMPENSATION PACKAGE
#		PINBALL GAME  BUTTONS AND LIGHTS
#		R60,R62
#		ANGLFIND
#		GIMBAL LOCK AVOIDANCE
#		KALCMANU STEERING
#		SYSTEM TEST STANDARD LEAD INS
#		IMU CALIBRATION AND ALIGNMENT
#	COMEKISS
#		GROUND TRACKING DETERMINATION PROGRAM - P21
#		P34-P35, P74-P75
#		R31
#		P76
#		R30
#		STABLE ORBIT - P38-P39
#	TROUBLE
#		P11
#		TPI SEARCH
#		P20-P25
#		P30,P37
#		P32-P33, P72-P73
#		P40-P47
#		P51-P53
#		LUNAR AND SOLAR EPHEMERIDES SUBROUTINES
#		P61-P67
#		SERVICER207
#		ENTRY LEXICON
#		REENTRY CONTROL
#		CM BODY ATTITUDE
#		P37,P70
#		S-BAND ANTENNA FOR CM
#	TVCDAPS
#		TVCINITIALIZE
# Page 3
#		TVCEXECUTIVE
#		TVCMASSPROP
#		TVCRESTARTS
#		TVCDAPS
#		TVCSTROKETEST
#		TVCROLLDAP
#		MYSUBS
#		RCS-CSM DIGITAL AUTOPILOT
#		AUTOMATIC MANEUVERS
#		RCS-CSM DAP EXECUTIVE PROGRAMS
#		JET SELECTION LOGIC
#		CM ENTRY DIGITAL AUTOPILOT
#	CHIEFTAN
#		DOWN-TELEMETRY PROGRAM
#		INTER-BANK COMMUNICATION
#		INTERPRETER
#		FIXED-FIXED CONSTANT POOL
#		INTERPRETIVE CONSTANTS
#		SINGLE PRECISION SUBROUTINES
#		EXECUTIVE
#		WAITLIST
#		LATITUDE LONGITUDE SUBROUTINES
#		PLANETARY INERTIAL ORIENTATION
#		MEASUREMENT INCORPORATION
#		CONIC SUBROUTINES
#		INTEGRATION INITIALIZATION
#		ORBITAL INTEGRATION
#		INFLIGHT ALIGNMENT ROUTINES
#		POWERED FLIGHT SUBROUTINES
#		TIME OF FREE FALL
#		STAR TABLES
#		AGC BLOCK TWO SELF-CHECK
#		PHASE TABLE MAINTENANCE
#		RESTARTS ROUTINE
#		IMU MODE SWITCHING ROUTINES
#		KEYRUPT, UPRUPT
#		DISPLAY INTERFACE ROUTINES
#		SERVICE ROUTINES
#		ALARM AND ABORT
#		UPDATE PROGRAM
#		RTB OP CODES
#
#
#       SYMBOL TABLE LISTING
#       UNREFERENCED SYMBOL LISTING
#       ERASABLE & EQUALS CROSS-REFERENCE TABLE
#       SUMMARY OF SYMBOL TABLE LISTINGS
#       MEMORY TYPE & AVAILABILITY DISPLAY
#       COUNT TABLE
#       PARAGRAPHS GENERATED FOR THIS ASSEMBLY
# Page 4
#       OCTAL LISTING
#       OCCUPIED LOCATIONS TABLE
#       SUBROS CALLED & PROGRAM STATUS

# Page 5
# VERB LIST FOR CSM

# REGULAR VERBS

# 00 NOT IN USE
# 01 DISPLAY OCTAL COMP 1 IN R1
# 02 DISPLAY OCTAL COMP 2 IN R1
# 03 DISPLAY OCTAL COMP 3 IN R1
# 04 DISPLAY OCTAL COMP 1,2 IN R1,R2
# 05 DISPLAY OCTAL COMP 1,2,3 IN R1,R2,R3
# 06 DISPLAY DECIMAL IN R1 OR R1,R2 OR R1,R2,R3
# 07 DISPLAY DP DECIMAL IN R1,R2 (TEST ONLY)
# 08
# 09
# 10
# 11 MONITOR OCTAL COMP 1 IN R1
# 12 MONITOR OCTAL COMP 2 IN R1
# 13 MONITOR OCTAL COMP 3 IN R1
# 14 MONITOR OCTAL COMP 1,2, IN R1,R2
# 15 MONITOR OCTAL COMP 1,2,3 IN R1,R2,R3
# 16 MONITOR DECIMAL IN R1 OR R1,R2 OR R1,R2,R3
# 17 MONITOR DP DECIMAL IN R1,R2 (TEST ONLY)
# 18
# 19
# 20
# 21 LOAD COMPONENT 1 INTO R1
# 22 LOAD COMPONENT 2 INTO R2
# 23 LOAD COMPONENT 3 INTO R3
# 24 LOAD COMPONENT 1,2 INTO R1,R2
# 25 LOAD COMPONENT 1,2,3 INTO R1,R2,R3
# 26
# 27 DISPLAY FIXED MEMORY
# 28
# 29
# 30 REQUEST EXECUTIVE
# 31 REQUEST WAITLIST
# 32 RECYCLE PROGRAM
# 33 PROCEED WITHOUT DSKY INPUTS
# 34 TERMINATE FUNCTION
# 35 TEST LIGHTS
# 36 REQUEST FRESH START
# 37 CHANGE PROGRAM (MAJOR MODE)
# 38
# 39

# Page 6

# EXTENDED VERBS

# 40 ZERO CDU-S
# 41 COARSE ALIGN CDU-S
# 42 FINE ALIGN IMU-S
# 43 LOAD IMU ATT ERROR METERS
# 44 SET   SURFACE FLAG
# 45 RESET SURFACE FLAG
# 46 ESTABLISH G+C CONTROL
# 47 MOVE LM STATE VECTOR INTO CM STATE VECTOR.
# 48 REQUEST DAP DATA LOAD ROUTINE (R03)
# 49 REQUEST CREW DEFINED MANEUVER ROUTINE (R62)
# 50 PLEASE PERFORM
# 51 PLEASE MARK
# 52 MARK ON OFFSET LANDING SITE
# 53 PLEASE PERFORM ALTERNATE LOS MARK
# 54 REQUEST RENDEZVOUS BACKUP SIGHTING MARK ROUTINE (R23)
# 55 INCREMENT AGC TIME (DECIMAL)
# 56 TERMINATE TRACKING (P20 + P25)
# 57 REQUEST RENDEZVOUS SIGHTING MARK ROUTINE (R21)
# 58 RESET STICK FLAG
# 59 PLEASE CALIBRATE
# 60 SET ASTRONAUT TOTAL ATTITUDE (N17) TO PRESENT ATTITUDE
# 61 DISPLAY DAP ATTITUDE ERROR
# 62 DISPLAY TOTAL ATTITUDE ERROR (WRT N22 (THETAD))
# 63 DISPLAY TOTAL ASTRONAUT ATTITUDE ERROR (WRT N17 (CPHIX))
# 64 REQUEST S-BAND ANTENNA ROUTINE
# 65 OPTICAL VERIFICATION OF PRELAUNCH ALIGNMENT
# 66 VEHICLES ARE ATTACHED.  MOVE THIS VEHICLE STATE TO OTHER VEHICLE.
# 67
# 68 CSM STROKE TEST ON
# 69 CAUSE RESTART
# 70 UPDATE LIFTOFF TIME
# 71 UNIVERSAL UPDATE-BLOCK  ADR
# 72 UNIVERSAL UPDATE-SINGLE ADR
# 73 UPDATE AGC TIME (OCTAL)
# 74 INITIALIZE ERASABLE DUMP VIA DOWNLINK
# 75 BACKUP LIFTOFF
# 76 SET PREFERRED ATTITUDE FLAG
# 77 RESET PREFERRED ATTITUDE FLAG
# 78 UPDATE PRELAUNCH AZIMUTH
# 79 REQUEST LUNAR LANDMARK SELECTION ROUTINE (R35)
# 80 UPDATE LEM STATE VECTOR
# 81 UPDATE CSM STATE VECTOR
# 82 REQUEST ORBIT PARAM DISPLAY (R30)
# 83 REQUEST REND  PARAM DISPLAY (R31)
# 84 START TARGET DELTA V (R32)
# 85 REQUEST RENDEZVOUS PARAMETER DISPLAY NO. 2 (R34)
# 86 REJECT RENDEZVOUS BACKUP SIGHTING MARK
# 87 SET VHF RANGE FLAG
# Page 7
# 88 RESET VHF RANGE FLAG
# 89 REQUEST RENDEZVOUS FINAL ATTITUDE ROUTINE (R63)
# 90 REQUEST RENDEZVOUS OUT OF PLANE DISPLAY ROUTINE (R36)
# 91 DISPLAY BANK SUM
# 92 OPERATE IMU PERFORMANCE TEST (P07)
# 93 ENABLE W MATRIX INITIALIZATION
# 94 PERFORM CYSLUNAR ATTITUDE MANEUVER (P23)
# 95 NO UPDATE OF EITHER STATE VECTOR (P20 OR P22)
# 96 TERMINATE INTEGRATION AND GO TO P00
# 97 PERFORM ENGINE FAIL PROCEDURE
# 98 ENABLE TRANSLUNAR INJECT
# 99 PLEASE ENABLE ENGINE

# Page 8
# IN THE FOLLOWING NOUN LIST THE :NO LOAD: RESTRICTION MEANS THE NOUN
# CONTAINS AT LEAST ONE COMPONENT WHICH CANNOT BE LOADED, I.E. OF
# SCALE TYPE L (MIN/SEC) OR PP (2 INTEGERS).
# IN THIS CASE VERBS 24 AND 25 ARE NOT ALLOWED, BUT VERBS 21, 22 OR 23
# MAY BE USED TO LOAD ANY OF THE NOUN:S COMPONENTS WHICH ARE NOT OF THE
# ABOVE SCALE TYPES.
# THE :DEC ONLY: RESTRICTION MEANS ONLY DECIMAL OPERATION IS ALLOWED ON
# EVERY COMPONENT IN THE NOUN. (NOTE THAT :NO LOAD: IMPLIES :DEC ONLY:.)

# NORMAL NOUNS				   COMPONENTS	SCALE AND DECIMAL POINT		RESTRICTIONS

# 00	NOT IN USE
# 01	SPECIFY MACHINE ADDRESS (FRACTIONAL)	3COMP	.XXXXX FOR EACH
# 02	SPECIFY MACHINE ADDRESS (WHOLE)		3COMP	XXXXX. FOR EACH
# 03	SPECIFY MACHINE ADDRESS (DEGREES)	3COMP	XXX.XX DEG FOR EACH
# 04	SPARE
# 05	ANGULAR ERROR/DIFFERENCE		1COMP	XXX.XX DEG
# 06	OPTION CODE				2COMP	OCTAL ONLY FOR EACH
# LOADING NOUN 07 WILL SET OR RESET SELECTED BITS IN ANY ERASABLE REGISTER
# 07	ECADR OF WORD TO BE MODIFIED		3COMP	OCTAL ONLY FOR EACH
#	ONES FOR BITS TO BE MODIFIED
#	1 TO SET OR 0 TO RESET SELECTED BITS
# 08	ALARM DATA				3COMP	OCTAL ONLY FOR EACH
# 09	ALARM CODES				3COMP	OCTAL ONLY FOR EACH
# 10	CHANNEL TO BE SPECIFIED			1COMP	OCTAL ONLY
# 11	TIG OF CSI				3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 12	OPTION CODE				2COMP	OCTAL ONLY FOR EACH
#	 (USED BY EXTENDED VERBS ONLY)
# 13	TIG OF CDH				3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 14	SPARE
# 15	INCREMENT MACHINE ADDRESS		1COMP	OCTAL ONLY
# 16	TIME OF EVENT				3COMP	00XXX. HRS		DEC ONLY
#	 (USED BY EXTENDED VERBS ONLY)			000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 17	ASTRONAUT TOTAL ATTITUDE		3COMP	XXX.XX DEG FOR EACH
# 18	AUTO MANEUVER BALL ANGLES		3COMP	XXX.XX DEG FOR EACH
# 19	BYPASS ATTITUDE TRIM MANEUVER		3COMP	XXX.XX DEG FOR EACH
# 20	ICDU ANGLES				3COMP	XXX.XX DEG FOR EACH
# 21	PIPAS					3COMP	XXXXX. PULSES FOR EACH
# 22	NEW ICDU ANGLES				3COMP	XXX.XX DEG FOR EACH
# 23	SPARE
# 24	DELTA TIME FOR AGC CLOCK		3COMP	00XXX. HRS.		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 25	CHECKLIST				3COMP	XXXXX. FOR EACH
#	 (USED WITH PLEASE PERFORM ONLY)
# Page 9
# 26	PRIORITY/DELAY, ADRES, BBCON		3COMP	OCTAL ONLY FOR EACH
# 27	SELF TEST ON/OFF SWITCH			1COMP	XXXXX.
# 28	SPARE
# 29	XSM LAUNCH AZIMUTH			1COMP	XXX.XX DEG		DEC ONLY
# Page 10
# 30	TARGET CODES				3COMP	XXXXX. FOR EACH
# 31	TIME OF LANDING SITE			3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
# 							0XX.XX SEC
# 32	TIME FROM PERIGEE			3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 33	TIME OF IGNITION			3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 34	TIME OF EVENT				3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 35	TIME FROM EVENT				3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 36	TIME OF AGC CLOCK			3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 37	TIG OF TPI				3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 38	TIME OF STATE VECTOR			3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC
# 39	DELTA TIME FOR TRANSFER			3COMP	00XXX. HRS		DEC ONLY
#							000XX. MIN		MUST LOAD 3 COMPS
#							0XX.XX SEC

# Page 11

# MIXED NOUNS				   COMPONENTS	SCALE AND DECIMAL POINT	RESTRICTIONS
#
# 40	TIME FROM IGNITION/CUTOFF		3COMP	XXBXX  MIN/SEC		NO LOAD, DEC ONLY
#	VG,						XXXX.X FT/SEC
#	DELTA V (ACCUMULATED)				XXXX.X FT/SEC
# 41	TARGET	AZIMUTH,			2COMP	XXX.XX DEG
#		ELEVATION				XX.XXX DEG
# 42	APOGEE,					3COMP	XXXX.X NAUT MI		DEC ONLY
#	PERIGEE,					XXXX.X NAUT MI
#	DELTA V (REQUIRED)				XXXX.X FT/SEC
# 43	LATITUDE,				3COMP	XXX.XX DEG		DEC ONLY
#	LONGITUDE,					XXX.XX DEG
#	ALTITUDE					XXXX.X NAUT MI
# 44	APOGEE,					3COMP	XXXX.X NAUT MI		NO LOAD, DEC ONLY
#	PERIGEE,					XXXX.X NAUT MI
#	TFF						XXBXX  MIN/SEC
# 45	MARKS (VHF - OPTICS)			3COMP	+XXBXX			NO LOAD, DEC ONLY
#	TFI OF NEXT BURN				XXBXX  MIN/SEC
#	MGA						XXX.XX DEG
# 46	AUTOPILOT CONFIGURATION			2COMP	OCTAL ONLY FOR EACH
# 47	THIS VEHICLE WEIGHT			2COMP	XXXXX. LBS		DEC ONLY
#	OTHER VEHICLE WEIGHT				XXXXX. LBS
# 48	PITCH TRIM				2COMP	XXX.XX DEG		DEC ONLY
#	YAW TRIM,					XXX.XX   DEG
# 49	DELTA R					3COMP	XXXX.X NAUT MI		DEC ONLY
#	DELTA V						XXXX.X FT/SEC
#	VHF OR OPTICS CODE				XXXXX.
# 50	SPLASH ERROR,				3COMP	XXXX.X NAUT MI		NO LOAD, DEC ONLY
#	PERIGEE,					XXXX.X NAUT MI
#	TFF						XXBXX  MIN/SEC
# 51	S-BAND ANTENNA ANGLES PITCH		2COMP	XXX.XX DEG		DEC ONLY
#			       YAW			XXX.XX DEG
# 52	CENTRAL ANGLE OF ACTIVE VEHICLE		1COMP	XXX.XX DEG
# 53	RANGE,					3COMP	XXX.XX NAUT MI		DEC ONLY
#	RANGE RATE,					XXXX.X FT/SEC
#	PHI						XXX.XX DEG
# 54	RANGE,					3COMP	XXX.XX NAUT MI		DEC ONLY
#	RANGE RATE,					XXXX.X FT/SEC
#	THETA						XXX.XX DEG
# 55	PERIGEE CODE				3COMP	XXXXX.			DEC ONLY
#	ELEVATION ANGLE					XXX.XX DEG
#	CENTRAL ANGLE OF PASSIVE VEHICLE		XXX.XX DEG
# 56	REENTRY ANGLE,				2COMP	XXX.XX DEG		DEC ONLY
#	DELTA V						XXXXX. FT/SEC
# 57	DELTA R					1COMP	XXXX.X NAUT MI		DEC ONLY
# 58	PERIGEE ALT (POST TPI)			3COMP	XXXX.X NAUT MI		DEC ONLY
#	DELTA V TPI					XXXX.X FT/SEC
#	DELTA V TPF					XXXX.X FT/SEC
# 59	DELTA VELOCITY LOS			3COMP	XXXX.X FT/SEC FOR EA.	DEC ONLY
# 60	GMAX,					3COMP	XXX.XX G		DEC ONLY
# Page 12
#	VPRED,						XXXXX. FT/SEC
#	GAMMA EI					XXX.XX DEG
# 61	IMPACT LATITUDE,			3COMP	XXX.XX DEG		DEC ONLY
#	IMPACT LONGITUDE,				XXX.XX DEG
#	HEADS UP/DOWN					+/- 00001
# 62	INERTIAL VEL MAG (VI),			3COMP	XXXXX. FT/SEC		DEC ONLY
#	ALT RATE CHANGE (HDOT),				XXXXX. FT/SEC
#	ALT ABOVE PAD RADIUS (H)			XXXX.X NAUT MI
# 63	RANGE  297,431 TO SPLASH (RTGO),	3COMP	XXXX.X NAUT MI		NO LOAD, DEC ONLY
#	PREDICTED INERT VEL (VIO),			XXXXX. FT/SEC
#	TIME FROM 297,431 (TFE),			XXBXX  MIN/SEC
# 64	DRAG ACCELERATION,			3COMP	XXX.XX G		DEC ONLY
#	INERTIAL VELOCITY (VI),				XXXXX. FT/SEC
#	RANGE TO SPLASH					XXXX.X NAUT MI
# 65	SAMPLED AGC TIME			3COMP	00XXX. HRS		DEC ONLY
#	 (FETCHED IN INTERRUPT)				000XX. MIN              MUST LOAD 3 COMPS
#							0XX.XX SEC
# 66	COMMAND BANK ANGLE (BETA),		3COMP	XXX.XX DEG		DEC ONLY
#	CROSS RANGE ERROR,				XXXX.X NAUT MI
#	DOWN RANGE ERROR				XXXX.X NAUT MI
# 67	RANGE TO TARGET,			3COMP	XXXX.X NAUT MI		DEC ONLY
#	PRESENT LATITUDE,				XXX.XX DEG
#	PRESENT LONGITUDE				XXX.XX DEG
# 68	COMMAND BANK ANGLE (BETA),		3COMP	XXX.XX DEG		DEC ONLY
#	INERTIAL VELOCITY (VI),				XXXXX. FT/SEC
#      ALT RATE CHANGE (RDOT)				XXXXX. FT/SEC
# 69   BETA					3COMP	XXX.XX DEG		DEC ONLY
#      DL						XXX.XX G
#      VL						XXXXX. FT/SEC
# 70	STAR CODE,				3COMP	OCTAL ONLY
#	LANDMARK DATA,					OCTAL ONLY
#	HORIZON DATA					OCTAL ONLY
# 71	STAR CODE				3COMP	OCTAL ONLY
#	LANDMARK DATA					OCTAL ONLY
#	HORIZON DATA					OCTAL ONLY
# 72	DELT ANG				3COMP	XXX.XX DEG		DEC ONLY
# 73	ALTITUDE				3COMP	XXXXXB. NAUT MI
#	VELOCITY					XXXXX.  FT/SEC
#	FLIGHT PATH ANGLE				XXX.XX  DEG
# 74	COMMAND BANK ANGLE (BETA)		3COMP	XXX.XX DEG
#	INERTIAL VELOCITY (VI)				XXXXX. FT/SEC
#	DRAG ACCELERATION				XXX.XX G
# 75	DELTA ALTITUDE CDH			3COMP	XXXX.X NAUT MI		NO LOAD, DEC ONLY
#	DELTA TIME (CDH-CSI OR TPI-CDH)			XXBXX  MIN/SEC
#	DELTA TIME (TPI-CDH OR TPI-NOMTPI)		XXBXX  MIN/SEC
# 76	SPARE
# 77	SPARE
# 78	SPARE
# 79	SPARE
# 80	TIME FROM IGNITION/CUTOFF		3COMP	XXBXX  MIN/SEC		NO LOAD, DEC ONLY
# Page 13
#	VG						XXXXX. FT/SEC
#	DELTA V (ACCUMULATED)				XXXXX. FT/SEC
# 81	DELTA V (LV)				3COMP	XXXX.X FT/SEC FOR EACH	DEC ONLY
# 82	DELTA V (LV)				3COMP	XXXX.X FT/SEC FOR EACH	DEC ONLY
# 83	DELTA V (BODY)				3COMP	XXXX.X FT/SEC FOR EACH	DEC ONLY
# 84	DELTA V (OTHER VEHICLE)			3COMP	XXXX.X FT/SEC FOR EACH	DEC ONLY
# 85	VG (BODY)				3COMP	XXXX.X FT/SEC FOR EACH	DEC ONLY
# 86	DELTA V(LV)				3COMP	XXXXX. FT/SEC FOR EACH	DEC ONLY
# 87	MARK DATA	SHAFT,			2COMP	XXX.XX DEG
#			TRUNION				XX.XXX DEG
# 88	HALF UNIT SUN OR PLANET VECTOR		3COMP	.XXXXX FOR EACH		DEC ONLY
# 89	LANDMARK	LATITUDE,		3COMP	XX.XXX DEG		DEC ONLY
#			LONGITUDE/2,			XX.XXX DEG
#			ALTITUDE			XXX.XX NAUT MI
# 90	Y					3COMP	XXX.XX NM		DEC ONLY
#	Y DOT						XXXX.X FPS
#	PSI						XXX.XX DEG
# 91	OCDU ANGLES	SHAFT,			2COMP	XXX.XX DEG
#			TRUNION				XX.XXX DEG
# 92	NEW OPTICS ANGLES	SHAFT,		2COMP	XXX.XX DEG
#				TRUNION			XX.XXX DEG
# 93	DELTA GYRO ANGLES			3COMP	XX.XXX DEG FOR EACH
# 94	NEW OPTICS ANGLES	SHAFT		2COMP	XXX.XX DEG
#				TRUNNION		XX.XXX DEG
# 95	PREFERRED ATTITUDE ICDU ANGLES		3COMP	XXX.XX FOR FOR EACH
# 96	+X-AXIS ATTITUDE ICDU ANGLES		3COMP	XXX.XX DEG FOR EACH
# 97	SYSTEM TEST INPUTS			3COMP	XXXXX. FOR EACH
# 98	SYSTEM TEST RESULTS AND INPUTS		3COMP	XXXXX.
#							.XXXXX
#							XXXXX.
# 99	RMS IN POSITION				3COMP	XXXXX.FT	        DEC ONLY
#	RMS IN VELOCITY					XXXX.X FT/SEC
#	RMS OPTION					XXXXX.

# Page 14

# REGISTERS AND SCALING  FOR NORMAL NOUNS
#
# NOUN	        REGISTER	SCALE TYPE
#
# 00	NOT IN USE
# 01	SPECIFY ADDRESS		B
# 02	SPECIFY ADDRESS		C
# 03	SPECIFY ADDRESS		D
# 04	SPARE
# 05		DSPTEM1		H
# 06		OPTION1		A
# 07		XREG		A
# 08		ALMCADR		A
# 09		FAILREG		A
# 10	SPECIFY CHANNEL		A
# 11		TCSI		K
# 12		OPTIONX		A
# 13		TCDH		K
# 14	SPARE
# 15	INCREMENT ADDRESS	A
# 16		DSPTEMX		C
# 17		CPHIX		D
# 18		THETAD		D
# 19		THETAD		D
# 20		CDUX		D
# 21		PIPAX		C
# 22		THETAD		D
# 23	SPARE
# 24		DSPTEM2 +1	K
# 25		DSPTEM1		C
# 26		DSPTEM1		A
# 27		SMODE		C
# 28	SPARE
# 29		DSPTEM1		D
# 30		DSPTEM1		C
# 31		DSPTEM1		K
# 32		-TPER		K
# 33		TIG		K
# 34		DSPTEM1		K
# 35		TTOGO		K
# 36		TIME2		K
# 37		TTPI		K
# 38		TET		K
# 39		T3TOT4		K

# Page 15

# REGISTERS AND SCALING FOR MIXED NOUNS
#
# NOUN	COMP	REGISTER	SCALE TYPE
#
# 40	1	TTOGO		L
#	2	VGDISP		S
#	3	DVTOTAL		S
# 41	1	DSPTEM1		D
#	2	DSPTEM1 +1	E
# 42	1	HAPO		Q
#	2	HPER		Q
#	3	VGDISP		S
# 43	1	LAT		H
#	2	LONG		H
#	3	ALT		Q
# 44	1	HAPOX		Q
#	2	HPERX		Q
#	3	TFF		L
# 45	1	VHFCNT		PP
#	2	TTOGO		L
#	3	+MGA		H
# 46	1	DAPDATR1	A
#	2	DAPDATR2	A
# 47	1	CSMMASS		KK
#	2	LEMMASS		KK
# 48	1	PACTOFF		FF
#	2	YACTOFF		FF
# 49	1	N49DISP		Q
#	2	N49DISP +2	S
#	3	N49DISP +4	C
# 50	1	RSP-RREC	LL
#	2	HPERX		Q
#	3	TFF		L
# 51	1	RHOSB		H
#	2	GAMMASB		H
# 52	1	ACTCENT		H
# 53	1	RANGE		JJ
#	2	RRATE		S
# 	3	RTHETA		H
# 54	1	RANGE		JJ
#	2	RRATE		S
# 	3	RTHETA		H
# 55	1	NN1		C
# 	2	ELEV		H
#	3	CENTANG		H
# 56	1	RTEGAM2D	H
#	2	RTEDVD		P
# 57	1	DELTAR		Q
# 58	1	POSTTPI		Q
#	2	DELVTPI		S
# Page 16
#	3	DELVTPF		S
# 59	1	DVLOS		S
#	2	DVLOS +2	S
#	3	DVLOS +4	S
# 60	1	GMAX		T
#	2	VPRED		P
#	3	GAMMAEI		H
# 61	1	LAT(SPL)	H
#	2	LNG(SPL)	H
#	3	HEADSUP		C
# 62	1	VMAGI		P
#	2	HDOT		P
#	3	ALTI		Q
# 63	1	RTGO		LL
#	2	VIO		P
#	3	TTE		L
# 64	1	D		MM
#	2	VMAGI		P
#	3	RTGON64		LL
# 65	1	SAMPTIME	K
#	2	SAMPTIME	K
#	3	SAMPTIME	K
# 66	1	ROLLC		H
#	2	XRNGERR		VV
#	3	DNRNGERR	LL
# 67	1	RTGON67		LL
#	2	LAT		H
#	3	LONG		H
# 68	1	ROLLC		H
#	2	VMAGI		P
#	3	RDOT		UU
# 69	1	ROLLC		H
#	2	Q7		MM
#	3	VL		UU
# 70	1	STARCODE	A
#	2	LANDMARK	A
#	3	HORIZON		A
# 71	1	STARCODE	A
#	2	LANDMARK	A
#	3	HORIZON		A
# 72	1	THETZERO	H
# 73	1	P21ALT		Q (MEMORY/100 TO DISPLAY TENS N.M.)
#	2	P21VEL		P
#	3	P21GAM		H
# 74	1	ROLLC		H
#	2	VMAGI		P
#	3	D		MM
# 75	1	DIFFALT		Q
#	2	T1TOT2		L
#	3	T2TOT3		L
# Page 17
# 76	SPARE
# 77	SPARE
# 78	SPARE
# 79	SPARE
# 80	1	TTOGO		L
#	2	VGDISP		P
#	3	DVTOTAL		P
# 81	1	DELVLVC		S
#	2	DELVLVC +2	S
#	3	DELVLVC +4	S
# 82	1	DELVLVC		S
#	2	DELVLVC +2	S
#	3	DELVLVC +4	S
# 83	1	DELVIMU		S
#	2	DELVIMU +2	S
#	3	DELVIMU +4	S
# 84	1	DELVOV		S
#	2	DELVOV +2	S
#	3	DELVOV +4	S
# 85	1	VGBODY		S
#	2	VGBODY +2	S
#	3	VGBODY +4	S
# 86	1	DELVLVC		P
#	2	DELVLVC +2	P
#	3	DELVLVC +4	P
# 87	1	MRKBUF1 +3	D
#	2	MRKBUF1 +5	J
# 88	1	STARSAV3	ZZ
#	2	STARSAV3 +2	ZZ
#	3	STARSAV3 +4	ZZ
# 89	1	LANDLAT		G
#	2	LANDLONG	G
#	3	LANDALT		JJ
# 90	1	RANGE		JJ
#	2	RRATE		S
#	3	RTHETA		H
# 91	1	CDUS		D
#	2	CDUT		J
# 92	1	SAC		D
#	2	PAC		J
# 93	1	OGC		G
#	2	OGC +2		G
#	3	OGC +4		G
# 94	1	MRKBUF1 +3	D
#	2	MRKBUF1 +5	J
# 95	1	PRAXIS		D
#	2	PRAXIS +1	D
#	3	PRAXIS +2	D
# 96	1	CPHIX		D
#	2	CPHIX +1	D
# Page 18
#	3	CPHIX +2	D
# 97	1	DSPTEM1		C
#	2	DSPTEM1 +1	C
# 	3	DSPTEM1 +2	C
# 98	1	DSPTEM2		C
#	2	DSPTEM2 +1	B
#	3	DSPTEM2 +2	C
# 99	1	WWPOS		XX
#	2	WWVEL		YY
#	3	WWOPT		C

# Page 19

# NOUN SCALES AND FORMATS
#
# -SCALE TYPE-				 PRECISION
# UNITS			DECIMAL FORMAT		--	AGC FORMAT
# ------------		--------------		--	----------
#
# -A-
# OCTAL			XXXXX			SP	OCTAL
#
# -B-								 -14
# FRACTIONAL		.XXXXX			SP	BIT 1 = 2    UNITS
#			(MAX .99996)
#
# -C-
# WHOLE			XXXXX.			SP	BIT 1 = 1 UNIT
#			(MAX 16383.)
#
# -D-								     15
# CDU DEGREES		XXX.XX DEGREES		SP	BIT 1 = 360/2   DEGREES
#			(MAX 359.99)			(USES 15 BITS FOR MAGNI-
#							 TUDE AND 2-S COMP.)
#
# -E-								    14
# ELEVATION DEGREES	XX.XXX DEGREES		SP	BIT 1 = 90/2   DEGREES
#			(MAX 89.999)
#
# -F-								     14
# DEGREES (180)		XXX.XX DEGREES		SP	BIT 1 = 180/2   DEGREES
#			(MAX 179.99)
#
# -G-
# DP DEGREES(90)	XX.XXX DEGREES		DP	BIT 1 OF LOW REGISTER =
#							     28
#							360/2   DEGREES
#
# -H-
# DP DEGREES (360)	XXX.XX DEGREES		DP	BIT 1 OF LOW REGISTER =
#			        			     28
#			(MAX 359.99)			360/2   DEGREES
#
# -J-								    15
# Y OPTICS DEGREES	XX.XXX DEGREES		SP	BIT 1 = 90/2   DEGREES
#			(BIAS OF 19.775			(USES 15 BITS FOR MAGNI-
#			DEGREES ADDED FOR		TUDE AND 2-S COMP.)
#			DISPLAY, SUBTRACTED
#			FOR LOAD.)
#			NOTE: NEGATIVE NUM-
#			BERS CANNOT BE
#			LOADED.
#
# -K-
# Page 20
# TIME (HR, MIN, SEC)	00XXX. HR		DP	BIT 1 OF LOW REGISTER =
#			000XX. MIN			  -2
#			0XX.XX SEC			10   SEC
#			(DECIMAL ONLY.
#			MAX MIN COMP=59
#			MAX SEC COMP=59.99
#			MAX CAPACITY=745 HRS
#				      39 MINS
#				      14.55 SECS.
#			WHEN LOADING, ALL 3
#			COMPONENTS MUST BE
#			SUPPLIED.)
#
# -L-
# TIME (MIN/SEC)	XXBXX MIN/SEC		DP	BIT 1 OF LOW REGISTER =
#			(B IS A BLANK			  -2
#			POSITION, DECIMAL		10   SEC
#			ONLY, DISPLAY OR
#			MONITOR ONLY. CANNOT
#			BE LOADED.
#			MAX MIN COMP=59
#			MAX SEC COMP=59
#			VALUES GREATER THAN
#			59 MIN 59 SEC
#			ARE DISPLAYED AS
#			59 MIN 59 SEC.)
#
# -M-								  -2
# TIME (SEC)		XXX.XX SEC		SP	BIT 1 = 10   SEC
#			(MAX 163.83)
#
# -N-
# TIME(SEC) DP		XXX.XX SEC		DP	BIT 1 OF LOW REGISTER =
#							  -2
#							10   SEC
#
# -P-
# VELOCITY 2		XXXXX. FEET/SEC		DP	BIT 1 OF HIGH REGISTER =
#			(MAX 41994.)			 -7
#							2   METERS/CENTI-SEC
#
# -Q-
# POSITION 4		XXXX.X NAUTICAL MILES	DP	BIT 1 OF LOW REGISTER =
#							2 METERS
#
# -S-
# VELOCITY 3		XXXX.X FT/SEC		DP	BIT 1 OF HIGH REGISTER =
#							 -7
#							2   METERS/CENTI-SEC
# Page 21
# -T-								  -2
# G			XXX.XX G		SP	BIT 1 = 10   G
#			(MAX 163.83)
#
# -FF-
# TRIM DEGREES		XXX.XX DEG.		SP	LOW ORDER BIT = 85.41 SEC
#			(MAX 388.69)			OF ARC
#
# -GG-
# INERTIA		XXXXXBB. SLUG FT SQ	SP	FRACTIONAL PART OF
#			(MAX 07733BB.)			 20     2
#							2   KG M
#
# -II-									    20
# THRUST MOMENT		XXXXXBB. FT LBS		SP	FRACTIONAL PART OF 2
#			(MAX 07733BB.)			NEWTON METER
#
# -JJ-
# POSITION5		XXX.XX NAUT MI		DP	BIT 1 OF LOW REGISTER =
#							2 METERS
#
# -KK-									    16
# WEIGHT2		XXXXX. LBS		SP	FRACTIONAL PART OF 2   KG
#
# -LL-
# POSITION6		XXXX.X NAUT MI		DP	BIT 1 OF LOW REG =
#									    -28
#							(6,373,338)(2(PI))X2
#							-----------------------
#								 1852
#							NAUT. MI.
#
# -MM-
# DRAG ACCELERATION	XXX.XX G		DP	BIT 1 OF LOW REGISTER =
#			MAX (024.99)			    -28
#							25X2    G
#
# -PP-
# 2 INTEGERS		+XXBYY			DP	BIT 1 OF HIGH REGISTER =
#			(B IS A BLANK			 1 UNIT OF XX
#			POSITION.  DECIMAL		BIT 1 OF LOW REGISTER =
#			ONLY, DISPLAY OR		 1 UNIT OF YY
#			MONITOR ONLY. CANNOT		(EACH REGISTER MUST
#			BE LOADED.)                     CONTAIN A POSITIVE INTEGER
#			(MAX 99B99)                      LESS THAN 100)
#
# -UU-
# VELOCITY/2VS		XXXXX. FEET/SEC		DP	FRACTIONAL PART OF
#			(MAX 51532.)			2VS FEET/SEC
#							(VS = 25766.1973)
# Page 22
# -VV-
# POSITION8		XXXX.X NAUT MI		DP	BIT 1 OF LOW REGISTER =
#									 -28
#							4 X 6,373,338 X 2
#							--------------------
#							      1852
#							NAUT MI.
#
# -XX-
# POSITION 9		XXXXX. FEET		DP	BIT 1 OF LOW REGISTER =
#							 -9
#							2   METERS
#
# -YY-
# VELOCITY 4		XXXX.X FEET/SEC		DP	FRACTIONAL PART OF
#			(MAX 328.0)			METERS/CENTI-SEC
#
# -ZZ-
# DP FRACTIONAL		.XXXXX			DP	BIT 1 OF HIGH REGISTER =
#							 -14
#							2    UNITS

# THAT-S ALL ON THE NOUNS.

# Page 23

# 		ALARM CODES FOR 504

# 		REPORT DEFICIENCIES TO JOHN SUTHERLAND @ MIT 617-864-6900 X1458

# *9		*18						*60			                *25  COLUMN
#
# CODE       *	TYPE						SET BY			                ALARM ROUTINE
#
# 00110		NO MARK SINCE LAST MARK REJECT			SXTMARK			                ALARM
# 00112		MARK NOT BEING ACCEPTED				SXTMARK			                ALARM
# 00113		NO INBITS					SXTMARK			                ALARM
# 00114		MARK MADE BUT NOT DESIRED			SXTMARK			                ALARM
# 00115		OPTICS TORQUE REQUESTWITH SWITCH NOT AT	        EXT VERB OPTICS CDU	                ALARM
# 		 CGC
# 00116		OPTICS SWITCH ALTERED BEFORE 15 SEC ZERO	T4RUPT			                ALARM
#		 TIME ELAPSED.
# 00117		OPTICS TORQUE REQUEST WITH OPTICS NOT		EXT VERB OPTICS CDU	                ALARM
#		 AVAILABLE (OPTIND=-0)
# 00120		OPTICS TORQUE REQUEST WITH OPTICS		T4RUPT			                ALARM
#		 NOT ZEROED
# 00121		CDUS NO GOOD AT TIME OF MARK			SXTMARK			                ALARM
# 00122		MARKING NOT CALLED FOR				SXTMARK			                ALARM
# 00124		P17 TPI SEARCH - NO SAFE PERICTR HERE.		TPI SEARCH		                ALARM
# 00205		BAD PIPA READING				SERVICER		                ALARM
# 00206		ZERO ENCODE NOT ALLOWED WITH COARSE ALIGN	IMU MODE SWITCHING	                ALARM
# 		 + GIMBAL LOCK
# 00207		ISS TURNON REQUEST NOT PRESENT FOR 90 SEC	T4RUPT			                ALARM
# 00210		IMU NOT OPERATING				IMU MODE SWITCH, IMU-2, R02, P51        ALARM,VARALARM
# 00211		COARSE ALIGN ERROR - DRIVE > 2 DEGREES		IMU MODE SWITCH		                ALARM
# 00212		PIPA FAIL BUT PIPA IS NOT BEING USED		IMU MODE SWITCH,T4RPT	                ALARM
# 00213		IMU NOT OPERATING WITH TURN-ON REQUEST		T4RUPT			                ALARM
# 00214		PROGRAM USING IMU WHEN TURNED OFF		T4RUPT			                ALARM
# 00215		PREFERRED ORIENTATION NOT SPECIFIED		P52,P54			                ALARM
# 00217		BAD RETURN FROM STALL ROUTINES.			CURTAINS		                ALARM2
# 00220		IMU NOT ALIGNED - NO REFSMMAT			R02,P51			                VARALARM
# 00401		DESIRED GIMBAL ANGLES YIELD GIMBAL LOCK		IMF ALIGN, IMU-2	                ALARM
# 00404		TARGET OUT OF VIEW - TRUN ANGLE > 90 DEG	R52			                PRIOLARM
# 00405		TWO STARS NOT AVAILABLE				P52,P54			                ALARM
# 00406		REND NAVIGATION NOT OPERATING			R21,R23			                ALARM
# 00407		AUTO OPTICS REQUEST TRUN ANGLE > 50 DEG.	R52			                ALARM
# 00421		W-MATRIX OVERFLOW				INTEGRV			                VARALARM
# 00430	     *	INTEG. ABORT DUE TO SUBSURFACE S. V.		ALL CALLS TO INTEG	                POODOO
# 00600		IMAGINARY ROOTS ON FIRST ITERATION		P32, P72		                VARALARM
# 00601		PERIGEE ALTITUDE LT PMIN1			P32,P72,		                VARALARM
# 00602		PERIGEE ALTITUDE LT PMIN2			P32,P72,		                VARALARM
# 00603		CSI TO CDH TIME LT PMIN22			P32,P72,P33,P73		                VARALARM
# 00604		CDH TO TPI TIME LT PMIN23			P32,P72			                VARALARM
# 00605		NUMBER OF ITERATIONS EXCEEDS LOOP MAXIMUM	P32,P72,P37		                VARALARM
# 00606		DV EXCEEDS MAXIMUM				P32,P72			                VARALARM
# 00607	     *	NO SOLN FROM TIME-THETA OR TIME-RADIUS		TIMETHET,TIMERAD	                POODOO
# Page 24
# 00610      *	LAMBDA LESS THAN UNITY				P37			                POODOO
# 00611		NO TIG FOR GIVEN ELEV ANGLE			P34,P74			                VARALARM
# 00612		STATE VECTOR IN WRONG SPHERE OF INFLUENCE	P37			                VARALARM
# 00613		REENTRY ANGLE OUT OF LIMITS			P37			                VARALARM
# 00777		PIPA FAIL CAUSED ISS WARNING.			T4RUPT			                VARALARM
# 01102		CMC SELF TEST ERROR							                ALARM2
# 01103      *	UNUSED CCS BRANCH EXECUTED			ABORT			                POODOO
# 01104      *	DELAY ROUTINE BUSY				EXEC			                BAILOUT
# 01105		DOWNLINK TOO FAST				T4RUPT			                ALARM
# 01106		UPLINK TOO FAST					T4RUPT			                ALARM
# 01107		PHASE TABLE FAILURE. ASSUME			RESATRT			                ALARM
#		ERASABLE MEMORY IS DESTROYED
# 01201	     *	EXECUTIVE OVERFLOW-NO VAC AREAS		        EXEC			                BAILOUT
# 01202	     *	EXECUTIVE OVERFLOW-NO CORE SETS		        EXEC			                BAILOUT
# 01203      *	WAITLIST OVERFLOW-TOO MANY TASKS		WAITLIST		                BAILOUT
# 01204      *	NEGATIVE OR ZERO WAITLIST CALL			WAITLIST		                POODOO
# 01206      *	SECOND JOB ATTEMPTS TO GO TO SLEEP		PINBALL			                POODOO
#		VIA KEYBOARD AND DISPLAY PROGRAM
# 01207      *	NO VAC AREA FOR MARKS				SXTMARK			                BAILOUT
# 01210	     *	TWO PROGRAMS USING DEVICE AT SAME TIME		IMU MODE SWITCH		                POODOO
# 01211      *	ILLEGAL INTERRUPT OF EXTENDED VERB		SXTMARK			                BAILOUT
# 01301		ARCSIN-ARCCOS ARGUMENT TOO LARGE		INTERPRETER		                ALARM
# 01302      *	SQRT CALLED WITH NEGATIVE ARGUMENT.ABORT	INTERPRETER		                POODOO
# 01407		VG INCREASING					S40.8			                ALARM
# 01426		IMU UNSATISFACTORY				P61, P62			        ALARM
# 01427		IMU REVERSED					P61, P62			        ALARM
# 01501	     *	KEYBOARD AND DISPLAY ALARM DURING		PINBALL			                POODOO
#		 INTERNAL USE (NVSUB). ABORT.
# 01502	     *	ILLEGAL FLASHING DISPLAY			GOPLAY			                POODOO
# 01520		V37 REQUEST NOT PERMITTED AT THIS TIME		V37			                ALARM
# 01521	     *	P01 ILLEGALLY SELECTED				P01, P07                                POODOO
# 01600		OVERFLOW IN DRIFT TEST				OPT PRE ALIGN CALIB	                ALARM
# 01601      	BAD IMU TORQUE  				OPT PRE ALIGN CALIB	                ALARM
# 01602		BAD OPTICS DURING VERIFICATION			OPTALGN CALIB (CSM)	                ALARM
# 01703		INSUF. TIME FOR INTEG., TIG WAS SLIPPED		R41			                ALARM
# 03777		ICDU FAIL CAUSED THE ISS WARNING		T4RUPT			                VARALARM
# 04777		ICDU , PIPA FAILS CAUSED THE ISS WARNING	T4RUPT			                VARALARM
# 07777		IMU FAIL CAUSED THE ISS WARNING			T4RUPT			                VARALARM
# 10777		IMU , PIPA FAILS CAUSED THE ISS WARNING		T4RUPT			                VARALARM
# 13777		IMU , ICDU FAILS CAUSED THE ISS WARNING		T4RUPT			                VARALARM
# 14777		IMU,ICDU,PIPA FAILS CAUSED THE ISSWNING	        T4RUPT			                VARALARM
# 	     *	INDICATES ABORT TYPE.ALL OTHERS ARE NON-ABORTIVE

# Page 25

#               CHECKLIST CODES FOR 504

#               PLEASE REPORT ANY DEFICIENCIES IN THIS LIST TO JOHN SUTHERLAND

# *9		*17		*26  COLUMN
#
# R1 CODE	   ACTION TO BE EFFECTED
#
# 00014		KEY IN		FINE ALIGNMENT OPTION
# 00015		PERFORM		CELESTIAL BODY ACQUISITION
# 00016		KEY IN		TERMINATE MARK SEQUENCE
# 00041		SWITCH		CM/SM SEPARATION TO UP
# 00062		SWITCH		AGC POWER DOWN
# 00202		PERFORM		GNCS AUTOMATIC MANEUVER
# 00203		SWITCH		TO CMC-AUTO
# 00204		PERFORM		SPS GIMBAL TRIM
# 00403		SWITCH		OPTICS TO MANUAL OR ZERO
#		                  SWITCH DENOTES CHANGE POSITION OF A CONSOLE SWITCH
#		                  PERFORM DENOTES START OR END OF A TASK
#		                  KEY IN DENOTES KEY IN OF DATA THRU THE DSKY

# Page 26

#          OPTION CODES FOR 504

#          PLEASE REPORT ANY DEFICIENCIES IN THIS LIST TO JOHN SUTHERLAND

# THE SPECIFIED OPTION CODES WILL BE FLASHED IN COMPONENT R1 IN
# CONJUNCTION WITH VERB04NOUN06 TO REQUEST THE ASTRONAUT TO LOAD INTO
# COMPONENT R2 THE OPTION HE DESIRES.

# *9		*17					*52				*11		*25  COLUMN
#
# OPTION
# CODE		PURPOSE					INPUT FOR COMPONENT 2		PROGRAM(S)	APPLICABILITY
#
# 00001		SPECIFY IMU ORIENTATION			1=PREF 2=NOM 3=REFSMMAT		P50'S		ALL
# 00002		SPECIFY VEHICLE				1=THIS 2=OTHER			P21,R30		ALL
# 00003		SPECIFY TRACKING ATTITUDE		1=PREFERRED 2=OTHER		R63		ALL
# 00004		SPECIFY RADAR				1=RR 2=LR			R04		SUNDANCE + LUMINARY
# 00005		SPECIFY SOR PHASE			1=FIRST 2=SECOND		P38		COLOSSUS + LUMINARY
# 00006		SPECIFY RR COARSE ALIGN OPTION		1=LOCKON 2=CONTINUOUS DESIG.	V41N72		SUNDANCE + LUMINARY
# 00007		SPECIFY PROPULSION SYSTEM		1=SPS 2=RCS			P37		COLOSSUS
# 00010		SPECIFY ALIGNMENT MODE			0=ANY TIME 1=REFSMMAT +G	P57		LUMINARY
#							2=TWO BODIES 3=ONE BODY + G
# 00011		SPECIFY SEPARATION MONITOR PHASE	1=DELTAV 2=STATE VECTOR UPDATE	P46		LUMINARY
# 00012		SPECIFY CSM ORBIT OPTION		1=NO ORBIT CHANGE 2=CHANGE	P22		LUMINARY
#							ORBIT TO PASS OVER LM


================================================
FILE: Comanche055/AUTOMATIC_MANEUVERS.agc
================================================
# Copyright:	Public domain.
# Filename:	AUTOMATIC_MANEUVERS.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Pages:	1025-1036
# Mod history:	2009-05-13 RSB	Adapted from the Colossus249/ file of the
#				same name, using Comanche055 page images.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#	Assemble revision 055 of AGC program Comanche by NASA
#	2021113-051.  10:28 APR. 1, 1969
#
#	This AGC program shall also be referred to as
#			Colossus 2A

# Page 1025
		BANK	21
		SETLOC	DAPS3
		BANK

		COUNT	21/DAPAM

		EBANK=	KMPAC
AHFNOROT	EXTEND
		READ	CHAN31
		MASK	BIT14
		EXTEND
		BZMF	FREECONT
		CA	RCSFLAGS	# SEE IF RATE FILTER HAS BEEN INITIALIZED
		MASK	BIT14
		CCS	A		# IF SO, PROCEED WITH ATTITUDE CONTROL
		TCF	REINIT		# IF NOT, RECYCLE TO INITIALIZE FILTER
					# AUTOMATIC CONTROL YET
		EXTEND
		READ	CHAN31
		MASK	BIT13
		EXTEND
		BZMF	HOLDFUNC


AUTOCONT	CA	HOLDFLAG	# IF HOLDFLAG IS +, GO TO GRABANG.
		EXTEND			# OTHERWISE, GO TO ATTHOLD.
		BZMF	ATTHOLD
		TCF	GRABANG

# MINIMUM IMPULSE CONTROL

FREECONT	CAF	ONE
		TS	HOLDFLAG	# RESET HOLDFLAG
					# INHIBIT AUTOMATIC STEERING
		EXTEND
		READ	CHAN32
		TS	L
		COM
		MASK	MANROT
		MASK	CHANTEMP
		LXCH	CHANTEMP
		TC	STICKCHK
		INDEX	RMANNDX
		CA	MINTAU		# MINTAU	+0
		TS	TAU		#		+1	+14MS MINIMUM IMPULSE
		INDEX	PMANNDX		#		+2	-14MS TIME
		CA	MINTAU		#		+3	+0
		TS	TAU1
		INDEX	YMANNDX
		CA	MINTAU
# Page 1026
		TS	TAU2
		TCF	T6PROGM


MINTAU		DEC	0
		DEC	23		# = 14MS
		DEC	-23		# = -14MS
		DEC	0

# Page 1027
# 	CALCULATION OF ATTITUDE ERRORS-
#	-    *     -      -          -
#	AK = AMGB (CDUX - THETADX) + BIAS
#
# IE	*AK *   * 1        SIN(PSI)        0	** CDUX - THETADX *    *BIAS *
#	*   *   *                               **                *    *     *
#	*AK1* = * 0   COS(PSI)COS(PHI)  SIN(PHI)** CDUY - THETADY *  + *BIAS1*
#	*   *   *                               **                *    *     *
#	*AK2*   * 0  -COS(PSI)SIN(PHI)  COS(PHI)** CDUZ - THETADZ *    *BIAS2*
#
# 	THE BIASES ARE ADDED ONLY WHILE PERFORMING AUTOMATIC MANEUVERS (ESP KALCMANU) TO PROVIDE ADDITIONAL LEAD
# AND PREVENT OVERSHOOT WHEN STARTING AN AUTOMATIC MANEUVER.  NORMALLY THE REQUIRED LEAD IS ONLY 1-2 DEGREES.
# BUT DURING HIGH RATE MANEUVERS IT CAN BE AS MUCH AS 7 DEGREES.  THE BIASES ARE COMPUTED BY KALCMANU AND REMAIN
# FIXED UNTIL THE MANEUVER IS COMPLETED AT WHICH TIME THEY ARE RESET TO ZERO.


ATTHOLD		CA	CDUX
		EXTEND
		MSU	THETADX
		TS	ERRORX
		CA	CDUY
		EXTEND
		MSU	THETADY
		TS	T5TEMP
		EXTEND
		MP	AMGB1
		ADS	ERRORX
		CA	T5TEMP
		EXTEND
		MP	AMGB4
		TS	ERRORY
		CA	T5TEMP
		EXTEND
		MP	AMGB7
		TS	ERRORZ
		CA	CDUZ
		EXTEND
		MSU	THETADZ
		TS	T5TEMP
		EXTEND
		MP	AMGB5
		ADS	ERRORY
		CA	T5TEMP
		EXTEND
		MP	AMGB8
		ADS	ERRORZ
		CS	HOLDFLAG
		EXTEND
# Page 1028
		BZMF	JETS
		CA	BIAS		# AD BIASES ONLY IF PERFORMING AUTOMATIC
		ADS	ERRORX
		CA	BIAS1
		ADS	ERRORY
		CA	BIAS2
		ADS	ERRORZ
		TCF	JETS


HOLDFUNC	CCS	HOLDFLAG
		TCF	+3
		TCF	ATTHOLD
		TCF	+1
GRABANG		CAF	ZERO		# ZERO WBODYS AND BIASES
		TS	WBODY
		TS	WBODY +1
		TS	WBODY1
		TS	WBODY1 +1
		TS	WBODY2
		TS	WBODY2 +1
		TS	BIAS
		TS	BIAS1
		TS	BIAS2

		CA	RCSFLAGS
		MASK	OCT16000
		EXTEND			# IS RATE DAMPING COMPLETED
		BZF	ENDDAMP		# IF SO, GO TO ENDDAMP
		CAF	ZERO		# OTHERWISE, ZERO ERRORS
		TS	ERRORX
		TS	ERRORY
		TS	ERRORZ
		TCF	JETS

ENDDAMP		TS	HOLDFLAG	# SET HOLDFLAG +0
		EXTEND
		DCA	CDUX		# PICK UP CDU ANGLES FOR ATTITUDE HOLD
		DXCH	THETADX		# REFERENCES
		CA	CDUZ
		TS	THETADZ
		TCF	ATTHOLD

# Page 1029
# JET SWITCHING LOGIC AND CALCULATION OF REQUIRED ROTATION COMMANDS
#
# DETERMINE THE LOCATION OF THE RATE ERROR AND THE ATTITUDE ERROR RELATIVE TO THE SWITCHING LOGIC IN THE PHASE
# PLANE.
# COMPUTE THE CHANGE IN RATE CORRESPONDING TO THE ATTITUDE ERROR NECESSARY TO DRIVE THE THE S/C INTO THE
# APPROPRIATE DEADZONE.
#
#                                     .
#   R22                          RATE . ERROR
#        WL+H                         .
# *********************************   .					***** SWITCH LINES ENCLOSING DEADZONES
#   R23  WL                        *  .
# ----------------------------------* .					----- DESIRED RATE LINES
#   R23  WL-H       -                *.
# ****************** -                .					R20, R21, R22, ETC REGIONS IN PHASE
#                   * -               .* R18      R20       R21		PLANE FOF COMPUTING DESIRED RESPONSE
#                    *                . *
#                     *-              .  *
#   R22             R24*-    R23      .   *
#                       *             .    *
#                        *            .     *
#                         + -ADB      .      * AF              ATTITUDE
#  ........................+--+---------------+--+........................
#                           AF *      .     +ADB  +             ERROR
#                               *     .            *
#                                *    .            -*
#                                 *   .             -*
#                                  *  .              -*
#                                   * .                *
#                                    *.               - *
#                                     .                - *****************
#                                     .*                -
#                                     . * --------------------------------
#                                     .  *
#                                     .   ********************************
#                                     .

#			FIG. 1	PHASE PLANE SWITCHING LOGIC


# CONSTANTS FOR JET SWITCHING LOGIC

WLH/SLOP	DEC	.00463		# = WL+H/SLOPE = .83333 DEG	$180
WL-H/SLP	DEC	.00277		# = WL-H/SLOPE = .5 DEG		$180
WLH		2DEC	.0011111111	# = WL+H = 0.5 DEG/SEC		$450

WLMH		2DEC	.0006666666	# = WL-H = 0.3 DEG/SEC		$450

WL		2DEC	.0008888888	# = WL   = 0.4 DEG/SEC		$450

# Page 1030
SLOPE2		DEC	.32		# = 0.8 DEG/SEC/DEG		$450/180
JETS		CA	ADB
		AD	FOUR		# AF = FLAT REGION = .044 DEG
		TS	T5TEMP		# ADB+AF
		CAF	TWO
JLOOP		TS	SPNDX
		DOUBLE
		TS	DPNDX
		EXTEND
		INDEX	A
		DCA	ADOT
		DXCH	EDOT
		CA	HOLDFLAG	# HOLDFLAG = +0 MEANS THAT DAP IS IN
		EXTEND			# ATTITUDE HOLD AND RATE DAMPING IS OVER.
		BZF	INHOLD		# IF THIS IS THE CASE, BYPASS ADDITION
					# OF WBODY AND GO TO INHOLD
		EXTEND
		INDEX	DPNDX
		DCS	WBODY
		DAS	EDOT		# = ADOT-WBODY
INHOLD		INDEX	SPNDX
		CA	ERRORX
		TS	AERR		# AERR = BIAS + AK

		CCS	EDOT
		TCF	POSVEL
		TCF	SIGNCK1
		TCF	NEGVEL
SIGNCK1		CCS	EDOT +1
		TCF	POSVEL
		TCF	POSVEL
		TCF	NEGVEL
		TCF	NEGVEL
POSVEL		EXTEND
		DCA	EDOT
		DXCH	EDOTVEL
		CA	T5TEMP
		TS	ADBVEL		# +(ADB+AF)
		CA	AERR
		TS	AERRVEL
		TC	J6.
NEGVEL		EXTEND
		DCS	EDOT
		DXCH	EDOTVEL
		CS	T5TEMP
		TS	ADBVEL		# -(ADB+AF)
		CS	AERR
		TS	AERRVEL

J6.		EXTEND
# Page 1031
		SU	ADB
		AD	WLH/SLOP
		EXTEND
		BZMF	J8

		CS	T5TEMP		# (ADB+AF)
		AD	AERRVEL
		EXTEND
		BZMF	+2
		TCF	J7
		EXTEND
		DCS	EDOTVEL
		EXTEND
		DV	SLOPE
		EXTEND
		SU	AERRVEL
		AD	ADB
		EXTEND
		BZMF	J18
		TCF	J23

J7		CS	WL-H/SLP
		EXTEND
		SU	T5TEMP		# (ADB+AF)
		AD	AERRVEL
		EXTEND
		BZMF	J20
		TCF	J21

J8		EXTEND
		DCS	WLH
		DXCH	WTEMP
		EXTEND
		DCA	EDOTVEL
		DAS	WTEMP
		CCS	WTEMP
		TCF	J22
		TCF	SIGNCK2
		TCF	NJ22
SIGNCK2		CCS	WTEMP +1
		TCF	J22
		TCF	J22
		TCF	NJ22

NJ22		EXTEND
		DCA	EDOTVEL
		EXTEND
		DV	SLOPE
		AD	T5TEMP		# (ADB+AF)
		AD	AERRVEL
# Page 1032
		CCS	A
		TCF	J23
		TCF	J23
		TCF	+2
		TCF	J23

		EXTEND
		DCS	WLMH		# WL - H
		DXCH	WTEMP
		EXTEND
		DCA	EDOTVEL
		DAS	WTEMP
		CCS	WTEMP
		TCF	J23
		TCF	SIGNCK3
		TCF	NJ23
SIGNCK3		CCS	WTEMP +1
		TCF	J23
		TCF	J23
		TCF	NJ23

NJ23		CA	AERRVEL
		AD	T5TEMP		# (ADB+AF)
		AD	WL-H/SLP
		CCS	A
		TCF	J24
		TCF	J24
		TCF	J22
		TCF	J22

J18		EXTEND
		DCS	EDOT
		DXCH	KMPAC
		TCF	JTIME

J20		CS	AERR
		AD	ADBVEL
		EXTEND
		MP	SLOPE2		# (HYSTERESIS SLOPE)
		DXCH	KMPAC
		EXTEND
		DCS	EDOT
		DAS	KMPAC
		TCF	JTIME

J21		CCS	EDOT
		TCF	JP
		TCF	SIGNCK4
		TCF	JN
SIGNCK4		CCS	EDOT +1
# Page 1033
		TCF	JP
		TCF	JP
		TCF	JN
JN		EXTEND
		DCS	EDOT
		DXCH	KMPAC
		EXTEND
		DCA	WL
		DAS	KMPAC
		TCF	JTIME

JP		EXTEND
		DCS	EDOT
		DXCH	KMPAC
		EXTEND
		DCS	WL
		DAS	KMPAC
		TCF	JTIME

J22		CCS	EDOT
		TCF	JN
		TCF	SIGNCK5
		TCF	JP
SIGNCK5		CCS	EDOT +1
		TCF	JN
		TCF	JN
		TCF	JP
		TCF	JP

J23		INDEX	SPNDX
		CS	BIT13		# RESET RATE DAMPING FLAG
		MASK	RCSFLAGS	# BIT13 FOR ROLL  (SPNDX = 0)
		TS	RCSFLAGS	# BIT12 FOR PITCH (SPNDX = 1)
					# BIT11 FOR YAW   (SPNDX = 2)

		INDEX	SPNDX
		CAF	OCT01400	# IS THERE TO BE A FORCED FIRING ON THIS
		MASK	RCSFLAGS	# AXIS
		EXTEND
		BZF	DOJET +2	# NO, GO TO DOJET +2 AND DO NOTHING

		TCF	J18		# YES, GO TO J18 AND FORCE A FIRING

J24		CS	AERR
		EXTEND
		SU	ADBVEL
		EXTEND
		MP	SLOPE2		# (HYSTERESIS SLOPE)
		DXCH	KMPAC
		EXTEND
# Page 1034
		DCS	EDOT
		DAS	KMPAC

# Page 1035
# 	COMPUTE THE JET ON TIME NECESSARY TO ACCOMPLISH THE DESIRED CHANGE IN RATE, IE
#
#	     T  = J/M(DELTA W)
#	      J
#
#	DELTA W = DESIRED CHANGE IN S/C ANGULAR RATE AS DETERMINED BY THE
#		  SWITCHING LOGIC, AT THIS POINT STORED IN KMPAC.
#
#	    J/M = S/C INERTIA TO TORQUE 9ATIO SCALED BY
#		  	(57.3/450)(B24/1600)(1/.8)
#		  FOR 1 JET OPERATION  (M = 700 FT-LB).
#		  IE  J/M = J(SLUG-FTFT) x 0.00000085601606
#
#	          THE CORRESPONDING COMPUTER VARIABLES ESTABLISHED BY
#		  KEYBOARD ENTRY ARE
#			J/M (ROLL)
#			J/M1 (PITCH)
#			J/M2 (YAW)
#
#	     T  = JET-ON TIME    SCALED 16384/1600 SEC
#	      J
#
#	          THE COMPUTER VARIABLES ARE
#			TAU  (ROLL)
#			TAU1 (PITCH)
#			TAU2 (YAW)

JTIME		INDEX	SPNDX		# PICK UP S/C INERTIA/TORQUE RATIO
		CA	J/M		# SCALED (57.3/450)(B24/1600)
		TC	SMALLMP		# FOR 1-JET OPERATION
		CA	BIT11
		TC	SMALLMP
		CCS	KMPAC
		TCF	+4
		TCF	TAUNORM
		TCF	+4
		TCF	TAUNORM
		CA	POSMAX
		TCF	DOJET
		CA	NEGMAX
		TCF	DOJET

TAUNORM		CA	KMPAC +1
DOJET		INDEX	SPNDX
		TS	TAU
		CCS	SPNDX
		TCF	JLOOP
		TCF	T6PROG

# Page 1036
ZEROCMDS	CAF	ZERO
		TS	TAU
		TS	TAU1
		TS	TAU2
T6PROG		EXTEND			# WHEN THE ROTATION COMMANDS (TAUS)
		DCA	JETADDR		# HAVE BEEN DETERMINED
		DXCH	T5LOC		# RESET T5LOC FOR PHASE3
		TCF	RESUME

		EBANK=	KMPAC
JETADDR		2CADR	JETSLECT


================================================
FILE: Comanche055/CM_BODY_ATTITUDE.agc
================================================
# Copyright:    Public domain.
# Filename:     CM_BODY_ATTITUDE.agc
# Purpose:      Part of the source code for Comanche, build 055. It
#               is part of the source code for the Command Module's
#               (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler:    yaYUL
# Reference:    pp. 883-889
# Contact:      Ron Burkey <info@sandroid.org>
# Website:      http://www.ibiblio.org/apollo.
# Mod history:  2009-05-12 RSB	Adapted from Colossus249 file of the same
#				name and Comanche 055 page images.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
#       Assemble revision 055 of AGC program Comanche by NASA
#       2021113-051.  April 1, 1969.
#
#       This AGC program shall also be referred to as Colossus 2A
#
#       Prepared by
#                       Massachusetts Institute of Technology
#                       75 Cambridge Parkway
#                       Cambridge, Massachusetts
#
#       under NASA contract NAS 9-4065.
#
# Refer directly to the online document mentioned above for further
# information.  Please report any errors to info@sandroid.org.

# Page 883
		BANK	35

		SETLOC	BODYATT
		BANK

		COUNT	37/CMBAT

# PDL 12D - 15D SAFE.

# VALUES OF GIMBAL AND BODY ANGLES VALID AT PIP TIME ARE SAVED DURING	READACCS.

		EBANK=	RTINIT		# LET INTERPRETER SET EB

CM/POSE		TC	INTPRET		# COME HERE VIA AVEGEXIT.

		SETPD	VLOAD
			0
			VN		# KVSCALE = (12800/ .3048) /2VS
		VXSC	PDVL
			-KVSCALE	# KVSCALE = .81491944
			UNITW		# FULL UNIT VECTOR
		VXV	VXSC		# VREL = V - WE*R
			UNITR
			KWE
		VAD	STADR
		STORE	-VREL		# SAVE FOR ENTRY GUIDANCE.	REF COORDS

		UNIT	LXA,1
			36D		# ABVAL( -VREL) TO X1
		STORE	UXA/2		# -UVREL			REF COORDS

		VXV	VCOMP
			UNITR		# .5 UNIT			REF COORDS
		UNIT	SSP		# THE FOLLOWING IS TO PROVIDE A STABLE
			S1		# UN FOR THE END OF THE TERMINAL PHASE.
SPVQUIT		DEC	.019405		# 1000/ 2 VS
		TIX,1	VLOAD		# IF V-VQUIT POS, BRANCH.
			CM/POSE2	# SAVE UYA IN OLDUYA
			OLDUYA		# OTHERWISE CONTINUE TO USE OLDUYA.
CM/POSE2	STORE	UYA/2		#				REF COORDS

		STORE	OLDUYA		# RESTORE, OR SAVE AS CASE MAY BE.

		VXV	VCOMP
			UXA/2		# FINISH OBTAINING TRAJECTORY TRIAD.
		VSL1
		STORE	UZA/2		#				REF COORDS
# Page 884
		TLOAD			# PICK UP CDUX, CDUY, CDUZ CORRESPONDING
			AOG/PIP		# TO PIPUP TIME IN 2S.C AND SAVE.
CM/TRIO		STODL	24D
			25D		# AIG/PIP

		RTB	PUSH		# TO PDL0
			CDULOGIC
		COS
		STODL	UBX/2		# CI /2
					# AIG/PIP FROM PDL 0
		SIN	DCOMP
		STODL	UBX/2 +4	# -SI /2
			26D		# AMG/PIP
		RTB	PUSH		# TO PDL 0
			CDULOGIC
		SIN	PDDL		# XCH PDL 0.  SAVE SM /2
		COS	PDDL		# CM /2 TO PDL 2
			0		# SM /2
		DCOMP	VXSC
			UBX/2
		VSL1			# NOISE WONT OVFL.
		STODL	UBY/2		# =(-SMCI, NOISE, SMSI)/2
			2		# CM /2 REPLACES NOISE
		STODL	UBY/2 +2	# UBY/2=(-SMCI, CM, SMSI)/2
			24D		# AOG/PIP
		RTB	PUSH		# TO PDL 4
			CDULOGIC
		SIN	PDDL		# XCH PDL 4.  SAVE SO /2
		COS	VXSC		# CO /2
			UBY/2
		STODL	UBY/2		# UBY/2=(-COSMCI, COCM, COSMSI)/4
			4D		# SO /2
		DMP	DCOMP
			UBX/2 +4	# -SI /2
		DAD
			UBY/2		# INCREMENT BY (SOSI /4)
		STODL	UBY/2
					# SO /2 FROM PDL 4
		DMP	DAD
			UBX/2		# CI /2
			UBY/2 +4
		STOVL	UBY/2 +4	# YB/4				PLATFORM COORDS

				# YB = (-COSMCI + SOSI , COCM , COSMSI + SOCI )

			UBY/2
		VXM	VSL2
			REFSMMAT	# .5 UNIT
		STODL	UBY/2		# YB/2 DONE			REF COORDS
# Page 885
					# CM /2 FROM PDL 2
		VXSC	VSL1
			UBX/2
		STODL	UBX/2		# =( CMCI, NOISE, -CMSI)/2
		STADR			# SM /2 FROM PDL 0
		STOVL	UBX/2 +2	# SM /2 REPLACES NOISE
			UBX/2		# XB/2				PLATFORM COORDS

				# XB = ( CMCI , SM , -CMSI )

		VXM	VSL1
			REFSMMAT	# .5 UNIT
		STORE	UBX/2		# XB/2 DONE			REF COORDS

		VXV	VSL1
			UBY/2
		STOVL	UBZ/2		# ZB/2 DONE			REF COORDS

				# EQUIVALENT TO
				# ZB = ( SOSMCI + COSI , -SOCM , -SOSMSI + COCI)

			UXA/2		# -UVREL/2 = -UVA/2
		VXV	UNIT		# GET UNIT(-UVREL*UBY)/2 = UL/2
			UBY/2		# YB/2
		PUSH	DOT		# UL/2 TO PDL 0,5
			UZA/2		# UNA/2
		STOVL	COSTH		# COS(ROLL)/4
			0		# UL/2

		DOT
			UYA/2
		STCALL	SINTH		# -SIN(ROLL)/4
			ARCTRIG
		STOVL	6D		# -(ROLL/180) /2
			UBY/2
		DOT	SL1		# -UVA.UBY = -SIN(BETA)
			UXA/2		# -UVREL/2
		ARCSIN
		STOVL	7D		# -(BETA/180) /2
			UBX/2		# XB/2
		DOT			# UL.UBX = -SIN(ALFA)
			0		# UL/2
		STOVL	SINTH		# -SIN(ALFA)/4
		DOT			# UL/2 FROM PDL 0
			UBZ/2
		STCALL	COSTH		# COS(ALFA)/2
			ARCTRIG
		STOVL	8D		# -(ALFA/180) /2
			UNITR		# UR/2				REF COORDS
		DOT	SL1
# Page 886
			UZA/2		# MORE ACCURATE AT LARGE ARG.
		ARCCOS
		STORE	10D		# (-GAMA/180)/2

		TLOAD	EXIT		# ANGLES IN MPAC IN THE ORDER
					# -( (ROLL, BETA, ALFA) /180)/2
			6D		# THESE VALUES CORRECT AT PIPUP TIME.

# Page 887
# BASIC SUBROUTINE TO UPDATE ATTITUDE ANGLES

		EBANK=	AOG

CM/ATUP		CA	EBAOG
		TS	EBANK
CMTR1		INDEX	FIXLOC
		CS	10D		# (GAMA/180)/2
		XCH	GAMA
		TS	L

		INHINT
				# MUST REMAIN INHINTED UNTIL UPDATE OF BODY
				# ANGLES, SO THAT GAMDIFSW IS VALID FIRST PASS
				# INDICATOR.

		CS	CM/FLAGS
		MASK	BIT11		# GAMDIFSW=94D BIT11	INITLY=0
		EXTEND			# DONT CALC GAMA DOT UNTIL HAVE FORMD
					# ONE DIFFERENCE.
		BZF	DOGAMDOT	# IS OK, GO ON.
		ADS	CM/FLAGS	# KNOW BIT IS 0
		TC	NOGAMDOT	# SET GAMDOT = 0

DOGAMDOT	CS	L
		AD	GAMA		# DEL GAMA/360= T GAMDOT/360
		EXTEND
		MP	TCDU		# TCDU = .1 SEC, T = 2 SEC.
		TS	GAMDOT		# GAMA DOT TCDU / 180

		EXTEND			# IGNORE GAMDOT IF LEQ .5 DEG/SEC
		BZMF	+2
		COM
		AD	FIVE
		EXTEND
		BZMF	+3		# SET GAMDOT=+0 AS TAG IF TOO SMALL.

NOGAMDOT	CA	ZERO		# COME HERE INHINTED.
		TS	GAMDOT
					# FOR NOW LEAVE IN 2S.C
					# UPDATE ANGLES BY CORRECTING EUILER ANG
					# FOR ACCRUED INCREMENT SINCE PIPUP
					# R = R EUIL + R(NOW) -R(PIPUP)
		CS	MPAC		# GET (R EUL/180) /2
		DOUBLE			# POSSIBLE OVERFLOW
		TC	CORANGOV	# CORRECT FOR OVFL IF ANY
		EXTEND
		SU	ROLL/PIP	# GET INCR SINCE PIPUP
		AD	ROLL/180	# ONLY SINGLE OVFL POSSIBLE.
		TC	CORANGOV	# CORRECT FOR OVFL IF ANY
# Page 888
		TS	TEMPROLL

		CS	MPAC +2		# GET (ALFA EUL/180) /2
		DOUBLE			# SAME AS FOR ROLL.  NEEDED FOR EXT ATM DAP
		TC	CORANGOV	# CORRECT FOR OVFL IF ANY
		EXTEND
		SU	ALFA/PIP
		AD	ALFA/180
		TC	CORANGOV	# CORRECT FOR OVFL IF ANY
		TS	TEMPALFA

		CS	MPAC +1		# GET (BETA EUL/180) /2
CMTR2		DOUBLE
		EXTEND
		SU	BETA/PIP
		AD	BETA/180
		XCH	TEMPBETA	# OVFL NOT EXPECTED.

		CA	EBANK3
		TS	EBANK

		EBANK=	PHSNAME5
		EXTEND
		DCA	REPOSADR	# THIS ASSUMES THAT THE		TC  PHASCHNG
		DXCH	PHSNAME5	# IS NOT CHANGED IN		OCT 10035
					# SERVICER.

		CA	EBAOG
		TS	EBANK

		EBANK=	AOG
REDOPOSE	EXTEND			# RE-STARTS COME HERE
		DCA	TEMPROLL
		DXCH	ROLL/180
		CA	TEMPBETA
		TS	BETA/180

		RELINT

		TC	INTPRET		# CANT TC DANZIG AFTER PHASCHNG.
CM/POSE3	VLOAD	ABVAL		# RETURN FROM CM/ATUP.	(RESTART)
			VN		# 2(-7) M/CS
		STORE	VMAGI		# FOR DISPLAY ON CALL.

		GOTO
			POSEXIT		# ENDEXIT, STARTENT, OR SCALEPOP.

CORANGOV	TS	L
		TC	Q
		INDEX	A
# Page 889
		CA	LIMITS
		ADS	L
		TC	Q		# COSTS 2 MCT TO USE.  SEE ANGOVCOR.

-KVSCALE	2DEC	-.81491944	# -12800/(2 VS .3048)

TCDU		DEC	.1		# TCDU = .1 SEC.

		EBANK=	AOG
REPOSADR	2CADR	REDOPOSE


================================================
FILE: Comanche055/CM_ENTRY_DIGITAL_AUTOPILOT.agc
================================================
# Copyright:	Public domain.
# Filename:	CM_ENTRY_DIGITAL_AUTOPILOT.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Pages:	1063-1092
# Mod history:	2009-05-13 RSB	Adapted from the Colossus249/ file of the
#				same name, using Comanche055 page images.
#		2009-05-20 RSB	Corrections: Removed an extraneous label
#				EXDAPIN, added a missing instruction in
#				COMPAT.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#	Assemble revision 055 of AGC program Comanche by NASA
#	2021113-051.  10:28 APR. 1, 1969
#
#	This AGC program shall also be referred to as
#			Colossus 2A

# Page 1063
# SUBROUTINE TO READ GIMBAL ANGLES AND FORM DIFFERENCES.  GIMBAL ANGLES ARE SAVED IN 2S COMPLEMENT, BUT THE
# DIFFERENCES ARE IN 1S COMP.  ENTER AND READ ANGLES EACH .1 SEC.
#
#	CM/DSTBY = 1 FOR DAP OPERATION
#	CM/DSTBY = 0 TO TERMINATE DAP OPERATION.

		BANK	15

		SETLOC	ETRYDAP
		BANK

		COUNT	15/DAPEN

		EBANK=	AOG

READGYMB	CA	TEN		# KEEP RESTART DT GOING RELATIVE TO
		ADS	CM/GYMDT	# PIPTIME. (GROUP 6)

					# IF A RESTART OCCURS, SKIP PRESENT CYCLE. THE
					# PHASCHNG PROTECTION IS IN CM/DAPIC.

		CA	BIT6		# CHECK FOR FINE ALIGN MODE OF CDU.
		MASK	IMODES33	# ( PROTECT AOG/PIP ETC AS WELL AS
		EXTEND			#  GIMBAL DIFFERENCES)
		BZF	READGYM1	# OK

		CS	BIT1		# NOT IN FINE ALIGN, SO IDLE.
		MASK	CM/FLAGS	# SET GYMDIFSW = 0
		TS	CM/FLAGS
		TC	FLUSHJET	# QUENCH JETS, SINCE MAY BE A WHILE.
		TC	CM/GYMIC +2

READGYM1	CA	CDUX
		XCH	AOG
		EXTEND
		MSU	AOG		# -DELAOG=AOG(N-1) - AOG(N)
		TS	-DELAOG

		CA	CDUY
		XCH	AIG
		EXTEND
		MSU	AIG
		TS	-DELAIG

		CA	CDUZ
		XCH	AMG
		EXTEND
		MSU	AMG
		TS	-DELAMG

# Page 1064
DOBRATE?	CS	CM/FLAGS	# CM/DSTBY=103D BIT2  GYMDIFSW=104D BIT1
		MASK	THREE
		INDEX	A
		TC	+1
		TC	DOBRATE		# OK, GO ON
		TC	CM/GYMIC	# DONT CALC BODYRATE ON FIRST PASS.
		NOOP
		TC	FLUSHJET	# TURN OFF ALL JETS

		TC	PHASCHNG
		OCT	00006		# DEACTIVATE DAP GROUP 6.

		TC	TASKOVER

DOBRATE		CA	ONE		# DO BODYRATE
DOBRATE1	TS	JETEM		# SKIP BODYRATE.

		CA	TEN		# KEEP CDU READ GOING.
		TC	WAITLIST
		EBANK=	AOG
		2CADR	READGYMB

					# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS

		CCS	JETEM
		TC	BODYRATE
		TC	TASKOVER	# SKIP CALC ON INITIAL PASS. (PASSES)

CM/GYMIC	ADS	CM/FLAGS	# GYMDIFSW: C(A)=1, KNOW BIT IS 0
		CAF	ZERO
		TS	JETAG
		TS	OLDELP
		TS	OLDELQ
		TS	OLDELR
		TS	GAMDOT		# NO GYM DIF, PROB NO GAM DIF.
		TC	DOBRATE1

# Page 1065
# COME HERE TO CORRECT FOR OVERFLOW IN ANGULAR CALCULATIONS

ANGOVCOR	TS	L		# THIS COSTS 2 MCT TO USE.
		TC	Q		# NO OVFL
		INDEX	A
		CAF	LIMITS
		ADS	L
		TC	Q

		BLOCK	3

		COUNT	03/DAPEN

FLUSHJET	CA	7		# COME HERE TO TURN OFF ALL JETS.
		EXTEND
		WRITE	ROLLJETS	# ZERO CHANNEL 6
		EXTEND
		WRITE	PYJETS		# ZERO CHANNEL 5
		TC	Q

		BANK	15

		COUNT	15/DAPEN

		SETLOC	ETRYDAP
		BANK

RATEAVG		COM			# SUBROUTINE TO ESTIMATE RATES IN PRESENCE
		AD	JETEM		# OF CONSTANT ACCELERATION.
		EXTEND
		MP	HALF		# DELV (EST) = DELV +(DELV-OLDELV)/2
		AD	JETEM
		TC	Q

# Page 1066
# THESE ARE CALLED FOR THE VARIOUS INITIALIZATIONS NEEDED.

		BANK	20
		SETLOC	DAPS1
		BANK

		COUNT	20/DAPEN
		EBANK=	AOG

CM/DAPON	CA	EBAOG
		TS	EBANK

		TC	DOWNFLAG	# RESET DAPBIT1.  T5 RESTART IDENTIFIER.
		ADRES	DAPBIT1		# BIT 15 FLAG 6		CM FLAGS.
		TC	DOWNFLAG	# RESET DAPBIT2
		ADRES	DAPBIT2		# BIT 14 FLAG 6
		EXTEND
		DCA	T5IDLER1	# DISABLE RCS CALCULATION
		DXCH	T5LOC
		EXTEND
		DCA	T5IDLER1	# DISABLE RCS JET CALLS
		DXCH	T6LOC

		TC	FLUSHJET	# JETS DEPARTED ON SM. ZERO JET BITS.

		CS	13,14,15
		MASK	DAPDATR1	# SET CONFIG BITS =0 FOR ENTRY
		TS	DAPDATR1
		TC	+4

NOTYET		CA	.5SEC
		TC	BANKCALL
		CADR	DELAYJOB	# (DELAYJOB DOES INHINT)
	+4	CA	BIT11		# GAMDIFSW = 94D BIT11, INITLY=0
		MASK	CM/FLAGS	# IF ZERO, WAIT UNTIL CM/POSE UPDATE.
		EXTEND
		BZF	NOTYET

		CS	ONE		# ACTIVATE CM/DAP
		TS	RCSFLAGS	# USE BIT3 TO INITIALIZE NEEDLER ON
					# NEXT PASS.
		TS	P63FLAG		# SO WAKEP62 WILL NOT BE INITIATED UNTIL
					# HEADSUP IS SET IN P62.
					# FLAG TO PREVENT MULTIPLE CALLS TO WAKEP62.

		CA	7
		TS	JETAG
		TS	PAXERR1		# KEEP NEEDLES ZERO UNTIL DAP UPDATE
					# IN CASE CMDAPMOD IS NOT +1.
# Page 1067
		INHINT
		EXTEND
		DCA	ALFA/180	# DO ATTITUDE HOLD UNTIL KEYBOARD
		DXCH	ALFACOM		# ESTABLISHES HEADSUP.
		CA	ROLL/180
		TS	ROLLHOLD	# FOR ATTITUDE HOLD IN MODE +1.
		EXTEND
		MP	HALF
		TS	ROLLC		# NOT INTERESTED IN LO WORD.

		CS	CM/FLAGS
		MASK	BIT12		# CMDAPARM =93D BIT12  INITLY=0
		ADS	CM/FLAGS	# SET BIT TO 1.

		CS	FLAGWRD2	# SET  NODOFLAG  TO PREVENT FURTHER
		MASK	BIT1		# V 37 ENTRIES.
		ADS	FLAGWRD2

		RELINT

		TC	POSTJUMP
		CADR	P62.1

# Page 1068
# INITIALIZE CM/DAP.  WAITLIST CALL FOR READGYMB.  SET SWITCH CM/DSTBY =1
# SO READACCS WILL ENTER A WTLST CALL FOR  SETJTAG .
#  CMDAPARM  = 0, SO ONLY BODY RATE AND ATTITUDE CALCULATIONS ARE DONE.
# SET AVEGEXIT TO CONTINUE AT CM/POSE

CM/DAPIC	CA	EBAOG
		TS	EBANK

		INHINT
CM/DAP2C	CS	PIPTIME +1
					# PRIO OF P62 L PRIO AVG.:PIPTM=PIPTM1
		TS	JETEM

		CA	POS1/2
		AD	POS1/2
		AD	TIME1		# OVFL GUARANTEED
		ADS	JETEM		# C(A) = DELTA TIME SINCE PIPUP

		CS	FIVE
		AD	JETEM
		CCS	A
		AD	-CDUT+1
		TCF	-2
		NOOP
		AD	ONE		# SEND NO ZERO TO WTLST
		TS	CM/GYMDT	# FOR RESTART
		TC	WAITLIST
		EBANK=	AOG
		2CADR	READGYMB

		CS	CM/SWIC1	# GAMDIFSW, GYMDIFSW, CM/DSTBY
		MASK	CM/FLAGS	# DAPARM, .05GSW, LATSW, ENTRYDSP
		AD	CM/SWIC2	# SET CM/DSTBY, LATSW
					# DISABLE ENTRY DISPLAY, SINCE DES. GIMB.
					# CALC. (P62.3) GOES TO ENDEXIT.
		TS	CM/FLAGS

		CA	7
		TS	BETA/180	# NECESSARY:  NO OVFL CORRECTION
		CA	ONE		# INITIALIZE THE TM OF BODY RATES VIA
		TS	SW/NDX		#   UPBUFF.

		TC	2PHSCHNG	# DOES INHINT/RELINT
		OCT	40116		# SAVE TBASE6
		OCT	05024
		OCT	13000

		TC	POSTJUMP
# Page 1069
		CADR	P62.2

CM/SWIC1	OCT	16017
CM/SWIC2	=	TEN		# 00012 : CM/DSTBY, LATSW
-CDUT+1		OCT	77766
		EBANK=	T5LOC
T5IDLER1	2CADR	T5IDLOC

# Page 1070
# THIS SECTION CALCULATES THE ANGULAR BODY RATES EACH .1 SEC.  THE ANGULAR RATES ARE THOSE ALONG THE BODY AXES
# XB, YB, ZB, AND ARE NORMALLY DESIGNATED  P, Q, R.	REQUIREMENT:  TEMPORARY ERASE. JETEM, JETEM +1
#
# 	   SINCE RESTARTS ZERO THE JET OUTPUT CHANNELS, NO ATTEMPT IS MADE TO RESTART THE  ENTRY DAPS. THAT IS,
# THE 0.1 SEC DAPS WILL MISS A CYCLE, AND WILL PICK UP AT THE NEXT 0.1 SEC UPDATE. MOST OF THE TIME THE 2 SEC
# ROLL SYSTEM WILL MISS ONLY 0.1 SEC OF CONTROL. HOWEVER, IF THE RESTART OCCURS AFTER THE SECTION TIMETST HAS
# STARTED, THEN THE ROLL SYSTEM WILL MISS ONE CYCLE.
# THIS IS NECESSARY UNDER THE GROUNDRULE THAT NO JET COMMANDS SHALL BE LESS THAN 14 MS.

		EBANK=	AOG
		BANK	15
		SETLOC	ETRYDAP
		BANK

		COUNT	15/DAPEN

BODYRATE	CA	AMG		# THESE ARE 2S COMPL NOS, BUT USE ANYWAY.
		TC	SPCOS
		TS	COSM

		CA	AOG		# C(AOG) = AOG/180
		TC	SPSIN		# SINO
		TS	SINO		# SINO = SIN(AOG)

		EXTEND
		MP	COSM
		TS	SINOCOSM	# SO CM

		CA	AOG
		TC	SPCOS		# COSO
		TS	COSO

		EXTEND
		MP	COSM
		TS	COSOCOSM	# CO CM

# PITCHDOT:  Q TCDU/180 = IDOT TCDU/180 COSO COSM + MDOT TCDU/180 SINO

		CS	-DELAMG
		EXTEND
		MP	SINO
		DXCH	JETEM		# 2 LOCS
		CS	-DELAIG
		EXTEND
		MP	COSOCOSM
		DAS	JETEM
		CA	JETEM
		XCH	OLDELQ
		TC	RATEAVG
		TS	QREL		# PITCHDOT = Q TCDU/180

# Page 1071
# YAWDOT:  R TCDU/180 = -IDOT TCDU/180 COSM SINO + MDOT TCDU/180 COSO

		CS	-DELAMG
		EXTEND
		MP	COSO
		DXCH	JETEM
		CA	-DELAIG
		EXTEND
		MP	SINOCOSM
		DAS	JETEM
		CA	JETEM
		XCH	OLDELR
		TC	RATEAVG
		TS	RREL		# YAWDOT = R TCDU/180

# ROLLDOT:  P TCDU/180 = ODOT TCDU/180 + IDOT TCDU/180 SINM

		CA	AMG
		TC	SPSIN
		TS	SINM

		EXTEND
		MP	-DELAIG
		TS	JETEM
		CA	ZERO
		DDOUBL			# ROUND L INTO A
		AD	-DELAOG
		AD	JETEM
		CS	A
		TS	JETEM
		XCH	OLDELP
		TC	RATEAVG
		TS	PREL		# ROLLDOT = P TCDU/180

					# IF GAMDOT < 0.5 DEG/SEC, THEN GAMDOT =0

		CCS	GAMDOT
		TC	+2
		TC	NOGAMDUT
		CS	ROLL/180
		TC	SPSIN
		EXTEND
		MP	GAMDOT
		TS	JETEM +1	# -SR GAMDOT
		EXTEND
		MP	SINTRIM		# SIN(-20)	(FOR NOMINAL L/D = .3)
		ADS	PREL		# PREL TCDU/180=(P-SALF SR GAMDOT)TCDU/180

		CA	ROLL/180
		TC	SPCOS
# Page 1072
		COM
		EXTEND
		MP	GAMDOT
		ADS	QREL		# QREL TCDU/180=(Q-CR GAMDOT) TCDU/180

		CS	JETEM +1	# B( ) = -SR GAMDOT
		EXTEND
		MP	COSTRIM		# COS(-20)	(FOR NOMINAL L/D = .3)
		ADS	RREL		# RREL TCDU/180=(R+CALF SR GAMDOT)TCDU/180

NOGAMDUT	CA	BIT12		# CMDAPARM = 93D BIT 12
		MASK	CM/FLAGS
		EXTEND
STBYDUMP	BZF	TASKOVER	# DAP NOT ARMED.

		CA	POSMAX		# PICK UP AT ATTRATES IN 10 MS OR SO.
		TS	TIME5

		EXTEND
		DCA	ATDOTCAD
		DXCH	T5LOC
					# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS

		TC	TASKOVER

		EBANK=	AOG
ATDOTCAD	2CADR	ATTRATES

# Page 1073
# CALCULATE BODY ATTITUDE RATES AND INTEGRATE TO OBTAIN ATTITUDE ANGLES.
#
#	CB PHIDOT TCDU/180 = (CA PREL + SA RREL) TCDU/180
#	BETADOT TCDU/180 = (-SA PREL + CA RREL) TCDU/180
#	ALFADOT TCDU = (QREL + SB PHIDOT) TCDU/180

ATTRATES	LXCH	BANKRUPT	# CONTINUE HERE VIA T5
		EXTEND			# TASK MAY BE SKIPPED AT RESTART.
		QXCH	QRUPT
		CA	SR
		DOUBLE
		TS	CM/SAVE
					# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS

		CA	QREL
		AD	ALFA/180
		TC	ANGOVCOR
		TS	ALFA/180
		TC	SPCOS
		TS	CALFA		# CALFA
		TS	PHIDOT

		EXTEND
		MP	PREL
		XCH	PHIDOT		# CA PREL
		EXTEND
		MP	RREL		# CA RREL
		TS	BETADOT

		CA	ALFA/180
		TC	SPSIN
		TS	SALFA		# SIN(ALFA)

		EXTEND
		MP	RREL		# SA RREL
		ADS	PHIDOT		# CB PHIDOT, SAVED.

		CS	SALFA
		EXTEND
		MP	PREL
		ADS	BETADOT		# SAVE BETADOT TCDU/180
		ADS	BETA/180	# BETA DONE.

		TC	SPSIN
		EXTEND
		MP	PHIDOT		# NEGLECT CB IN CB PHIDOT
		AD	ALFA/180
		TC	ANGOVCOR
		TS	ALFA/180	# ALFA DONE.
# Page 1074
		COM
		AD	ALFACOM
		TC	ANGOVCOR	# JUST IN CASE ...
		TS	AK1
		TS	QAXERR		# FOR PITCH FDAI AND EDIT.

		CA	PHIDOT		# PHIDOT TCDU/180, NEGLECTING CB
		AD	ROLL/180
		TC	ANGOVCOR
		TS	ROLLTM		# ROLL/180 FOR TM.
		TS	ROLL/180	# ROLL DONE.

# START YAW AUTOPILOT HERE.  RATE DAMPING WITH ENFORCED COORDINATED ROLL MANEUVER.

		CS	BETA/180	# IF IN ATM, SAVE 'RAXERR' FOR TM DNLST.
		AD	BETACOM
		TS	RAXERR		# IF OUTSIDE ATM, USE TM REGISTER 'RAXERR'
					# AS A TEMPORARY.  (DAP OPERATION IS IN INTERRUPT, SO
					# IS OK.)  FINAL C(RAXERR) AT END OF DAP CYCLE WILL
					# BE R-AXIS ERROR.

		CA	BIT3		# .05GSW = 102D BIT3	SW=0, LESS .05G
		MASK	CM/FLAGS	# SWITCH =1, GREATER THAN .05 G
		EXTEND
		BZF	EXDAP		# IF G LESS THAN .05
		CS	ONE		# IF G GEQ  THAN .05
		TS	CMDAPMOD	# SAVE -1 FOR USE IN CM/RCS

		TS	AK1		# TO ZERO PITCH AND YAW FDAI NEEDLES
		TS	AK2		# IN ATM.  (MODE =-1)

		CS	PREL		# YAW ERROR = RREL - PREL TAN(ALFA)
		EXTEND
		MP	SINTRIM		# LET SIN(-20) BE APPROX FOR TAN(-20)
		AD	RREL
		TC	2D/SDZ		# GO TEST DZ.  GET TAG: +0 IF IN DZ
		INDEX	A		# +/- 1 IF NOT
		CAF	YJETCODE

		TS	JETEM

# START PITCH AUTOPILOT HERE.  RATE DAMPING ONLY.

		CA	QREL
		TC	2D/SDZ
EXDAPIN		INDEX	A		# COME HERE FROM EX ATM DAP
		CAF	P/RJCODE
		ADS	JETEM		# COMBINE ALL NEW BITS.

		EXTEND			# DOES NOT REQUIRE SAVING OLD CODES.
# Page 1075
		WRITE	PYJETS		# SET PYCHAN TO DESIRED BIT CONFIG.

		CCS	JETAG
		TC	CM/RCS
		TC	CM/FDAI
		TC	CM/FDAIR -1 	# (JETAG=-1 EQUIVALENT TO CMDAPMOD=+1)

# Page 1076
# DEAD ZONE LOGIC USED BY ENTRY DIGITAL AUTOPILOTS.

3DDZ		CCS	A		# YAWLIM=1.0-3/180=16384-273=16111
		AD	YAWLIM
		TCF	DZCOM
		AD	YAWLIM
		TCF	DZNOCOM

					# BIASED DZ FOR EXT ATM DAP.
BIASEDZ		TS	JETEM2		# SAVE RATE/180.  ERROR/180 IS IN L.
		CCS	A		# START ERROR DZ.
		CS	CM/BIAS		# = .6/180
		TCF	+2
		CA	CM/BIAS
		AD	L		# BIAS THE ERROR.
		LXCH	Q		# SAVE CALLERS RETURN ADDRESS.
		TC	3DDZ		# GO GENERATE THE ERROR BIT.
		DXCH	L		# BIT TO L, RESTORE CALLERS Q.
4D/SDZ		CCS	JETEM2		# CAME HERE IN EXT ATM. C(L) = ERROR BIT
		AD	4D/SLIM		# IF RATE GEQ 4D/S, SET L=0 AND TAKE
		TCF	+2		# JET BITS ACCORDING TO SGN OF RATE.
		AD	4D/SLIM
		TS	A
		TCF	+2		# RATE OK. CONTINUE
		ZL			# RATE GEQ 4 D/S.  OVER RIDE ERROR BIT
		XCH	JETEM2		# AND CONTINUE TO GET SIGN.

2D/SDZ		CCS	A		# COME HERE TO TEST IF A WITHIN 2DEG/S DZ
		AD	YDOTLIM		# 1.0 - YDOT DZ		(OR PDOT)
		TCF	+3
		AD	YDOTLIM		# YDOT DZ = 2 DEG/SEC
DZCOM		COM
DZNOCOM		TS	JETEM +1	# GENERATE TAG, SET C(A)= -+1 OUTSIDE DZ
		CA	ZERO		# SET C(A) = +0 INSIDE
		TC	Q

# Page 1077
# EXTRA ATMOSPHERIC DIGITAL AUTOPILOT
#
# 1.	IF ABS(CALF) -C(45) POS, USE			IF CALFA POS, CMDAPMOD= +0
#	BETA:	YAW ERROR = SGN(CALF) (BETACOM -BETA)	IF CALFA NEG, CMDAPMOD= -0
#		     RATE = BETADOT			IF CMDAPMOD = -0, RATE = RREL
#		   R-AXIS = CONTROL
#
#	ROLL:  ROLL ERROR = SGN(CALF) (ROLLC - ROLL)	IF CMDAPMOD = -0, RATE DAMP ONLY.
#		     RATE = PREL
#		   P-AXIS = CONTROL
#
# 2.	IF C(45) GEQ CALFA GEQ -C(45), USE		CMDAPMOD = +1
#	BETA:  ROLL ERROR = SGN(-SALF) (BETACOM -BETA)
#		     RATE = BETADOT
#		   P-AXIS = CONTROL
#
#	ROLL:	YAW ERROR = SGN(SALF) (ROLLC - ROLL)	RATE DAMP ONLY.
#		     RATE = RREL
#		   R-AXIS = CONTROL
#
# 3.	FOR ALL CASES, USE
#	ALFA: PITCH ERROR = (ALFACOM - ALFA)
#		     RATE = QREL
#		   Q-AXIS = CONTROL

EXDAP		TS	CMDAPMOD	# +0 FOR NOW
		CCS	CALFA
		AD	C45LIM		# =1.0-COS(45)
		TCF	+2
		AD	C45LIM
		TS	A
		TCF	EXDAP2		# HERE IF ABS(CALFA) L COS(45)

		CCS	CALFA		# |CALFA| > 0.707
		TCF	+1		# CONTINUE IF POS; GO TO EXDAP4 IF NEG.

		CCS	P63FLAG		# VALID VALUES ARE:  -1, +1, +0.
		TC	EXDAP4
		TC	+2
		TC	EXDAP4
		TC	PHASCHNG	# SINGLE PASS THROUGH HERE.
		OCT	40334
		CS	ONE
		TS	P63FLAG		# SET FLAG TO ASSURE SINGLE PASS.
		CA	NSEC
		TC	WAITLIST
		EBANK=	AOG
		2CADR	WAKEP62		# CALL TO TERMINATE P62 IN N SEC.
# Page 1078
					# 65 DEG/ 3DEG/SEC = 21 SEC NOMINAL
					# TRANSIT TIME FROM ALFA=45 TO ALFA TRIM.

EXDAP4		CCS	JETAG		# ROLLJET INTERFACE TEST BETWEEN .1 SEC
		TCF	EXDAP3		# DAP AND THE 2 SEC CM/RCS DAP
		TCF	EXDAP3
		CA	ZERO
		EXTEND			# TURN OFF ROLL JETS IF ON AND WAIT
		WRITE	ROLLJETS	# UNTIL START OF 2 SEC CM/RCS CYCLE
		TS	JETAG		# RESTORE PROPER VALUE +0

					# ROLL FDAI WILL BE IN ERROR UNTIL NEXT CM/RCS CALL.
EXDAP3		CCS	CALFA		# HERE IF ABS(CALFA) GEQ COS(45)
		CA	RAXERR		# C()= BETACOM - BETA/180
		TCF	EXDAP1
		CS	ZERO
		TS	CMDAPMOD	# FOR CM/RCS
		CS	RAXERR		# COMPLEMENT OF YAW ERROR.
EXDAP1		TS	RAXERR		# FOR YAW FDAI
		TS	AK2		# WANT RAXERR FOR TM.
		TS	L
		CCS	CMDAPMOD	# COORDINATE BETA CONTROL.
		TC	+3		# C(CMDAPMOD) CAN BE +1, +0, OR -0.
		CA	ONE		# USE BETADOT TO COORD IN MODE +0
		INDEX	A		# OTHERWISE USE RREL.
		CA	RREL
		TC	BIASEDZ		# GO TEST DZ. +0 IF IN DZ, +-1 OTHERWISE
					# IF GEQ 4D/S, SET ERROR BIT IN L=0
		EXTEND
		ROR	LCHAN		# L HAS BETA BIT
		INDEX	A
		CAF	YJETCODE
		TS	JETEM

		CA	QAXERR		# ALFA ERROR.
		TS	L
		CA	QREL		# FOR ALPHADOT USE QREL
		TC	BIASEDZ
		EXTEND
		ROR	LCHAN
		TCF	EXDAPIN		# CONTINUE ON IN DAP

EXDAP2		INCR	CMDAPMOD	# SET CMDAPMOD TO +1

		CS	ONE		# INDICATE CHANGE FROM .1 SEC UPDATE TO
		TS	JETAG		# TO 2 SEC FOR ROLL JETS. (IF CMDAPMOD
					# =0 AND JETAG =-1, QUENCHES JETS IF ON)

		CCS	P63FLAG		# IF FLAG WAS +1, SET =0.
		TS	P63FLAG
# Page 1079
		NOOP

		CCS	SALFA		# BETA CONTROL WITH P JETS
		CS	RAXERR		# B()= BETACOM - BETA/180
		TCF	+2
		CA	RAXERR
		TS	PAXERR1		# TEMP SAVE.  ERROR/180
		EXTEND
		MP	HALF		# CM/FDAI EXPECTS ERROR/360.
		XCH	PAXERR1		# ERROR/360 FOR FDAI, GET ERROR/180.
		TS	L
		CCS	SALFA
		CS	BETADOT		# USE BETADOT TO COORD IN MODE +1
		TC	+2
		CA	BETADOT
		TC	BIASEDZ
		EXTEND
		ROR	LCHAN
		INDEX	A
		CAF	P/RJCODE	# GET ROLL CODE
		EXTEND			# ROLL CONTROL WITH YAW JETS.
		WRITE	ROLLJETS	# WE,LL SKIP REGULAR ROLL SYST

		CA	ROLLHOLD	# ROLL/180 AT CM/DAPON TIME.
		EXTEND
		MSU	ROLL/180	# 1,S COMPL, BUT SO WHATS A BIT.?
		TS	L		# FORCE A LIMIT CYCLE IN YAW RATE.
		CCS	SALFA
		CA	L		# TO REMOVE ITS BIASING EFFECT ON M DOT.
		TC	EXDAP1
		CS	L
		TC	EXDAP1

NSEC		DEC	2100		# 65 DEG/ 3 DEG/SEC
					# IF NSEC IS CHANGED, REMEMBER TO CHANGE 4.33SPOT.
4D/SLIM		DEC	16348		# 1.0 -4/180 D/S = 4/1800 EXP 14
YDOTLIM		DEC	16366		# =1.0 - YDOT DZ= 16384 -18
					# YDOT DZ = YDOT TCDU/180 = 2/1800 EXP 14

CM/BIAS		DEC	55		# =.6/180 B14 = 55
YAWLIM		DEC	16055		# YAWLIM=1.0-3.6/180=16384-329=16055
C45LIM		DEC	.29289		# =1.0-COS(45)

SINTRIM		DEC	-.34202		# SIN(-20)	(FOR NOMINAL L/D = .3)
COSTRIM		DEC	.93969		# COS(-20)	(FOR NOMINAL L/D = .3)

# TO MAKE DAP INSENSITIVE TO PITCH ERRORS DUE TO ACCUMULATED NAV ERRORS, USE NOMINAL VALUE (-20 DEG) FOR TRIM ALFA
# USED DURING ATMOSPHERIC COORDINATION. OUTSIDE ATMOSPHERE, NAV ERRORS WILL BE SLIGHT, BUT ALFA CAN DIFFER GREATLY
# FROM TRIM, SO USE ON-BOARD ESTIMATES.

# Page 1080
# JET CODE TABLES FOLLOW _

		OCTAL	00120		# POS Y
YJETCODE	OCTAL	00000		# RCS JET BITS
		OCTAL	00240		# NEG Y
		OCTAL	00005		# POS R JET BITS	ALSO POS P JET BITS
P/RJCODE	OCTAL	00000
		OCTAL	00012		# NEG R			ALSO NEG P

# Page 1081
# RCS		THIS SECTION IS ENTERED EACH 2 SEC BY WAITLIST CALL FOLLOWING A DELAY OF 1.2 SEC AFTER PIPUP.
# THE TASK  SETJTAG  SETS A FLAG IN  JETAG  TO SIGNIFY THAT ROLL UPDATE IS DUE.  IN ROUGHLY 5 CS  BPDYRATE  WILL BE
# EXECUTED AND JETAG WILL CAUSE  CM/RCS  TO ACT ON ROLLC IMMEDIATELY THEREAFTER.  THE
# TASK SAVES THE CALL TIME SO THAT CM/RCS CAN DETERMINE HOW MUCH OF THE 2 SEC INTERVAL REMAINS BEFORE THE
# NEXT UPDATE.

SETJTAG		CS	TIME1		# SAVE NOMINAL UPDATE TIME FOR SYNCH
		TS	TUSED
					# THE 5 CS APPEARS IN TIMETST.
		CA	ONE		# RATHER THAN INCR, FOR SAFETY
		TS	JETAG		# SET JETAG=1 TO CAUSE CM/RCS TO BE
		TC	PHASCHNG
		OCT	00001

		TC	TASKOVER	# EXECUTED AFTER NEXT BODYRATE UPDATE

# PREDICTIVE ROLL SYSTEM	ENTRY STEERING PROVIDES ROLL COMMAND IN LOC ROLLC.  THE FOLLOWING CALCULATES THE
# TRAJECTORY TO THE ORIGIN IN PHASE PLANE (X,V).  PROGRAM ENTERS JET ON AND OFF CALLS INTO WTLST TO PRODUCE
# THE DESIRED TRAJECTORY.  ONLY THOSE CALLS WHICH CAN BE EXECUTED WITHIN THE INTERVAL  T  (2 SEC) ARE ENTERED IN
# WTLST, THE REMAINDER ARE RECONSIDERED AT NEXT UPDATE.

HALFPR		EQUALS	NEG1/2 +1

					# CLEAR JETAG BEFORE TIMETST.  SET TO +0 TO SHOW
					# ROLL DAP CALLED.  IN EVENT OF RESTART, BODYRATE
					# MAY MISS A CYCLE.  CM/RCS WILL MISS A CYCLE ONLY
					# IF A RESTART OCCURS AFTER TIMETST COMMENCES.

CM/RCS		CS	ONE
		TS	JNDX		# SET NDX FOR POS ROLL, AND CHANGE LATER

		CS	2T/TCDU		# ROLLDOT = DELAOG + DELAIG SINM =DELR
		EXTEND
		MP	PREL		# DELR/180 = RDOT TCDU/180 = RDOT/1800
		AD	L		# -2 RDOT T/180 IN L
		TS	-VT/180		# SAVE -2VT/180 HERE

		CS	ROLL/180
		TS	SR		# SAVE (-R/180) /2

		CS	CM/FLAGS
		MASK	BIT4		# LATSW = 101D BIT4
		EXTEND			# ROLL OVER TOP $
		BZF	GETLCX		# NO, TAKE SHORTEST PATH
		ADS	CM/FLAGS	# YES, ENFORCE ROLL OVER TOP.. (BIT =0)
		CA	ROLLC		# (ROLLC/180) /2
		AD	SR		# -(R/180) /2
		XCH	LCX/360		# DIFFERENT X REQD HERE.  DISCONT AT 180.
		TCF	COMPAT		# POSSIBLE OVFL ABOVE.

# Page 1082
GETLCX		CA	POS1/2		# FORM RCOM/360
		DOUBLE
		AD	ROLLC
		XCH	LCX/360		# IGNORE POSSIBLE OVFL.

		CA	SR		# FORM -R/360
		AD	NEG1/2
		AD	NEG1/2		# IGNORE OVFL
		XCH	LCX/360		# -R/360
		ADS	LCX/360		# LCX/360 = RCOM/360 -R/360  RANGE (-1,1)

# DOES SGN(-VT) (VT/180) (VT/180) (180/(4 A1 TT COSALFA)) + X/360 + SGN(X) / 2	  OVFL ?

		CCS	-VT/180		# TAKE SHORTEST ANGULAR PATH
		AD	ONE		# (BASED ON SINGLE JET ACCELERATION)
		TCF	+2
		AD	ONE
		EXTEND
		MP	-VT/180		# C(-VT/180) = -2 VT/180
		EXTEND
		MP	1/16A1		# = 180/(16 A1 TT)
		EXTEND
		DV	CALFA
		TS	L
		CCS	LCX/360
		CAF	POS1/2
		TCF	+2
		CS	POS1/2
		AD	LCX/360		# IS LCX/360 LESS THAN 180 DEGS  $
		AD	L
		TS	L
		TCF	COMPAT		# YES, GO ON.
TRTAGXPI	INDEX	A		# NO, SHIFT X BY - SGN(X) 2 PI
		CS	HALFPR		# +A YIELDS -1/2
		DOUBLE
		ADS	LCX/360

COMPAT		CA	LCX/360		# CORRECT FOR ASSUMED COORD TURN.
		EXTEND
		MP	CALFA		# COS ALFA
		TS	LCX/360		# SCALED LCX OK HERE.

		CCS	CMDAPMOD	# FOUR POSSIBILITIES HERE
		TC	DZCALL1		# EXIT, SETTING JETAG=0. (C(A)=0)
					# ALL 3 AXES ALREADY DONE.
		TC	+1		# G LESS THAN .05.  CA POS. CONTINUE
		CA	LCX/360		# G GEQ .05.  CONTINUE IN CM/RCS
		TS	LCX/360		# CMDAPMOD=-0.  DAMPING ONLY. SET LCX=0
		TS	ERRORZ		# INITIAL ROLL ERROR (UNREFLECTED) FOR TM.
		TS	PAXERR1		# SAVE LCX FOR FDAI AND EDIT.  (/360)
# Page 1083
		CA	-VT/180		# GET - 2 VT/180
		TS	SR
		CA	SR		# GET -VT/180, LEAVE -VT/360 IN SR FOR DZ
		TS	-VT/180E	#			DIAGNOSTIC ****
		XCH	-VT/180		# NOW CONTENTS OF -VT/180 AS LABELED
		EXTEND
		MP	-VT/180		# B(A) = -ZVT/180
		EXTEND
		MP	180/8ATT
		TS	VSQ/4API

# IS SGN(VT) ( (180/4A1 TT) VT/180 VT/180 - .5 BUFLIM/360 ) -X/360 - .5 BUFLIM/360  POS?

WHICHALF	DOUBLE			# FOR SECOND BURN, A1
		COM
		AD	BUFLIM		# =BUFLIM/(2 360)
		TS	L
		CCS	-VT/180
		CS	L
		TCF	+2
		CA	L
		AD	LCX/360
		AD	BUFLIM
		EXTEND
		BZMF	REFLECT		# POINT (X,V) IN LHP.

# IS SGN(VT) ( (180/4A1 TT) VT/180 VT/180 - .5 BUFLIM/360 ) -X/360 + .5 BUFLIM/360  NEG?

		COM
		AD	BUFLIM
		AD	BUFLIM
		EXTEND
		BZMF	DZ1		# POINT (X,V) IN RHP.

# IS POINT WITHIN VELOCITY DZ?

		CS	VSQMIN		# IS VSQ/4API - (VSQ/4API) MIN NEG?
		AD	VSQ/4API
		EXTEND
		BZMF	DZCALL		# YES.

# POINT IS IN BUFFER ZONE.  THRUST TO X AXIS.

		CS	JNDX
		TS	JNDX1
		TC	OVRLINE1

REFLECT		CS	-VT/180		# RELFECT LHP INTO RHP REL TO TERM CONTR
		TS	-VT/180
		TS	SR		# -VT/360 SAVED FOR DZ.
# Page 1084
		CS	LCX/360
		TS	LCX/360
		CS	JNDX
		TS	JNDX

# IS VSQ/4API - (VSQ/4API) MIN NEG?

DZ1		CS	VSQMIN		# IS VSQ/4API - (VSQ/4API) MIN NEG  $
		AD	VSQ/4API
		EXTEND
		BZMF	DZ2		# YES, GO TEST FURTHER.
		TCF	MAXVTEST	# NO

# IS X/360 - XMIN/360 -VT/360 NEG?

DZ2		CS	XMIN/360	# XMIN/360 = 4/360
		AD	LCX/360
		AD	SR		# C(SR) = -VT/360
		EXTEND			# IS X/360 - XMIN/360 -VT/360 NEG  $
		BZMF	DZCALL		# YES, IN DZ. EXIT SETTING JETAG=0.

# IS XD/360 - VM/360K - XS/360 POS?

MAXVTEST	CS	JNDX
		TS	JNDX1		# NOW CAN SET JNDX1 FOR TON2 JETS.
		CS	XS/360		# XS/360 = (XMIN -YMIN/K) /360
		AD	VSQ/4API
		AD	LCX/360
		TS	XD/360		# XD/360= X/360 +VSQ/4API   X INTERCEPT
					# BUT C(XD/360) = (XD - XS) /360
		AD	-VM/360K	# X INTERCEPT FOR MAX V (VM)
		COM
		EXTEND
		BZMF	MAXVTIM1	# YES, THRUST TO VM
		CA	XD/360
		EXTEND
		MP	KTRCS
		DDOUBL			# GO SAVE PREDICTED DRIFTING VELOCITY.

		TC	GETON1		# INSURE THAT Q IS POS AS TAG.
MAXVTIM1	EXTEND
		ZQ			# SET +Q AS TAG
		CS	-VMT/180
GETON1		TS	VDT/180		# VDT/180 OR VMT/180
		AD	-VT/180
		DOUBLE
		EXTEND
		MP	180/8ATT
		TS	TON1		# TON1 / 4T
# Page 1085
		EXTEND
		BZMF	OVRLINE
		TC	GETON2		# RESET Q POS IF CAME FROM MAXVTIM1

OVRLINE		CCS	Q
		TCF	OVRLINE1
MAXVTIM2	CA	JNDX1		# ABOVE VM, SO THRUST DOWN
		TS	JNDX
		CS	TON1
		TCF	OVRLINE2 +1

OVRLINE1	CS	-VT/180		# DRIFT AT V
		TS	VDT/180
OVRLINE2	CA	ZERO
		TS	TON1
GETON2		CA	VDT/180		# VDT/180, OR VMT/180 OR VT/180
		DOUBLE
		EXTEND
		MP	180/8ATT
		DOUBLE			# FOR SECOND BURN, A1
		TS	TON2		# = TON2 / 4T

		COM
		EXTEND
		BZMF	GETOFF
		TS	TON2
		CA	JNDX
		TS	JNDX1

GETOFF		CS	TON2		# TON2 / 4T
		EXTEND
		MP	VDT/180		# VDT/180, OR VT/180, OR VMT/180.
		TS	XD/360		# USE AS TEMP
		CS	VDT/180
		EXTEND
		BZF	TOFFOVFL	# OMIT THE DIVIDE IF DEN = 0.
		AD	-VT/180
		EXTEND
		MP	TON1		# TON1 /4T
		AD	XD/360		# TEMP = -VDT/180 / 2 TON2
		AD	LCX/360
		ZL
		XCH	L		# TEST THE DIVIDE
		EXTEND
		DV	VDT/180
		EXTEND
		BZF	GETOFF2		# DIVIDE OK

TOFFOVFL	CA	2JETT		# OVFL, USE  2T  FOR CONVENIENCE.
		TCF	TIMSCAL

# Page 1086
GETOFF2		XCH	L		# GET NUMERATOR.
		EXTEND
		DV	VDT/180		# C(A) = TOFF / 2T
		EXTEND
		MP	2JETT
TIMSCAL		TS	TOFF		# IN CS

		CAF	4JETT
		EXTEND
		MP	TON1		# C(TON1) = TON1 / 4T
		TS	TON1		# IN CS

		CAF	4JETT
		EXTEND
		MP	TON2		# C(TON2) = TON2 / 4T
		TS	TON2		# IN CS

		CA	ZERO		# CANNOT REDO AFTER TIMETST.  TUSED GONE
		TS	JETAG		# SET +0 TO SHOW ROLL DAP CALLED.

					# CAUSE THE TM OF BODY RATES VIA UPBUFF TO BE
					# INITIALIZED. ALSO CAUSE NEEDLES TO BE DONE ON EXIT
					# AND ON ALTERNATE PASSES THROUGH CM/DUMPR.

		CA	ONE
		TS	SW/NDX

# Page 1087
# TIMETEST SECTION FOR RCS
#
# ENTER WITH THREE TIME INTERVALS AND THE CORRESPONDING JET CODE INDEXES IN ERASABLE LOCS TON1, TOFF, TON2, JNDX
# JNDX1.  SECTION PROCESSES TIME INTERVALS FOR WTLST CALLS AND ASSURES THAT WTLST CALLS ARE MADE ONLY
# (1) FOR POS INTERVALS GREATER THAN A SPECIFIED MINIMUM (HERE CHOSEN AS 2 CS) AND
# (2) FOR THE INTERVALS THAT WILL BE EXECUTED WITHIN THE TIME REMAINING IN THE SAMPLE INTERVAL T (2 SEC).
# TIMETST ESTABLISHES 6 LOCS CONTAINING JET CODES AND CORRESPONDING TIME INTERVALS.  THUS:  TON1, T1BITS,
# TOFF, TBITS, TON2, T2BITS.  OF THESE THE FIRST 2 LOCS ARE TEMPORARY, FOR IMMEDIATE ACTION, IN GENERAL.
# SECTION JETCALL BELOW PROCESSES THIS LIST.

TIMETST		CA	TIME1		# CORRECT FOR POSSIBLE TIME1 OVFL.
		AD	POS1/2
		AD	POS1/2		# OVFL GUARANTEED.
		ADS	TUSED		# B(TUSED) =-TUSED =-OLTIME1

		CA	-T-3		# =-T +2 -5 (SEE SETJTAG)
					# THE +2 REQUIRED FOR PROPER BRANCH.
		ADS	TUSED		# TUSED = TIME(K)-TIME(K-1)-T+2

		CS	TWO		# USE 2 SINCE TIME3 UNCERTAIN TO 1
		AD	TON1
		EXTEND
		BZMF	TIMETST1
		INDEX	JNDX
		CAF	P/RJCODE
		TS	T1BITS

		CA	TON1
		ADS	TUSED
		EXTEND
		BZMF	TOFFTEST
		CA	ZERO
		TCF	TIMETST3
TIMETST1	CS	ONE
		TS	TON1
TOFFTEST	CS	TWO
		AD	TOFF
		EXTEND
		BZMF	TIMETST2
		CA	TOFF
		ADS	TUSED
		EXTEND
		BZMF	TON2TEST
		CA	ZERO
		TCF	TIMETST4
TIMETST2	CS	ONE
		TS	TOFF
TON2TEST	CS	TWO
		AD	TON2
		EXTEND
		BZMF	TIMETST5
# Page 1088
		INDEX	JNDX1
		CAF	P/RJCODE
		TS	T2BITS
		CA	TON2
		ADS	TUSED
		EXTEND
		BZMF	JETCALL1
		CA	ZERO
		TCF	TIMETST5 +1
TIMETST3	TS	TON1
		CS	ONE
TIMETST4	TS	TOFF
TIMETST5	CS	ONE
		TS	TON2

# SECTION  JETCALL  EXAMINES CONTENTS OF JET TIMES IN LIST, ESTABLISHES WTLST ENTRIES, AND EXECUTES CORRESPONDING
# JET CODES.  A POSITIVE NZ NUMBER IN A TIME REGISTER INDICATES THAT A WTLST CALL IS TO BE MADE, AND ITS JET BITS
# EXECUTED.  A +0 INDICATES THAT THE TIME INTERVAL DOES NOT APPLY, BUT THE CORRESPONDING JET BITS ARE TO BE
# EXECUTED.  A NEG NUMBER INDICATES THAT THE TIME INTERVAL HAS BEEN PROCESSED.  IN EVENT OF +0 OR -1, THE
# SUBSEQUENT TIME REGISTER IS EXAMINED FOR POSSIBLE ACTION.  THUS JET BITS TO BE EXECUTED MAY COME FROM MORE
# THAN ONE REGISTER.

JETCALL1	CA	ZERO
		TS	OUTTAG
		TS	NUJET
		TS	TBITS
		DXCH	TON1
		CCS	A
		TCF	JETCALL2	# CALL WTLST
JETCALL3	LXCH	NUJET		# WTLST ENTRIES COME HERE FROM JETCALL
		CS	ONE
		DXCH	TOFF
		CCS	A
		TCF	JETCALL2	# CALL WTLST
		LXCH	NUJET
		CS	ONE
		DXCH	TON2
		CCS	A
		TCF	JETCALL2	# CALL WTLST
		LXCH	NUJET
		TC	JETACTN		# C(A) = +0
JETCALL2	XCH	L		# SAVE JET BITS FOR AFTER WTLST CALL
		ADS	NUJET
		XCH	L
		AD	ONE		# RESTORE FOR CCS
		TC	WAITLIST
		EBANK=	AOG
		2CADR	JETCALL

JETACTN		CA	NUJET		# COME HERE WHEN DESIRED JET CODE IS KNOWN
# Page 1089
		EXTEND			# NO NEED TO SAVE OLD CODES
		WRITE	ROLLJETS	# SET RCHAN TO NEW BIT CONFIG.

		CCS	OUTTAG
		TC	TASKOVER
ROLLDUMP	TC	CM/FDAIR

					# EDIT DUMP AT ABOVE LOCATION.

# WAITLIST ENTRIES COME HERE.

JETCALL		CAF	BIT2		# CM/DSTBY =103D BIT2
		TS	OUTTAG		# SIGNIFY WTLST ENTRY
		MASK	CM/FLAGS	# IS SYSTEM DISABLED  $
		EXTEND
		BZF	JETACTN +1	# YES, QUENCH ROLL JETS, IF ON AND EXIT.
		ZL			# NO, CONTINUE.
		TCF	JETCALL3	# C(A) POS, C(L) = +0

# DEAD ZONE ENTRIES COME HERE.

DZCALL		CS	CMDAPMOD	# POSSIBLE VALUES OF CMDAPMOD: -1, +0, -0.
		MASK	BIT1
		TS	L		# C(L)=0 FOR -0: C(L)=1 FOR -1 OR +0.
		INDEX	A		# ERASABLE ORDER:  ROLLTM, ROLLC, ROLLC +1.
		CA	ROLLTM		# GET ROLL/180 OR ROLLC (/360).
		INDEX	L
		TS	A		# IF C(L)=1, STORE 'ROLLC' IN 'L'.
		AD	L		# (BOTH MUST BE SCALED DEG/180)
		TC	ANGOVCOR	# C(A)=ROLL/180 OR 2 ROLLC.
		TS	ROLLHOLD	# IF CMDAPMOD =-0, SAVE ROLL ANGLE.
					#	OTHERWISE, SAVE ROLL COMMAND.

		CA	ZERO		# COME HERE IF IN DZ, AND CANCEL JETS.
		EXTEND			# INHINT NOT NEEDED HERE.
		WRITE	ROLLJETS	# TURN OFF ALL ROLL JETS.
		TS	VDT/180		# SET =0 TO SHOW IN DEAD ZONE.
DZCALL1		TS	JETAG		# COME HERE WITH C(A)=0.
		TC	ROLLDUMP

# Page 1090
# CM ENTRY FDAI DISPLAY
#
# CALCULATE BY INTEGRATION THE ROLL ERROR BETWEEN THE 2 SEC CM/RCS UPDATES.  DISPLAY ATTITUDE ERRORS AS FOLLOWS:
#	ATM DAP:	DISPLAY ONLY ROLL ATTITUDE ERROR.
#	EXT ATM DAP:	PRESENT 3 ATTITUDE ERRORS RELATIVE TO THE APPROPRIATE BODY AXES EACH .1 SEC.
#				ROLL	ROLLC-ROLL
#				PITCH	ALFAC-ALFA
#				YAW	BETAC-BETA
#
# DURING ENTRY, THE FDAI NEEDLES HAVE FULL SCALE OF 67.5 DEG IN ROLL AND 16.875 DEG IN PITCH AND YAW.
# THE SUBROUTINE  NEEDLER  EXPECTS (ANGLE/180) AND SCALES TO 16.875 DEG FULL SCALE.

					# COME HERE EACH .1 SEC.  (CMDAPMOD=+1 COMES BELOW)
CM/FDAI		CS	PHIDOT		# INTEGRATE ROLL ERROR 'TWEEN 2SEC UPDATES
		EXTEND
		MP	CALFA		# FOR ASSUMED COORDINATION.
		EXTEND
		MP	HALF
		ADS	PAXERR1		# ROLL ERROR/360.  OVFL OK.

					# EDIT DUMP AT ABOVE LOCATION.
CM/FDAIR	CA	HALF
		EXTEND
		MP	PAXERR1		# FULL SCALE FOR FDAI (ROLL) IS 67.5 D
		TS	PAXERR		# .25 (ROLL ERROR/180) FOR FDAI NEEDLE.

					# PROGRAM TO FILE BODY RATES FOR TM ON ONE PASS AND
					# TO UPDATE THE NEEDLE DISPLAY ON THE NEXT.
					# SYNCHRONIZATION WITH CM/RCS IS USED SO THAT THE TM
					# IS DONE WITH THE ROLL SYSTEM AND NEEDLES START ON
					# THE SUBSEQUENT PASS.

CM/DUMPR	CS	SW/NDX		# COMBINED ALTERNATION SWITCH AND FILE
		TS	SW/NDX
		EXTEND			# INDEX.
		BZMF	CMTMFILE	# FILE STARTS WITH SW/NDX +1 AND GOES TO
					# ENDBUF.
					# INDEX IS POS FOR NEEDLES.

		TC	IBNKCALL
		CADR	NEEDLER

		TC	CM/END

					# INDEX IS NEG FOR TM FILE

CMTMFILE	AD	THREE
		EXTEND
		BZMF	SAVENDX
# Page 1091
		CA	TIME1		# INITIALIZE THE TM LIST IN UPBUFF.
		TS	CMTMTIME
		CS	THIRTEEN	# INITIALIZE COUNTER
SAVENDX		TS	SW/NDX		# A NEGATIVE NUMBER.
		EXTEND
		DCA	PREL
		INDEX	SW/NDX
		DXCH	ENDBUF -1
		CA	RREL
		INDEX	SW/NDX
		TS	ENDBUF +1

CM/END		CA	CM/SAVE
		TS	SR
					# DOES NOT PROTECT TEMK, SQ IN SPSIN/COS

		EXTEND
		DCA	T5IDLER2
		DXCH	T5LOC
		TC	RESUME

		EBANK=	T5LOC
T5IDLER2	2CADR	T5IDLOC

					# DEFINE THE FOLLOWING 17D REGISTERS IN UPBUFF TO BE
					# USED TO TELEMETER CM VEHICLE BODY RATE INFORMATION.
					# THE INFORMATION IS FILED EACH 0.2 SEC, GIVING 15D
					# DATA POINTS EACH 1 SEC.  TM LIST IS READ TWICE
					# EACH 2 SECONDS.
					#
					# THE SEQUENCE IS:	SP TIME		INITIAL TIME
					#			SWITCH		ALSO INDEX.
					#			P		ROLL RATE
					#			Q		PITCH RATE
					#			R		YAW RATE
					#			ETC.

#CMTMTIME	=	UPBUFF
#SW/NDX		=	UPBUFF +1
#ENDBUF		=	UPBUFF +16D

# Page 1092
# SPACER
#
# CONSTANTS USED IN THE ROLL CONTROL SYSTEM:
# CONSTANTS ARE THE FOLLOWING:  A = 9.1 DEG/SECSQ, VM = 20 DEG/SEC, 	T = 2 SEC, TCDU = .1 SEC,
# XMIN = 4 DEG, VMIN = 2 DEG/SEC, K = .25, A1 = 4.55 DEG/SECSQ, 	VI = 1 DEG/SEC, INTERCEPT WITH DZ SIDE
# XBUF = 4 DEG

-T-3		DEC	-203		# CS
VSQMIN		DEC	.61050061 E-3	# VSQ MIN/4 A PI = 4/(4 (9.1) 180)
2T/TCDU		=	OCT50		# T/TCDU EXP-14	   TCDU = .1SEC
180/8ATT	DEC	.61813187	# 180/(8 (9.1) 4)=(180/ATT)	EXP -3
-VMT/180	=	-VM/360K	# = 20 (2) / 180
2JETT		=	4SECS		# CS		2 (2) 100	INTEGER
4JETT		DEC	800		# CS		4 (2) 100	INTEGER
XMIN/360	DEC	182		# XMIN/360 = 4/ 360  EXP 14  = 182 INTEGER
-VM/360K	DEC	-.22222222	# =-20/( 360 (.25))
1/16A1		=	180/8ATT
					# 1/16A1   = 180/(16 A1 TT)
					#          = 180/(16 4.55 4)
XS/360		DEC	91		# =(XMIN +VI (T-1/K))/360 = 2/360 EXP 14
BUFLIM		=	XS/360		# 4/(2 360)

KTRCS		=	HALF		# KT = (.25) 2 = .5

# *** END OF TVCDAPS .011 ***



================================================
FILE: Comanche055/CONIC_SUBROUTINES.agc
================================================
# Copyright:	Public domain.
# Filename:	CONIC_SUBROUTINES.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Pages:	1262-1308
# Mod history:	2009-05-08 RSB	Adapted from the Colossus249/ file of the
#				same name, using Comanche055 page images.
#		2009-05-20 RSB	Corrected:  Fixed four interpreter
#				instructions.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#	Assemble revision 055 of AGC program Comanche by NASA
#	2021113-051.  10:28 APR. 1, 1969
#
#	This AGC program shall also be referred to as
#			Colossus 2A

# Page 1262
# PROGRAM DESCRIPTION -- ENTIRE CONIC SUBROUTINE LOG SECTION	DATE -- 1 SEPTEMBER 1967
# MOD NO. -- 0							LOG SECTION -- CONIC SUBROUTINES
# MOD BY KRAUSE							ASSEMBLY -- COLOSSUS REVISION 88
#
# FUNCTIONAL DESCRIPTION --
#	THE FOLLOWING SET OF SUBROUTINES SOLVE VARIOUS PROBLEMS INVOLVING THE TRAJECTORY PRODUCED BY A CENTRAL
# 	INVERSE-SQUARE FORCE ACTING ON A POINT MASS, AS OUTLINED IN THE CMC AND LGC LUNAR LANDING MISSION GSOP, SECTION
#	5.5.1.2.  A GENERAL USAGE POINT-OF-VIEW WAS TAKEN IN FORMULATING, MECHANIZING, AND SCALING THE SUBROUTINES,
#	RATHER THAN OPTIMIZING EACH FOR A PARTICULAR USE.  THEREFORE, MULTIPLE USAGE CAN BE MADE OF THE SUBROUTINES
#	INVOLVING ANY REALISTIC SET OF CONSTRAINTS.  IT SHOULD BE NOTED THAT ONLY ONE SET OF CODING IS USED, WHETHER THE
#	EARTH, MOON, OR ANY OTHER CELESTIAL BODY IS SPECIFIED AS THE CENTRAL BODY OF THE PROBLEM, PROVIDED ONE OBSERVES
#	THE INHERENT SCALE CHANGE REQUIRED IN POSITION, VELOCITY, MU, AND TIME, AS OUTLINED IN MISSION PROGRAMMING
#	DEFINITION MEMO NO. 10.  THIS CAN BE ACCOMPLISHED BY SIMPLY ADDING TO THE MUTABLE AND INITIALIZING THE SUBROUTINES
#	APPROPRIATELY.
#
#	DUE TO THE UNIFORMITY OF THE EQUATIONS INVOLVED, CODING WAS MINIMIZED BY TREATING INDIVIDUAL EQUATIONS AND
#	BLOCKS OF EQUATIONS AS SUBROUTINES OF LOWER RANK WHENEVER POSSIBLE.  AS A RESULT, THREE BY-PRODUCTS SUBROUTINES,
# 	DIRECTLY USABLE AS INDEPENDENT SUBROUTINES, WERE GENERATED.
#
# RESTRICTIONS --
#	THE ONLY LIMITATION IN THE SCOPE OF THE PROBLEM WHICH CAN BE SOLVED BY A PARTICULAR SUBROUTINE IS THE SCALING
#	LIMIT OF EACH PARAMETER AS SPECIFIED IN THE GSOP.  THESE SCALING LIMITS WERE CHOSEN SO THAT ALL FEASIBLE TRAJECTORIES
#	COULD BE HANDLED.
#
#	SINCE THE SUBROUTINES (EXCEPT KEPLER) USE COMMON SUBROUTINES OF LOWER RANK WHICH USE ERASABLE OTHER THAN
#	THE PUSHLIST (DUE TO ITS LIMITED SIZE) AND COMMON INTERPRETIVE SWITCHES, THE CONIC SUBROUTINES CANNOT BE ALLOWED
#	TO INTERRUPT EACH OTHER.  IT IS UP TO THE USER TO GUARANTEE THIS CONDITION.

# Page 1263
# PROGRAM DESCRIPTION -- KEPLER SUBROUTINE			DATE -- 11 OCTOBER 1967
# MOD NO. -- 1							LOG SECTION -- CONIC SUBROUTINES
# MOD BY KRAUSE							ASSEMBLY -- COLOSSUS 103 AND SUNDANCE 222
# MOD NO. -- 2 (AUGUST 1968) BY ROBERTSON: TO PERMIT BACKDATING BY MORE THAN ONE ORBITAL PERIOD.
# MOD NO. -- 3 (DEC 1968) BY ROBERTSON: SUPPRESSION OF X-MODULO-ING
# MOD NO. -- 4 (JAN 1969) BY ROBERTSON: CLEAR OVFIND AT KEPLER ENTRY
#
# FUNCTIONAL DESCRIPTION --
#	THIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND THE DESIRED TRANSFER TIME THROUGH WHICH THE STATE IS TO
#	BE UPDATED ALONG A CONIC TRAJECTORY, COMPUTES THE NEW, UPDATED STATE VECTOR.  THE TRAJECTORY MAY BE ANY CONIC
#	SECTION -- CIRCULAR, ELLIPTIC, PARABOLIC, HYPERBOLIC, OR RECTILINEAR WITH RESPECT TO THE EARTH OR THE MOON. THE
#	USE OF THE SUBROUTINE CAN BE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT
#	INTRODUCING ANY CODING CHANGES, ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.  AN ITERATION
#	TECHNIQUE IS UTILIZED IN THE COMPUTATION.
#
#	IF A NEGATIVE TIME-OF-FLIGHT IS INPUT, THE PROGRAM WILL SOLVE FOR THE STATE WHICH WOULD BE PRODUCED BY
#	EXTRAPOLATING THE POSITION BACKWARD IN TIME.
#
#	IF THE ABSOLUTE VALUE OF THE DESIRED TRANSFER TIME EXCEEDS THE ORBITAL PERIOD, THE SUBROUTINE, THROUGH A
# 	MODULAR TECHNIQUE, WILL COMPUTE THE STATE CORRESPONDING TO THE DESIRED TIME (WHETHER POSITIVE OR NEGATIVE).
#
# THE RESTRICTIONS ARE --
#	1.	(PREVIOUS RESTRICTION ON THE NEGATIVE DESIRED TRANSFER TIME IS NOW DELETED.)
#	2.	THE PARAMETERS IN THE PROBLEM CANNOT EXCEED THEIR SCALING LIMITS AS SPECIFIED IN THE GSOP.  IF
#		ANY OF THESE LIMITS ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.
#
# 	THE NUMBER OF ITERATIONS AND, THEREFORE, THE COMPUTATION SPEED IS DEPENDENT ON THE ACCURACY OF THE
# 	GUESS, XKEPNEW.  THE AGC COMPUTATION TIME IS APPROXIMATELY .061 SECONDS FOR INITIALIZATION, .065 SECONDS FOR THE
# 	FINAL COMPUTATIONS, PLUS .083 SECONDS FOR EACH ITERATION.
#
# REFERENCES --
#	R-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP, SECTION 5.5, SGA
#	MEMO 67-4.
#
# INPUT -- ERASABLE INITIALIZATION REQUIRED
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	RRECT		+29 FOR EARTH		DP INITIAL POSITION VECTOR IN METERS
#			+27 FOR MOON
# Page 1264
#	VRECT		+7 FOR EARTH		DP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND
#			+5 FOR MOON
#	X1 (38D)	NONE			INDEX REGISTER SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,
#							RESPECTIVELY, IS THE CENTRAL BODY
#	TAU		+28			DESIRED TRANSFER TIME IN CENTISECONDS (DP)
#							MAY BE POS OR NEG AND ABSOLUTE VALUE MAY BE GREATER OR LESS THAN ONE ORBITAL PERIOD.
#	XKEPNEW		+17 FOR EARTH		DP GUESS OF ROOT X OF KEPLERS EQN IN SQRT(METERS).SIGN SHOULD AGREE WITH THAT OF TAU.
#			+16 FOR MOON			AND ABS VALUE SHOULD BE LESS THAN THAT CORRESPONDING TO A PERIOD, VIZ, 2PI SQRT(SEMI-
#							MAJOR AXIS), FOR SPEED OF CONVERGENCE, BUT IF EITHER CONDITION FAILS, XKEPNEW IS RESET
#							BY KEPLER TO A POOR BUT VALID GUESS.
#	TC		+28			DP PREV. VALUE OF TIME IN CENTISECS. MUST BE LESS THAN ONE ORBITAL PERIOD.
#	XPREV		+17 FOR EARTH		DP PREV. VALUE OF X IN SQRT(METERS).  MUST BE LESS THAN AN X CORRESPONDING TO ONE
#			+16 FOR MOON			ORBITAL PERIOD, VIZ, 2PI SQRT(SEMI-MAJOR AXIS)
#
# SUBROUTINES CALLED --
#	DELTIME
#
# CALLING SEQUENCE AND NORMAL EXIT MODES --
#	KEPRTN-2	GOTO			# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.
#	KEPRTN-1		KEPLER		# RETURNS WITH XPREV IN MPAC.  PL IS AT 0.
#	KEPRTN		...			# CONTINUE
#
#	KEPLER MUST NOT BE CALLED DIRECTLY SINCE AN INTERRUPTION OF IT WOULD DESTROY THE ERASABLES IT NEEDS TO COMPLETE
#	THE INTERRUPTED JOB.  THEREFORE THE USER MUST CALL CSMCONIC OR LEMCONIC WHICH GUARANTEES NO INTERRUPTS AND WHICH
#	ALSO CALLS KEPPREP TO COMPUTE A GUESS OF XKEPNEW.
#
# ABORT EXIT MODES --
#	NONE
#
# OUTPUT --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	RCV		+29 FOR EARTH		DP TERMINAL POSITION VECTOR IN METERS
#			+27 FOR MOON
#	VCV		+7 FOR EARTH		DP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC
#			+5 FOR MOON
#	TC		+28			DP TRANSFER TIME IN CENTISECS TO WHICH KEPLER CONVERGED.  ALWAYS LESS THAN ONE PERIOD.
#	XPREV		+17 FOR EARTH		DP VALUE OF X IN SQRT(METERS) TO WHICH KEPLER CONVERGED. ALWAYS LESS THAN THE X
#			+16 FOR MOON			CORRESPONDING TO ONE PERIOD.
# Page 1265
#	FOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.
#
# DEBRIS --
#	PARAMETERS WHICH MAY BE OF USE --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	URRECT		+1			DP UNIT VECTOR OF INITIAL POSITION
#	R1		+29 FOR EARTH		DP MAGNITUDE OF INITIAL POSITION IN METERS
#			+27 FOR MOON
# 	ALPHA		-22 FOR EARTH		DP INVERSE OF SEMIMAJOR AXIS IN 1/METERS
#			-20 FOR MOON
#	TMODULO		+28			DP INTEGRAL NUMBER OF PERIODS IN CENTISECS, WHICH WAS SUBTRACTED FROM TAU. TO PRODUCE A
#							TAU. OF LESS THAN ONE PERIOD.
#
# PARAMETERS OF NO USE --
#	DP PARAMETERS -- EPSILONT, DELX, DELT, RCNORM, XMODULO, PLUS PUSHLIST REGISTERS 0 THROUGH 39D.

# Page 1266
# PROGRAM DESCRIPTION -- LAMBERT SUBROUTINE			DATE -- 1 SEPTEMBER 1967
# MOD NO. -- 0							LOG SECTION -- CONIC SUBROUTINES
# MOD BY KRAUSE							ASSEMBLY -- COLOSSUS REVISION 88
#
# FUNCTIONAL DESCRIPTION --
#	THIS SUBROUTINE CALCULATES THE INITIAL VELOCITY REQUIRED TO TRANSFER A POINT-MASS ALONG A CONIC TRAJECTORY
#	FROM AN INITIAL POSITION TO A TERMINAL POSITION IN A PRESCRIBED TIME INTERVAL.  THE RESULTING TRAJECTORY MAY BE
#	A SECTION OF A CIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE
#	SUBROUTINE CAN BE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY
#	CODING CHANGES, ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.  AN ITERATION TECHNIQUE IS
#	UTILIZED IN THE COMPUTATION.
#
# THE RESTRICTIONS ARE: --
#	1. RECTILINEAR TRAJECTORIES CANNOT BE COMPUTED.
#	2. AN ACCURACY DEGRADATION OCCURS AS THE COSINE OF THE TRUE ANOMALY DIFFERENCE APPROACHES +1.0.
#	3. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES
#	   AND LESS THAN 178 DEGREES 12.5 MINUTES.
#	4. NEGATIVE TRANSFER TIME IS AMBIGUOUS AND WILL RESULT IN NO SOLUTION.
#	5. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE
#	   LIMITS ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.
#
#	THE NUMBER OF ITERATIONS AND, THEREFORE, THE COMPUTATIONS SPEED IS DEPENDENT ON THE ACCURACY OF THE FIRST
#	GUESS OF THE INDEPENDENT VARIABLE, COGA.  THE AGC COMPUTATION TIME IS APPROXIMATELY
#	.105 SECONDS FOR INITIALIZATION, .069 SECONDS FOR FINAL COMPUTATIONS, PLUS .205 SECONDS FOR EACH ITERATION.
#
# REFERENCES --
#	R-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP -- SECTION 5.5, SGA MEMO 67-8,
#	SGA MEMO 67-4.
#
# INPUT -- ERASABLE INITIALIZATION REQUIRED
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	R1VEC		+29 FOR EARTH		DP INITIAL POSITION VECTOR IN METERS
#			+27 FOR MOON
#	R2VEC		+29 FOR EARTH		DP TARGET OR TERMINAL POSITION VECTOR IN METERS
#			+27 FOR MOON
#	TDESIRED	+28			DP DESIRED TRANSFER TIME IN CENTISECONDS
#	X1 (38D)	NONE			INDEX REGISTER SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,
#							RESPECTIVELY, IS THE CENTRAL BODY
#	GEOMSGN		NONE			SP +.5 IF DESIRED TRANSFER ANGLE IS LESS THAN 180 DEGREES, -.5 IF GREATER THAN 180 DEG.
#	GUESSW		NONE			AN INTERPRETER SWITCH TO BE SET IF NO GUESS OF COGA IS AVAILABLE, CLEAR IF A GUESS OF
# Page 1267
#							COGA IS TO BE USED BY LAMBERT
#	COGA		+5			DP GUESS OF COTANGNT OF FLIGHT PATH ANGLE (MEASURED FROM VERTICAL).  THIS WILL BE
#						IGNORED IF GUESSW IS SET.
#	NORMSW		NONE			AN INTERPRETER SWITCH TO BE SET IF UN IS TO BE AN INPUT TO THE SUBROUTINE, CLEAR IF
#							LAMBERT IS TO COMPUTE ITS OWN NORMAL (UN).
#	UN		+1			DP UNIT NORMAL TO THE DESIRED ORBIT PLANE IN THE DIRECTION OF THE RESULTING ANGULAR
#							MOMENTUM VECTOR.  THIS WILL BE IGNORED IF NORMSW IS CLEAR.
#	VTARGTAG	NONE			A S.P. TAG TO BE SET TO ZERO IF LAMBERT IS TO COMPUTE THE VELOCITY AT R2VEC AS WELL AS
#							AT R1VEC.
#
# SUBROUTINES CALLED --
#	GEOM, GETX, DELTIME, ITERATOR, LAMENTER (PART OF NEWSTATE)
#
# CALLING SEQUENCE AND NORMAL EXIT MODES --
#	L 	CALL			# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.
#	L+1		LAMBERT		# RETURNS WITH PL AT 0 AND WITH VVEC IN MPAC IF VTARGTAG WAS WAS NON-ZERO OR VTARGET
#					# 	IN MPAC IF VTARGTAG WAS ZERO
#	L+2	BON			# CONTINUE IF SOLNSW CLEAR SINCE SOLUTION IS ACCEPTABLE
#	L+3		SOLNSW
#	L+4		LAMABORT
#
#	IF A LAMBERT RESULT IS TO BE A FIRST GUESS FOR THE NEXT LAMBERT CALCULATION, COGA MUST BE PRESERVED AND
#	GUESSW MUST BE CLEAR FOR EACH SUCCEEDING LAMBERT CALL.
#
# ABORT EXIT MODES --
#	IF SOLNSW WAS SET UPON EXITING, EITHER LAMBERT WAS ASKED TO COMPUTE A TRANSFER TOO NEAR 0 OR 360 DEG, OR T
#	WAS TOO SMALL TO PRODUCE A REALISTIC TRANSFER BETWEEN R1VEC AND R2VEC.  IN EITHER CASE THE FIX MUST BE MADE
#	ACCORDING TO THE NEEDS OF THE PARTICULAR USER.  THE ABORT EXIT MODE MAY BE CODED AS ...
#	LAMBERT		DLOAD	ABS		# A MEASURE OF THE PROXIMITY TO 0 OR
#				1-CSTH		# 360 DEGREES.
#			DSU	BMN
#				ONEBIT
#				CHANGER2	# CHANGE R2VEC DIRECTION SLIGHTLY.
#			DLOAD	DAD
#				TDESIRED
#				SOMETIME
#			STCALL	TDESIRED	# INCRESE TDESIRED
#				LAMBERT
#
# OUTPUT --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
# Page 1268
#	--------	--------------		-----------------------
#	VVEC		+7 FOR EARTH		DP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND REQUIRED TO SATISFY THE BOUNDARY VALUE
#			+5 FOR MOON			PROBLEM.
#	VTARGET		+7 FOR EARTH		DP RESULTANT VELOCITY VECTOR AT R2VEC IN METERS/CENTISECOND.
#			+5 FOR MOON
#	SOLNSW		NONE			INTERPRETER SWITCH WHICH IS SET IF THE SUBROUTINE CANNOT SOLVE THE PROBLEM, CLEAR IF THE
#							SOLUTION EXISTS.
#
#	FOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.
#
# DEBRIS --
#	PARAMETERS WHICH MAY BE OF USE --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	SNTH		+1			DP SIN OF ANGLE BETWEEN R1VEC AND R2VEC
#	CSTH		+1			DP COSINE OF ANGLE
#	1-CSTH		+2			DP 1-CSTH
#	COGA		+5			DP COTAN OF INITIAL REQUIRED FLIGHT PATH ANGLE MEASURED FROM VERTICAL
#	P		+4			DP RATIO OF SEMILATUS RECTUM TO INITIAL RADIUS
#	R1A		+6			DP RATIO OF INITIAL RADIUS TO SEMIMAJOR AXIS
#	R1 (32D)	+29 FOR EARTH		DP INITIAL RADIUS IN METERS
#			+27 FOR MOON
#	UR1		+1			DP UNIT VECTOR OF R1VEC
#	U2		+1			DP UNIT VECTOR OF R2VEC
#
#	PARAMETERS OF NO USE --
#		DP PARAMETERS -- EPSILONL, CSTH-RHO, TPREV, TERRLAMB, R2, RTNLAMB (SP), PLUS PUSHLIST REGISTER 0 THROUGH 41D
#		ADDITIONAL INTERPRETIVE SWITCHES USED -- INFINFLG, 360SW, SLOPESW, ORDERSW

# Page 1269
# PROGRAM DESCRIPTION -- TIME-THETA SUBROUTINE			DATE -- 1 SEPTEMBER 1967
# MOD NO. -- 0							LOG SECTION -- CONIC SUBROUTINES
# MOD BY KRAUSE							ASSEMBLY -- COLOSSUS REVISION 88
#
# FUNCTIONAL DESCRIPTION --
#	THIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND A DESIRED TRUE-ANOMALY-DIFFERENCE THROUGH WHICH THE
#	STATE IS TO BE UPDATED ALONG A CONIC TRAJECTORY, CALCULATES THE CORRESPONDING TIME-OF-FLIGHT AND, IN ADDITION,
#	PROVIDES THE OPTION OF COMPUTING THE NEW UPDATED STATE VECTOR.  THE RESULTING TRAJECTORY MAY BE A SECTION OF A
#	CIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN BE
# 	EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,
#	ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.
#
# THE RESTRICTIONS ARE --
#	1. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES
#	   AND LESS THAN 178 DEGREES 12.5 MINUTES.
#	2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS
#	   ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.
#
#	THE AGC COMPUTATION TIME IS APPROXIMATELY .292 SECONDS.
#
# REFERENCES --
#	R-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5, SGA MEMO 67-8.
#
# INPUT -- ERASABLE INITIALIZATION REQUIRED
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	RVEC		+29 FOR EARTH		DP INITIAL POSITION VECTOR IN METERS
#			+27 FOR MOON
#	VVEC		+7 FOR EARTH		DP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND
#			+5 FOR MOON
#	SNTH		+1			DP SINE OF TRUE-ANOMALY-DIFFERENCE THROUGH WHICH THE STATE IS TO BE UPDATED
#	CSTH		+1			DP COSINE OF THE ANGLE
#	RVSW		NONE			AN INTERPRETIVE SWITCH TO BE SET IF ONLY TIME IS TO BE AN OUTPUT, CLEAR IF THE NEW STATE
#							IS TO BE COMPUTED ALSO.
#	X1 (38D)	NONE			INDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,
#							RESPECTIVELY, IS THE CENTRAL BODY.
#
# SUBROUTINES CALLED --
# Page 1270
#	PARAM, GEOM, GETX, DELTIME, NEWSTATE
#
# CALLING SEQUENCE AND NORMAL EXIT MODES --
#	IF ONLY TIME IS DESIRED AS OUTPUT --
#	L	SET	CALL		# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.
#	L+1		RVSW
#	L+2		TIMETHET	# RETURN WITH PL AT 0 AND T IN MPAC
#	L+3	...			# CONTINUE
#
#	IF THE UPDATE STATE VECTOR IS DESIRED AS WELL --
#	L	CLEAR	CALL		# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.
#	L+1		RVSW
#	L+2		TIMETHET	# RETURNS WITH PL AT 6.  THE INITIAL POSITION VECTOR IS IN 0D OF THE PUSHLIST AND
#					# THE INITIAL VELOCITY VECTOR IN MPAC.
#	L+3	STOVL	NEWVVEC
#	L+4	STADR
#	L+5	STORE	NEWRVEC		# NEWVVEC AND NEWRVEC ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS.
#	L+6	...			# CONTINUE.
#
# ABORT EXIT MODES --
#	IF COGAFLAG AND/OR INFINFLG IS SET AT THE EXIT TO TIME-THETA, TIME-THETA WILL TRANSFER TO POODOO WITH
#	AN ALARM CODE (ORIGINALLY 00607), AND NOT RETURN TO THE CALLING PROGRAM.  (PCR 692 AND 721).
#
# OUTPUT --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	T (30D)		+28			DP TRANSFER TIME IN CENTISECONDS
#	INFINFLG	NONE			AN INTERPRETIVE SWITCH WHICH IS SET IF THE TRANSFER ANGLE REQUIRES CLOSURE THROUGH
#							INFINITY (NO SOLUTION), CLEAR IF A PHYSICAL SOLUTION IS POSSIBLE.
#	COGAFLAG	NONE			AN INTERPRETIVE SWITCH WHICH IS SET IF RESTRICTION 1 HAS BEEN VIOLATED (NO SOLUTION),
#							CLEAR IF NOT.
#
#	IN ADDITION, IF RVSW IS CLEAR, THE FOLLOWING ARE OUTPUT --
#	MPAC - 		+7 FOR EARTH		DP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC.
#	   MPAC+5	+5 FOR MOON
#	0D - 5D		+29 FOR EARTH		DP TERMINAL POSITION VECTOR IN METERS (PL AT 6D)
#			+27 FOR MOON
#
#	FOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.
# Page 1271
#
# DEBRIS --
#	PARAMETERS WHICH MAY BE OF USE --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	R1 (32D)	+29 FOR EARTH		DP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS
#			+27 FOR MOON
#	R1A		+6			DP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)
#	P		+4			DP RATIO OF SEMILATUS RECTUM TO R1
#	COGA		+5			DP COTAN OF ANGLE BETWEEN RVEC AND VVEC
#	UR1		+1			DP UNIT VECTOR OF RVEC
#	U2		+1			DP UNIT VECTOR OF VVEC
#	UN		+1			DP UNIT VECTOR OF UR1*U2
#
# PARAMETERS OF NO USE --
#	SP PARAMETERS -- RTNTT, GEOMSGN, RTNPRM, MAGVEC2=R2 (DP), PLUS PUSHLIST LOCATIONS 0-11D, 14D-21D, 24D-39D, 41D
#	ADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW, 360SW

# Page 1272
# PROGRAM DESCRIPTION -- TIME-RADIUS SUBROUTINE		DATE -- 11 OCTOBER 1967
# MOD NO. -1						LOG SECTION -- CONIC SUBROUTINES
# MOD BY KRAUSE						ASSEMBLY -- COLOSSUS REVISION 88
#
# FUNCTIONAL DESCRIPTION --
#	THIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR AND A DESIRED RADIUS TO WHICH THE
#	STATE IS TO BE UPDATED ALONG A CONIC TRAJECTORY, CALCULATES THE CORRESPONDING TIME-OF-FLIGHT AND, IN ADDITION,
#	PROVIDES THE OPTION OF COMPUTING THE NEW UPDATED STATE VECTOR.  THE RESULTING TRAJECTORY MAY BE A SECTION OF A
#	CIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN BE
#	EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,
#	ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.
#
#	IF THE DESIRED RADIUS IS BEYOND THE RADIUS OF APOCENTER OF THE CONIC OR BELOW THE RADIUS OF PERICENTER,
#	APSESW WILL BE SET AND THE SUBROUTINE WILL RETURN THE APOCENTER OR PERICENTER SOLUTION, RESPECTIVELY.
#
# THE RESTRICTIONS ARE --
#	1. THE ANGLE BETWEEN ANY POSITION VECTOR AND ITS VELOCITY VECTOR MUST BE GREATER THAN 1 DEGREE 47.5 MINUTES
#	   AND LESS THAN 178 DEGREES 12.5 MINUTES.
#	2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS
#	   EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.
#	3. AN ACCURACY DEGRADATION OCCURS AS THE SENSITIVITIES OF TIME AND UPDATED STATE VECTOR TO CHANGES IN
#	   RDESIRED INCREASE.  THIS WILL OCCUR NEAR EITHER APSIS OF THE CONIC AND WHEN THE CONIC IS NEARLY CIRCULAR.  IN
#	   PARTICULAR, IF THE CONIC IS AN EXACT CIRCLE, THE PROBLEM IS UNDEFINED AND THE SUBROUTINE WILL ABORT.
#
#	THE AGC COMPUTATION TIME IS APPROXIMATELY .363 SECONDS.
#
# REFERENCES --
#	R-479, MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5, SGA MEMO 67-8.
#
# INPUT -- ERASABLE INITIALIZATION REQUIRED.
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	RVEC		+29 FOR EARTH		DP INITIAL POSITION VECTOR IN METERS
#			+27 FOR MOON
#	VVEC		+7 FOR EARTH		DP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND
#			+5 FOR MOON
#	RDESIRED	+29 FOR EARTH		DP TERMINAL RADIAL DISTANCE ON CONIC TRAJECTORY FOR WHICH TRANSFER TIME IS TO BE
#			+27 FOR MOON			COMPUTED
#	SGNRDOT		NONE			SP TAG SET TO +.5 OR -.5 ACCORDING TO WHETHER THE RADIAL VELOCITY AT RDESIRED IS TO BE
#							POSITIVE OR NEGATIVE, RESPECTIVELY.   THIS TAG REDUCES THE DOUBLE-VALUED PROBLEM TO A
# Page 1273
#							SINGLE-VALUED PROBLEM.
#	X1 (38D)	NONE			INDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,
#							RESPECTIVELY, IS THE CENTRAL BODY.
#	RVSW		NONE			AN INTERPRETIVE SWITCH TO BE SET IF ONLY TIME IS TO BE AN OUTPUT, CLEAR IF THE NEW STATE
#							IS TO BE COMPUTED ALSO.
#
# SUBROUTINES CALLED --
#	PARAM, GEOM, GETX, DELTIME, NEWSTATE
#
# CALLING SEQUENCE AND NORMAL EXIT MODES --
#	IF ONLY TIME IS DESIRED AS OUTPUT --
#	L	SET	CALL		# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.
#	L+1		RVSW
#	L+2		TIMERAD		# RETURN WITH PL AT 0 AND T IN MPAC
#	L+3	...			# CONTINUE
#
#	IF THE UPDATE STATE VECTOR IS DESIRED AS WELL --
#	L	CLEAR	CALL		# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.
#	L+1		RVSW
#	L+2		TIMERAD		# RETURNS WITH PL AT 6.  THE INITIAL POSITION VECTOR IS IN 0D OF THE PUSHLIST AND
#					# THE INITIAL VELOCITY VECTOR IN MPAC.
#	L+3	STOVL	NEWVVEC
#	L+4	STADR
#	L+5	STORE	NEWRVEC		# NEWVVEC AND NEWRVEC ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS.
#	L+6	...			# CONTINUE
#
# ABORT EXIT MODES --
#	IF SOLNSW AND/OR COGAFLAG AND/OR INFINFLG IS SET AT THE EXIT TO TIME-RADIUS, TIME-RADIUS WILL TRANSFER
#	TO POODOO WITH AN ALARM CODE (ORIGINALLY 00607), AND NOT RETURN TO THE CALLING PROGRAM.  (PCR 692 & 721).
#
# OUTPUT --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	T (30D)		+28			DP TRANSFER TIME IN CENTISECONDS.
#	INFINFLG	NONE			AN INTERPRETIVE SWITCH WHICH IS SET IF RDESIRED AND SGNRDOT REQUIRE CLOSURE THROUGH
#							INFINITY (NO SOLUTION), CLEAR IF A PHYSICAL SOLUTION IS POSSIBLE.
#	COGAFLAG	NONE			AN INTERPRETIVE SWITCH WHICH IS SET IF RESTRICTION 1 HAS BEEN VIOLATED (NO SOLUTION),
#							CLEAR IF NOT.
#	APSESW		NONE			AN INTERPRETIVE SWITCH WHICH IS SET IF RDESIRED WAS GREATER THAN RADIUS OF APOCENTER OR
# Page 1274
#							LESS THAN RADIUS OF PERICENTER.  THE APOCENTER OR PERICENTER SOLUTION, RESPECTIVELY,
#							WILL THEN BE RETURNED.  THE SWITCH IS CLEAR IF RDESIRED WAS BETWEEN PERICENTER AND
#							APOCENTER.
#	SOLNSW		NONE			AN INTERPRETIVE SWITCH WHICH IS SET IF THE CONIC IS SO CLOSE TO A CIRCLE THAT THE TERMIN
#							POINT IS AMBIGUOUS, VIOLATING RESTRICTION 3.  IF ECCENTRICITY IS GREATER THAN 2-TO-THE-
#							MINUS-18, THE SWITCH IS CLEAR.
#
#	IN ADDITION, IF RVSW IS CLEAR, THE FOLLOWING ARE OUTPUT --
#	MPAC - 		+7 FOR EARTH		DP TERMINAL VELOCITY VECTOR IN METERS/CENTISEC.
#	   MPAC+5	+5 FOR MOON
#	0D - 5D		+29 FOR EARTH		DP TERMINAL POSITION VECTOR IN METERS (PL AT 6D)
#			+27 FOR MOON
#
#	FOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.
#
# DEBRIS --
#	PARAMETERS WHICH MAY BE OF USE --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	R1 (32D)	+29 FOR EARTH		DP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS
#			+27 FOR MOON
#	R1A		+6			DP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)
#	P		+4			DP RATIO OF SEMILATUS RECTUM TO R1
#	COGA		+5			DP COTAN OF ANGLE BETWEEN RVEC AND VVEC
#	UR1		+1			DP UNIT VECTOR OF RVEC
#	U2		+1			DP UNIT VECTOR OF VVEC
#	UN		+1			DP UNIT VECTOR OF UR1*U2
#	CSTH		+1			DP COSINE OF TRUE ANOMALY DIFFERENCE BETWEEN RVEC AND RDESIRED.
#	SNTH		+1			DP SINE OF TRUE ANOMALY DIFFERENCE.
#
# 	PARAMETERS OF NO USE --
#		SP PARAMETERS -- RTNTT, GEOMSGN, RTNPRM, MAGVEC2=R2 (DP), PLUS PUSHLIST LOCATIONS 0-11D, 14D-21D, 24D-39D, 41D
#		ADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW, 360SW
#

# Page 1275
# PROGRAM DESCRIPTION -- APSIDES SUBROUTINE		DATE -- 1 SEPTEMBER 1967
# MOD NO. -- 0						LOG SECTION -- CONIC SUBROUTINES
# MOD BY KRAUSE						ASSEMBLY -- COLOSSUS REVISION 88
#
# FUNCTIONAL DESCRIPTION --
#	THIS SUBROUTINE, GIVEN AN INITIAL STATE VECTOR, CALCULATES THE RADIUS OF PERICENTER AND OF APOCENTER AND THE
#	ECCENTRICITY OF THE RESULTING CONIC TRAJECTORY, WHICH MAY BE A STRAIGHT LINE,
#	CIRCLE, ELLIPSE, PARABOLA, OR HYPERBOLA WITH RESPECT TO THE EARTH OR THE MOON.  THE USE OF THE SUBROUTINE CAN
#	BE EXTENDED USING OTHER PRIMARY BODIES BY SIMPLE ADDITIONS TO THE MUTABLE WITHOUT INTRODUCING ANY CODING CHANGES,
#	ACCEPTING THE INHERENT SCALE FACTOR CHANGES IN POSITION AND VELOCITY.
#
# THE RESTRICTIONS ARE --
#	1. IF APOCENTER IS BEYOND THE SCALING OF POSITION, THE SCALE FACTOR LIMIT (536,870,910 METERS WITH RESPECT
#	   TO THE EARTH OR 134,217,727.5 METERS WITH RESPECT TO THE MOON) WILL BE RETURNED.
#	2. THE PARAMETERS IN THE PROBLEM MUST NOT EXCEED THEIR SCALING LIMITS SPECIFIED IN THE GSOP.  IF THE LIMITS
#	   ARE EXCEEDED, THE RESULTING SOLUTION WILL BE MEANINGLESS.
#
#	THE AGC COMPUTATION TIME IS APPROXIMATELY .103 SECONDS.
#
# REFERENCES --
#	MISSION PROGRAMMING DEFINITION MEMO NO. 10, LUNAR LANDING MISSION GSOP-SECTION 5.5.
#
# INPUT -- ERASABLE INITIALIZATION REQUIRED
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	RVEC		+29 FOR EARTH		DP INITIAL POSITION VECTOR IN METERS
#			+27 FOR MOON
#	VVEC		+7 FOR EARTH		DP INITIAL VELOCITY VECTOR IN METERS/CENTISECOND
#			+5 FOR MOON
#	X1 (38D)	NONE			INDEX REGISTER TO BE SET TO -2D OR -10D ACCORDING TO WHETHER THE EARTH OR MOON,
#							RESPECTIVELY, IS THE CENTRAL BODY.
#
# SUBROUTINES CALLED --
#	PARAM, GEOM
#
# CALLING SEQUENCE AND NORMAL EXIT MODES --
# Page 1276
#	IF ONLY TIME IS DESIRED AS OUTPUT --
#	L	CALL			# MUST BE IN INTERPRETIVE MODE BUT OVFIND ARBITRARY.
#	L+1		APSIDES		# RETURNS WITH PL AT 0, RADIUS OF APOCENTER IN MPAC AND RADIUS OF PERICENTER IN 0D
#	L+2	STODL	APOAPSE
#	L+3		0D
#	L+4	STORE	PERIAPSE	# APOAPSE AND PERIAPSE ARE SYMBOLIC REPRESENTATIONS OF THE USERS LOCATIONS
#	L+5	...			# CONTINUE
#
# OUTPUT --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	MPAC		+29 FOR EARTH		DP RADIUS OF APOCENTER IN METERS
#			+27 FOR MOON
#	0D-1D		+29 FOR EARTH		DP RADIUS OF PERICENTER IN METERS
#			+27 FOR MOON
#	ECC		+3			DP ECCENTRICITY OF CONIC TRAJECTORY
#
#	FOR OTHER OUTPUT WHICH MAY BE OF USE, SEE DEBRIS.
#
# DEBRIS --
#	PARAMETERS WHICH MAY BE OF USE --
#			 SCALE FACTOR
#	VARIABLE	IN POWERS OF 2		DESCRIPTION AND REMARKS
#	--------	--------------		-----------------------
#	R1 (32D)	+29 FOR EARTH		DP MAGNITUDE OF INITIAL POSITION VECTOR, RVEC, IN METERS
#			+27 FOR MOON
#	R1A		+6			DP RATIO OF R1 TO SEMIMAJOR AXIS (NEG. FOR HYPERBOLIC TRAJECTORIES)
#	P		+4			DP RATIO OF SEMILATUS RECTUM TO R1
#	COGA		+5			DP COTAN OF ANGLE BETWEEN RVEC AND VVEC
#	UR1		+1			DP UNIT VECTOR OF RVEC
#	U2		+1			DP UNIT VECTOR OF VVEC
#	UN		+1			DP UNIT VECTOR OF UR1*U2
#	MAGVEC2		+7 FOR EARTH		DP MAGNITUDE OF VVEC
#			+5 FOR MOON
#
#	PARAMETERS OF NO USE --
#		SP PARAMETERS -- RTNAPSE, GOMSGN, RTNPRM, PLUS PUSHLIST LOCATIONS 0-5, 10D-11D, 14D-21D, 31D-38D.
#		ADDITIONAL INTERPRETIVE SWITCHES USED -- NORMSW

		SETLOC	CONICS
# Page 1277
		BANK

		COUNT	12/CONIC

		EBANK=	UR1
KEPLERN		SETPD	BOV
			0
			+1
		VLOAD*
			MUTABLE,1
		STOVL	14D
			RRECT
		UNIT	SSP
			ITERCTR
			20D
		STODL	URRECT
			36D
		STOVL	R1
			RRECT
		DOT	SL1R
			VRECT
		DMP	SL1R
			1/ROOTMU	# 1/ROOTMU (-17 OR -14)
		STOVL	KEPC1		# C1=R.V/ROOTMU (+17 OR +16)

			VRECT
		VSQ	DMPR
			1/MU		# 1/MU (-34 OR -28)
		DMP	SL3
			R1
		DSU	ROUND
			D1/64
		STORE	KEPC2		# C2=RV.V/MU -1 (+6)

		BDSU	SR1R
			D1/64
		DDV
			R1
		STORE	ALPHA		# ALPHA=(1-C2)/R1 (-22 OR -20)

		BPL	DLOAD		# MAXIMUM X DEPENDS ON TYPE OF CONIC
			1REV
			-50SC		# -50SC (+12)
		DDV	BOV
			ALPHA
			STOREMAX
		SQRT	GOTO
			STOREMAX
# Page 1278
1REV		SQRT	BDDV
			2PISC		# 2PISC (+6)
		BOV
			STOREMAX
STOREMAX	STORE	XMAX
		DMP	PDDL
			1/ROOTMU
			ALPHA
		NORM	PDDL
			X1
		SL*	DDV
			0 	-6,1
		BOV	BMN
			MODDONE
			MODDONE		# MPAC=PERIOD
PERIODCH	PDDL	ABS		# 0D=PERIOD
			TAU.
		DSU	BMN
			0D
			MODDONE
		SIGN
			TAU.
		STODL	TAU.
		GOTO
			PERIODCH
MODDONE		SETPD	DLOAD
			0
			XKEPNEW
		STORE	X
		SIGN	BZE
			TAU.
			BADX
		BMN	ABS
			BADX
		DSU	BPL
			XMAX
			BADX
STORBNDS	DLOAD	BPL
			TAU.
			STOREMIN
		DLOAD	DCOMP
			XMAX
		STODL	XMIN
			KEPZERO
		STCALL	XMAX
			DXCOMP
STOREMIN	DLOAD
			KEPZERO
		STORE	XMIN
DXCOMP		DLOAD	DMPR
# Page 1279
			TAU.
			BEE22
		ABS
		STODL	EPSILONT
			XPREV
XDIFF		BDSU
			X
		STORE	DELX

KEPLOOP		DLOAD	DSQ
			X		# X=XKEP
		NORM	PUSH		# 0D=XSQ (+34 OR +32 -N1)	PL AT 2
			X1
		DMP	SRR*
			ALPHA
			0 	-6,1
		STCALL	XI		# XI=ALPHA XSQ (+6)
			DELTIME
		BOV	BDSU
			TIMEOVFL	# UNLIKELY
			TAU.
		STORE	DELT		# DELT=DELINDEP
		ABS	BDSU
			EPSILONT
		BPL	DLOAD
			KEPCONVG
			T
		DSU	NORM
			TC
			X1
		PDDL	NORM
			DELX
			X2
		XSU,1	DMP
			X2
			DELT
		SLR*	DDV
			1,1
		SR1	PUSH		# 0D=TRIAL DELX		PL AT 2
		BPL	DLOAD
			POSDELX
			X
		STORE	XMAX		# MOVE MAX BOUND IN
		BDSU	DSU		#			PL AT 0
			XMIN
		BOV	BPL
			NDXCHNGE
			NDXCHNGE
		DLOAD	GOTO
# Page 1280
			0D
			NEWDELX

NDXCHNGE	DLOAD	DSU
			XMIN
			X
		DMPR	GOTO		# TO FORCE MPAC +2 TO ZERO
			DP9/10
			NEWDELX

POSDELX		DLOAD
			X
		STORE	XMIN		# MOVE MIN BOUND IN
		BDSU	DSU		#			PL AT 0
			XMAX
		BOV	BMN
			PDXCHNGE
			PDXCHNGE
		DLOAD
			0D
NEWDELX		STORE	DELX
		BZE	DAD
			KEPCONVG
			X
		STODL	X
			T
		STORE	TC
BRNCHCTR	RTB	BHIZ
			CHECKCTR
			KEPCONVG
		GOTO
			KEPLOOP		# ITERATE

PDXCHNGE	DLOAD	DSU
			XMAX
			X
		DMPR	GOTO		# TO FORCE MPAC +2 TO ZERO
			DP9/10
			NEWDELX

BADX		DLOAD	SR1
			XMAX
		SIGN
			TAU.
		STCALL	X
			STORBNDS
# Page 1281
TIMEOVFL	DLOAD	BMN		# X WAS TOO BIG
			X
			NEGTOVFL
		STORE	XMAX
CMNTOVFL	DLOAD	SR1
			DELX
		STORE	DELX
		BZE	BDSU
			KEPRTN
			X
		STODL	X
			TC
		STCALL	T
			BRNCHCTR
NEGTOVFL	STCALL	XMIN
			CMNTOVFL
KEPCONVG	DLOAD	SR4R
			R1
		DSU	VXSC
			XSQC(XI)
			URRECT
		VSL1	PDDL		# 0D=(R1-XSQC(XI))URRECT (+33 OR +31)
			X
		DSQ	NORM
			X1
		DMPR	DMPR
			1/ROOTMU
			X
		DMP	SRR*
			S(XI)
			0 	-7,1
		BDSU
			T
		SL1	VXSC
			VRECT
		VSL1	VAD		#				PL AT 0
		VSL4
		STORE	RCV		# RCV (+29 OR +27)

		ABVAL	NORM
			X2
		STODL	RCNORM
			XI
		DMPR	DSU
			S(XI)
			D1/128
		DMP	SL1R
			ROOTMU
		DMP	SLR*
# Page 1282
			X
			0 	-3,2
		DDV	VXSC
			RCNORM
			URRECT
		VSL1	PDDL		# 0D=URRECT(XI S(XI)-1)X ROOTMU/RCV (+15
			XSQC(XI)	# OR +13)			PL AT 6
		SLR*	DDV
			0 	-4,2
			RCNORM
		BDSU	VXSC
			D1/256
			VRECT
		VAD	VSL8
		STADR			#				PL AT 0
		STODL	VCV		# VCV (+7 OR +5)
			T
		STODL	TC
			X
		STCALL	XPREV
			KEPRTN

# Page 1283
DELTIME		EXIT			# MPAC=XI (+6), 0D=XSQ (+34 OR +32 -N1)
		TC	POLY
		DEC	8
		2DEC	.083333334

		2DEC	-.266666684

		2DEC	.406349155

		2DEC	-.361198675

		2DEC	.210153242

		2DEC	-.086221951

		2DEC	.026268812

		2DEC	-.006163316

		2DEC	.001177342

		2DEC	-.000199055

		TC	INTPRET
		STODL	S(XI)
			XI
		EXIT
		TC	POLY
		DEC	8
		2DEC	.031250001

		2DEC	-.166666719

		2DEC	.355555413

		2DEC	-.406347410

		2DEC	.288962094

		2DEC	-.140117894

		2DEC	.049247387

		2DEC	-.013081923

		2DEC	.002806389

		2DEC	-.000529414

		TC	INTPRET
# Page 1284
		DMP	SRR*		#				PL AT 0
			0D
			0 	-5,1
		STORE	XSQC(XI)	# XSQC(XI) (+33 OR +31)
		DMP	SL1
			KEPC1
		RTB	PDDL		# XCH WITH PL. 0D=C1 XSQ C(XI) (+49 OR +46)
			TPMODE		#				PL AT 0,3
		DMP	SRR*
			S(XI)
			0 	-5,1
		DMP	SL1
			KEPC2
		RTB	PDDL		# 3D=C2 XSQ S(XI) (+35 OR +33) 	PL AT 6
			TPMODE
			R1
		SR	TAD		#				PL AT 3
			6
		NORM	DMP		# TO PRESERVE SIGNIF.
			X1
			X
		SR*	TAD		# X(C2 XSQ S(XI) +R1) (+49 OR +46)  PL AT 0
			0 	-3,1
		SL4R	DMPR
			1/ROOTMU
		STORE	T
		RVQ

# Page 1285
ITERATOR	BONCLR	DLOAD
			SLOPESW
			FIRSTIME
			DEP
		DSU	NORM
			DEPREV
			X1
		PDDL	NORM
			DELINDEP
			X2
		XSU,1	DMP
			X2
			DELDEP
		SLR*	DDV		#				PL UP 2
			1,1
		SR1	BOFF
			ORDERSW
			SGNCHECK
		ABS	SIGN		# IN CASE 2ND DERIV. CHANGED SIGN, MUST
			DELDEP		# DISREGARD IT TO FIND MIN.

SGNCHECK	PUSH	BPL		# TRIAL DELINDEP		PL DOWN 2
			POSDEL
		DLOAD	BON
			INDEP
			ORDERSW
			MINCHECK
		STORE	MAX		# IF NOT 2ND ORDER, CAN MOVE MAX BOUND IN.

MINCHECK	BDSU	DSU
			MIN
		BOV	BPL
			MODNGDEL
			MODNGDEL
		GOTO
			DELOK

MODNGDEL	DLOAD	DSU		# TRIAL DELINDEP WOULD EXCEED MIN BOUND
			MIN
			INDEP
		DMP	GOTO
			DP9/10
			NEWDEL

FIRSTIME	DLOAD	DMP
			MIN
			TWEEKIT		# DLOAD TWEEKIT(40D) SENSITIVE TO CHANGE.
		PDDL	DMP		# S2(41D) SHOULDNT CONTAIN HI ORDER ONES
# Page 1286
			MAX
			TWEEKIT
		DSU
		SIGN	GOTO
			DELDEP
			SGNCHECK

POSDEL		DLOAD	BON
			INDEP
			ORDERSW
			MAXCHECK
		STORE	MIN		# IF NOT 2ND ORDER, CAN MOVE MIN BOUND IN.

MAXCHECK	BDSU	DSU
			MAX
		BOV	BMN
			MODPSDEL
			MODPSDEL
DELOK		DLOAD
			0D
NEWDEL		STORE	DELINDEP
		RVQ

MODPSDEL	DLOAD	DSU
			MAX
			INDEP
		DMP	GOTO
			DP9/10
			NEWDEL

CHECKCTR	CS	ONE
		INDEX	FIXLOC
		AD	ITERCTR
		INDEX	FIXLOC
		TS	ITERCTR
		TS	MPAC
		TC	DANZIG

# Page 1287
NEWSTATE	DLOAD	SR4R
			R1
		DSU	VXSC
			XSQC(XI)
			UR1
		VSL1	PDDL		# 0D=(R1-XSQC(XI))UR1 (+33 OR 31) PL AT 6
			X
		DSQ	NORM
			X1
		DMPR	DMPR
			1/ROOTMU
			X
		DMP	SRR*
			S(XI)
			0 	-7,1
		BDSU
			T
		SL1	VXSC
			VVEC
		VSL1	VAD		#				PL AT 0
		VSL4	PUSH
		ABVAL
LAMENTER	NORM
			X1
		STODL	R2
			XI
		DMP	DSU
			S(XI)
			D1/128
		DMP	SL1R
			ROOTMU
		DMP	SLR*
			X
			0 -3,1
		DDV	VXSC
			R2
			UR1
		VSL1	PDDL		# 6D=V2VEC PART (+15 OR 13)	PL AT 12
			XSQC(XI)
		SLR*	DDV
			0 -4,1
			R2
		BDSU
			D1/256
		VXSC	VAD		#				PL AT 6
			VVEC
		VSL8	RVQ

# Page 1288
		SETLOC	CONICS1
		BANK

		COUNT	04/CONIC
# DO NOT DISTURB THE ORDER OF THESE CDS, OVERLAYS HAVE BEEN MADE.
BEE17		DEC	0		# KEEP WITH D1/8 2DEC 1.0B-17 (0000004000)
D1/8		2DEC	1.0 B-3

D1/128		2DEC	1.0 B-7

D1/64		2DEC	1.0 B-6

D1/4		2DEC	1.0 B-2

D1/16		2DEC	1.0 B-4

D1/32		2DEC	1.0 B-5

D1/1024		2DEC	1.0 B-10

D1/256		2DEC	1.0 B-8

DP9/10		2DEC	.9

KEPZERO		EQUALS	LO6ZEROS
-50SC		2DEC	-50.0 B-12

2PISC		2DEC	6.28318530 B-6

BEE19		EQUALS	D1/32 -1	# 2DEC 1.0 B-19 (00000 01000)
BEE22		EQUALS	D1/256 -1	# 2DEC 1.0 B-22 (00000 00100)
ONEBIT		2DEC	1.0 B-28

COGUPLIM	2DEC	.999511597

COGLOLIM	2DEC	-.999511597

# Page 1289
		SETLOC	CONICS
		BANK

		COUNT	12/CONIC

TIMETHET	STQ	SETPD		#				PL AT 0
			RTNTT
			0
		BOV
			+1
		VLOAD	PDVL		# SETUP FOR PARAM CALL		PL AT 6
			RVEC
			VVEC
		CALL
			PARAM
		BOV	CALL		#				PL AT 0
			COGAOVFL
			GETX
COMMNOUT	DLOAD	BON
			XI
			INFINFLG
			ABTCONIC
		CLEAR	CALL
			COGAFLAG
			DELTIME
		BON	CALL
			RVSW
			RTNTT
			NEWSTATE
		GOTO
			RTNTT

COGAOVFL	SETGO
			COGAFLAG
			ABTCONIC
		BANK	4
		SETLOC	CONICS1
		BANK
		COUNT*	$$/CONIC
PARAM		STQ	CLEAR		# MPAC=V1VEC, 0D=R1VEC		PL AT 6
			RTNPRM
			NORMSW
		CLEAR
			COGAFLAG
		SSP	CALL
			GEOMSGN
			37777		# GAMMA ALWAYS LESS THAN 180DEG
			GEOM		# MPAC=SNGA (+1), 0D=CSGA (+1)	PL AT 2
		STODL	36D		# 36D=SIN GAMMA (+1)		PL AT 0
# Page 1290
		SR	DDV
			5

			36D
		STOVL*	COGA
			MUTABLE,1
		STODL	1/MU
			MAGVEC2
		DSQ	NORM
			X1
		DMPR	DMP
			1/MU
			R1
		SRR*
			0 	-3,1
		PUSH	BDSU		# 0D=R1 V1SQ/MU (+6)		PL AT 2
			D1/32
		STODL	R1A		# R1A (+6)			PL AT 0

		DMP	NORM
			36D
			X1
		DMP	SR*
			36D
			0 	-4,1
		STCALL	P		# P (+4)
			RTNPRM

# Page 1291
GEOM		UNIT			# MPAC=V2VEC, 0D=R1VEC		PL AT 6
		STODL	U2		# U2 (+1)
			36D
		STOVL	MAGVEC2		#				PL AT 0
		UNIT
		STORE	UR1		# UR1 (+1)
		DOT	SL1
			U2
		PDDL			# 0D=CSTH (+1)			PL AT 2
			36D
		STOVL	R1		# R1 (+29 OR +27)
			UR1
		VXV	VSL1
			U2
		BON	SIGN
			NORMSW
			HAVENORM
			GEOMSGN
		UNIT	BOV
			COLINEAR
UNITNORM	STODL	UN		# UN (+1)
			36D
		SIGN	RVQ		# MPAC=SNTH (+1), 34D=SNTH.SNTH (+2)
			GEOMSGN

COLINEAR	VSR1	GOTO
			UNITNORM

HAVENORM	ABVAL	SIGN
			GEOMSGN
		RVQ			# MPAC=SNTH (+1), 34D=SNTH.SNTH (+2)

# Page 1292
		BANK	12
		SETLOC	CONICS
		BANK

		COUNT	12/CONIC

GETX		AXT,2	SSP		# ASSUMES P (+4) IN MPAC
			3
			S2
			1
		CLEAR
			360SW
		SQRT	PDDL		# 0D=SQRT(P)			PL AT 2
			CSTH
		SR1	BDSU
			D1/4
		PDDL	SRR		#				PL AT 4D
			SNTH
			6
		DDV			#				PL AT 2
		BOV
			360CHECK
		DSU	DMP
			COGA		#				PL AT 0
		SL2R	BOV
			360CHECK
WLOOP		PUSH	DSQ		# 0D=W (+5)			PL AT 2
		TLOAD	PDDL		# 2D=WSQ (+10)			PL AT 5
			MPAC
			R1A
		SR4	TAD		#				PL AT 2
		BMN	SQRT
			INFINITY
		ROUND	DAD		#				PL AT 0D
		BOV	TIX,2
			RESETX2
			WLOOP

		BDDV	BOV
			D1/128
			INFINITY
POLYCOEF	BMN	PUSH		# 0D=1/W (+2) OR 16/W (+6)	PL AT 2
			INFINITY
		DSQ
		NORM	DMP
			X1
			R1A
		SRR*	EXIT
			0 	-10D,1
# Page 1293
		TC	POLY
		DEC	5
		2DEC	.5

		2DEC	-.166666770

		2DEC	.100000392

		2DEC	-.071401086

		2DEC	.055503292

		2DEC	-.047264098

		2DEC	.040694204

		TC	INTPRET
		DMP	SL1R		#				PL AT 0D
		PUSH	BON
			360SW
			TRUE360X
XCOMMON		DSQ	NORM
			X1
		DMP	SRR*
			R1A
			0 	-12D,1
		STODL	XI		# XI (+6)

			R1
		SR1	SQRT
		ROUND	DMP
		SL4R			#				PL AT 0
		STORE	X		# X (+17 OR +16)

		DSQ	NORM
			X1
		PDDL	DMP		# 0D=XSQ (+34 OR +32 -N1)	PL AT 2
			P
			R1
		SL3	SQRT
		DMP	SL3R
			COGA
		STODL	KEPC1
			R1A
		BDSU	CLEAR
			D1/64
			INFINFLG
		STORE	KEPC2
# Page 1294
		RVQ

RESETX2		AXT,2
			3

360CHECK	SETPD	BPL
			0D
			INVRSEQN
		SET
			360SW

INVRSEQN	DLOAD	SQRT
			P
		PDDL	DMP		# 0D=SQRT(P) (+2)		PL AT 2
			SNTH
			COGA
		SL1	PDDL		# 2D=SNTH COGA (+5)		PL AT 4
			CSTH
		SR4	DAD
			D1/32
		DSU	DMP		#				PL AT 2,0
		NORM	BDDV
			X1
			SNTH
		SLR*	ABS		# NOTE: NEAR 360 CASE TREATED DIFFERENTLY
			0 	-5,1
		PUSH	DSQ		# 0D=1/W (-1)			PL AT 2
		STODL	34D
			D1/16
1/WLOOP		PUSH	DSQ		# 2D=G (+4)			PL AT 4
		RTB	PDDL		#				PL AT 7
			TPMODE
			R1A
		DMP	SR4
			34D
		TAD			#				PL AT 4
		BMN	SQRT
			INFINITY
		DAD			#				PL AT 2
		TIX,2	NORM
			1/WLOOP
			X1
		BDDV			#				PL AT 0
		SLR*	GOTO
			0 	-7,1
			POLYCOEF

# Page 1295
TRUE360X	DLOAD	BMN
			R1A
			INFINITY
		SQRT	NORM
			X1
		BDDV	SL*
			2PISC
			0 	-3,1
		DSU	PUSH		# 0D=2PI/SQRT(R1A) -X		PL AT 0,2
		GOTO
			XCOMMON
INFINITY	SETPD	BOV		# NO SOLUTION EXISTS SINCE CLOSURE THROUGH
			0		# INFINITY IS REQUIRED
			OVFLCLR
OVFLCLR		SET	RVQ
			INFINFLG

# Page 1296
LAMBERT		STQ	SETPD
			RTNLAMB
			0D
		BOV
			+1
		SSP	VLOAD*
			ITERCTR
			20D
			MUTABLE,1
		STODL	1/MU
			TDESIRED
		DMPR
			BEE19
		STORE	EPSILONL
		SET	VLOAD
			SLOPESW
			R1VEC
		PDVL	CALL		# 0D=R1VEC (+29 OR +27)		PL AT 6
			R2VEC		# MPAC=R2VEC (+29 OR +27)
			GEOM
		STODL	SNTH		# 0D=CSTH (+1)			PL AT 2
			MAGVEC2
		NORM	PDDL		#				PL AT 4
			X1
			R1
		SR1	DDV		#				PL AT 2
		SL*	PDDL		# DXCH WITH 0D, 0D=R1/R2 (+7)	PL AT 0,2
			0 	-6,1
		STADR
		STORE	CSTH		# CSTH (+1)
		SR1	BDSU
			D1/4
		STORE	1-CSTH		# 1-CSTH (+2)

		ROUND	BZE
			360LAMB
		NORM	PDDL		#				PL AT 4
			X1
			0D
		SR1	DDV		#				PL AT 2
		SL*	SQRT
			0 	-3,1
		PDDL	SR		# 2D=SQRT(2R1/R2(1-CSTH)) (+5) 	PL AT 4
			SNTH
			6
		DDV	DAD		#				PL AT 2
			1-CSTH
		STADR
		STORE	COGAMAX
		BOV	BMN		# IF OVFL, COGAMAX=COGUPLIM
# Page 1297
			UPLIM		# IF NEG, USE EVEN IF LT COGLOLIM, SINCE
			MAXCOGA		# 	THIS WOULD BE RESET IN LAMBLOOP
		DSU	BMN		# IF COGAMAX GT COGUPLIM, COGAMAX=COGUPLIM
			COGUPLIM
			MAXCOGA		# OTHERWISE OK, SO GO TO MAXCOGA
UPLIM		DLOAD
			COGUPLIM	# COGUPLIM=.999511597 = MAX VALUE OF COGA
		STORE	COGAMAX		#	NOT CAUSING OVFL IN R1A CALCULATION
MAXCOGA		DLOAD
			CSTH
		SR	DSU		#				PL AT 0
			6
		STADR
		STODL	CSTH-RHO
			GEOMSGN
		BMN	DLOAD
			LOLIM
			CSTH-RHO
		SL1	DDV
			SNTH
		BOV
			LOLIM
MINCOGA		STORE	COGAMIN		# COGAMIN (+5)
		BON	SSP
			GUESSW
			NOGUESS
			TWEEKIT
			00001
		DLOAD
			COGA

LAMBLOOP	DMP
			SNTH
		SR1	DSU
			CSTH-RHO
		NORM	PDDL		# 0D=SNTH COGA-(CSTH-RHO) (+7+C(XI)) PL=2
			X1
			1-CSTH
		SL*	DDV		# 1-CSTH (+2)			PL AT 0
			0 -9D,1
		BMN	BZE
			NEGP
			NEGP
		STODL	P		# P=(1-CSTH)/(SNTH COGA-(CSTH-RHO)) (+4)
			COGA
		DSQ	DAD
			D1/1024
		NORM	DMP
			X1
# Page 1298
			P
		SR*	BDSU
			0 	-8D,1
			D1/32
		STODL	R1A		# R1A=2-P(1+COGA COGA) (+6)

			P
		BOV	CALL
			HIENERGY
			GETX
		DLOAD
			T
		STODL	TPREV
			XI
		BON	CALL
			INFINFLG
			NEGP		# HAVE EXCEEDED THEORETICAL BOUNDS
			DELTIME
		BOV	BDSU
			BIGTIME
			TDESIRED
		STORE	TERRLAMB
		ABS	BDSU
			EPSILONL
		BPL	RTB
			INITV
			CHECKCTR
		BHIZ	CALL
			SUFFCHEK
			ITERATOR
		DLOAD	BZE
			MPAC
			SUFFCHEK
		DAD
			COGA
		STCALL	COGA
			LAMBLOOP

NEGP		DLOAD	BPL		# IMPOSSIBLE TRAJECTORY DUE TO INACCURATE
			DCOGA		# BOUND CALCULATION.  TRY NEW COGA.
			LOENERGY

HIENERGY	SETPD	DLOAD		# HIGH ENERGY TRAJECTORY RESULTED.
			0
			COGA		# IN OVFL OF P OR R1A, OR XI EXCEEDING 50.
		STORE	COGAMIN		# THIS IS THE NEW BOUND.
COMMONLM	DLOAD	SR1
			DCOGA
# Page 1299
		STORE	DCOGA		# USE DCOGA/2 AS DECREMENT
		BZE	BDSU
			SUFFCHEK
			COGA
		STCALL 	COGA
			LAMBLOOP

BIGTIME		DLOAD
			TPREV
		STORE	T

LOENERGY	SETPD	DLOAD		# LOW ENERGY TRAJECTORY RESULTED
			0
			COGA		# IN OVERFLOW OF TIME.
		STCALL	COGAMAX		# THIS IS THE NEW BOUND.
			COMMONLM

SUFFCHEK	DLOAD	ABS
			TERRLAMB
		PDDL	DMP		#				PL AT 2D
			TDESIRED
			D1/4
		DAD	DSU		#				PL AT 0D
			ONEBIT
		BPL	SETGO
			INITV
			SOLNSW
			RTNLAMB

360LAMB		SETPD	SETGO		# LAMBERT CANNOT HANDLE CSTH=1
			0
			SOLNSW
			RTNLAMB

NOGUESS		SSP	DLOAD
			TWEEKIT
			20000
			COGAMIN
		SR1	PDDL		#				PL AT 2
			COGAMAX
		SR1	DAD
		STADR			#				PL AT 0
		STORE	COGA
		STCALL	DCOGA
			LAMBLOOP
# Page 1300
LOLIM		DLOAD	GOTO
			COGLOLIM	# COGLOLIM=-.999511597
			MINCOGA

INITV		DLOAD	NORM
			R1
			X1
		PDDL	SR1		#				PL AT 2
			P
		DDV			#				PL AT 0
		SL*	SQRT
			0 	-4,1
		DMP	SL1
			ROOTMU
		PUSH	DMP		# 0D=VTAN (+7)			PL AT 2
			COGA
		SL	VXSC
			5
			UR1
		PDDL			# XCH WITH 0D			PL AT 0,6
		VXSC	VSL1
			UN
		VXV	VAD		#				PL AT 0
			UR1
		VSL1	CLEAR
			SOLNSW
		STORE	VVEC
		SLOAD	BZE
			VTARGTAG
			TARGETV
		GOTO
			RTNLAMB

TARGETV		DLOAD	CALL
			MAGVEC2
			LAMENTER
		STCALL	VTARGET
			RTNLAMB

# Page 1301
TIMERAD		STQ	SETPD		#				PL AT 0
			RTNTR
			0
		BOV
			+1
		VLOAD	PDVL		#				PL AT 6
			RVEC
			VVEC
		CALL
			PARAM
		BOV	DLOAD		#				PL AT 0
			COGAOVFL
			D1/32
		DSU	DMP
			R1A
			P
		SQRT	DMP
			COGA
		SL4	VXSC
			U2
		PDDL	DSU		#				PL AT 6
			D1/64
			R1A
		VXSC	VSU		#				PL AT 0
			UR1
		VSL4	UNIT
		BOV
			CIRCULAR
		PDDL	NORM		# 0D=UNIT(ECC) (+3)		PL AT 6
			RDESIRED	# 36D=ECC (+3)
			X1
		PDDL	DMP		#				PL AT 8
			R1
			P
		SL*	DDV		#				PL AT 6
			0,1
		DSU	DDV
			D1/16
			36D		# 36D=ECC (+3)
		STORE	COSF
		BOV	DSQ
			BADR2
		BDSU	BMN
			D1/4
			BADR2
		SQRT	SIGN
			SGNRDOT
		CLEAR
			APSESW

# Page 1302
TERMNVEC	VXSC	VSL1
			UN
		VXV	PDVL		# VXCH WITH 0D		PL AT 0,6
			0D
		VXSC	VAD		#			PL AT 0
			COSF
		VSL1	PUSH		# 0D=U2			PL AT 6

		DOT	DDV		# LIMITS RESULT TO POSMAX OR NEGMAX
			UR1
			DP1/4
		SR1	BOV		# SCALE BACK DOWN TO NORMAL
			+1		# CLEAR OVFIND IF SET
		STOVL	CSTH		# CSTH (+1)
			UR1
		VXV	VSL1
		DOT	SL1
			UN
		STODL	SNTH		# SNTH (+1)
			P
		CALL
			GETX
		CLRGO
			SOLNSW
			COMMNOUT

CIRCULAR	SETPD	SETGO
			0
			SOLNSW
			ABTCONIC

BADR2		DLOAD	SIGN
			LODPHALF
			COSF
		STODL	COSF
			KEPZERO
		SETGO
			APSESW
			TERMNVEC

# Page 1303
APSIDES		STQ	SETPD		#			PL AT 0
			RTNAPSE
			0D
		BOV
			+1
		VLOAD	PDVL		#			PL AT 6
			RVEC
			VVEC
		CALL
			PARAM
		BOV			#			PL AT 0
			GETECC
GETECC		DMP	SL4
			R1A
		BDSU	SQRT
			D1/64
		STORE	ECC
		DAD	PDDL		#			PL AT 2
			D1/8
			R1
		DMP	SL1
			P
		DDV			#			PL AT 0
		PDDL	NORM		# 0D=RP (+29 OR +27)	PL AT 2
			R1A
			X1
		PDDL	SL*		#			PL AT 4
			R1
			0 	-5,1
		DDV	DSU		#			PL AT 2,0
		BOV	BMN
			INFINAPO
			INFINAPO
		GOTO
			RTNAPSE
INFINAPO	DLOAD	GOTO		# RETURNS WITH APOAPSIS IN MPAC, PERIAPSIS
			LDPOSMAX
			RTNAPSE		# THAT PL IS AT 0.

# Page 1304
ABTCONIC	EXIT
		TC	POODOO
		OCT	00607

# Page 1305
		SETLOC	CONICS1
		BANK

		COUNT	04/CONIC

MUTABLE		2DEC*	3.986032 E10 B-36*	# MUE

		2DEC*	.25087606 E-10 B+34*	# 1/MUE

		2DEC*	1.99650495 E5 B-18*	# SQRT(MUE)

		2DEC*	.50087529 E-5 B+17*	# 1/SQRT(MUE)

		2DEC	4.902778 E8 B-30	# MUM

		2DEC	.203966 E-8 B+28	# 1/MUM

		2DEC*	2.21422176 E4 B-15*	# SQRT(MUM)

		2DEC*	.45162595 E-4 B+14*	# 1/SQRT(MUM)

LDPOSMAX	EQUALS 	LODPMAX			# DPPOSMAX IN LOW MEMORY.

# ERASABLE ASSIGNMENTS

# KEPLER SUBROUTINE

# INPUT --
# RRECT		ERASE 	+5
# VRECT		ERASE	+5
# TAU.		ERASE	+1
# XKEP		ERASE	+1
# TC		ERASE	+1
# XPREV		ERASE	+1
1/MU		EQUALS	14D
ROOTMU		EQUALS	16D
1/ROOTMU	EQUALS	18D

# OUTPUT --
# RCV		ERASE	+5
# VCV		ERASE	+5
# RC		ERASE	+1
# XPREV		ERASE	+1

# DEBRIS --
ALPHA		EQUALS	8D
XMAX		EQUALS	10D
# Page 1306
XMIN		EQUALS	12D
X		EQUALS	20D
XI		EQUALS	24D
S(XI)		EQUALS	26D
XSQC(XI)	EQUALS	28D
T		EQUALS	30D
R1		EQUALS	32D
KEPC1		EQUALS	34D
KEPC2		EQUALS	36D

# DELX		ERASE	+1
# DELT		ERASE	+1
# URRECT	ERASE	+5
# RCNORM	ERASE	+1
# XPREV		EQUALS	XKEP


# LAMBERT SUBROUTINE
#
# INPUT --
# R1VEC 	ERASE	+5
# R2VEC		ERASE 	+5
# TDESIRED	ERASE	+1
# GEOMSGN	ERASE	+0
# GUESSW			# 0 IF COGA GUESS AVAILABLE, 1 IF NOT
# COGA		ERASE	+1	# INPUT ONLY IF GUESSW IS ZERO.
# NORMSW			# 0 IF UN TO BE COMPUTED, 1 IF UN INPUT
# UN		ERASE	+5	# ONLY USED IF NORMSW IS 1
# VTARGTAG	ERASE	+0
# TWEEKIT	EQUALS	40D	# ONLY USED IF GUESSW IS 0

# OUTPUT --
# VTARGET	ERASE	+5	# AVAILABLE ONLY IF VTARGTAG IS ZERO.
# V1VEC		EQUALS	MPAC

# DEBRIS --
# RTNLAMB	ERASE	+0
# U2		ERASE	+5
# MAGVEC2	ERASE	+1
# UR1		ERASE	+5
# R1		EQUALS	31D
# UN		ERASE	+5
# SNTH		ERASE	+1
# CSTH		ERASE	+1
# 1-CSTH	ERASE	+1
# CSTH-RHO	ERASE	+1

COGAMAX		EQUALS	14D	# CLOBBERS 1/MU
COGAMIN		EQUALS	8D
DCOGA		EQUALS	12D

# TWEEKIT	EQUALS	40D
# P		ERASE	+1
# Page 1307
# COGA		ERASE	+1
# R1A		ERASE	+1
# X		EQUALS	20D
# XSQ		EQUALS	22D
# XI		EQUALS	24D
# S(XI)		EQUALS	26D
# XSQC(XI)	EQUALS	28D
# T		EQUALS	30D
# KEPC1		EQUALS	34D
# KEPC2		EQUALS	36D
# SLOPESW
# SOLNSW

# OTHERS --
# RVEC		EQUALS	R1VEC
# VVEC		ERASE	+5
# COGAFLAG
# RVSW
# INFINFLG
# APSESW
# 360SW
# RTNTT		EQUALS	RTNLAMB
# ECC		ERASE	+1
# RTNTR		EQUALS	RTNLAMB
# RTNAPSE	EQUALS	RTNLAMB
# R2		EQUALS	MAGVEC2

COSF		EQUALS	24D

# RTNPRM	ERASE	+0
# SGNRDOT	ERASE	+0
# RDESIRED	ERASE	+1


# ITERATOR SUBROUTINE

# ORDERSW
MAX		EQUALS	14D		# CLOBBERS 1/MU
MIN		EQUALS	8D

# INDEP		ERASE	+1

DELINDEP	EQUALS	12D
ITERCTR		EQUALS	22D
DEP		EQUALS	30D

# DELDEP	ERASE	+1
# DEPREV	ERASE	+1

TWEEKIT		EQUALS	40D


# MORE KEPLER

# EPSILONT	ERASE	+1

# Page 1308
# MORE LAMBERT

# TERRLAMB	EQUALS	DELDEP
# TPREV		EQUALS	DEPREV

# EPSILONL	EQUALS	EPSILONT +2	# DOUBLE PRECISION WORD




================================================
FILE: Comanche055/CONTRACT_AND_APPROVALS.agc
================================================
# Copyright:	Public domain.
# Filename:	CONTRACT_AND_APPROVALS.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Mod history:	2009-05-06 RSB	Transcribed from page images.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#	Assemble revision 055 of AGC program Comanche by NASA
#	2021113-051.  10:28 APR. 1, 1969

# Page 1


# ************************************************************************
# *                                                                      *
# *	     THIS AGC PROGRAM SHALL ALSO BE REFERRED TO AS:              *
# *									 *
# *                                                                      *
# *			   COLOSSUS 2A                                   *
# *                                                                      *
# *                                                                      *
# *	  THIS PROGRAM IS INTENDED FOR USE IN THE CM AS SPECIFIED	 *
# *       IN REPORT R-577. THIS PROGRAM WAS PREPARED UNDER DSR		 *
# *       PROJECT 55-23870, SPONSORED BY THE MANNED SPACECRAFT		 *
# *       CENTER OF THE NATIONAL AERONAUTICS AND SPACE			 *
# *       ADMINISTRATION THROUGH CONTRACT NAS 9-4065 WITH THE		 *
# *       INSTRUMENTATION LABORATORY, MASSACHUSETTS INSTITUTE OF	 *
# *       TECHNOLOGY, CAMBRIDGE, MASS.					 *
# *                                                                      *
# ************************************************************************


#         SUBMITTED:	MARGARET H. HAMILTON		  DATE:	 28 MAR 69
#             M.H.HAMILTON, COLOSSUS PROGRAMMING LEADER
#             APOLLO GUIDANCE AND NAVIGATION

#         APPROVED:	DANIEL J. LICKLY                  DATE:	 28 MAR 69
#             D.J.LICKLY, DIRECTOR, MISSION PROGRAM DEVELOPMENT
#             APOLLO GUIDANCE AND NAVIGATION PROGRAM

#	  APPROVED: FRED H. MARTIN                  	  DATE:	 28 MAR 69
#             FRED H. MARTIN, COLOSSUS PROJECT MANGER
#             APOLLO GUIDANCE AND NAVIGATION PROGRAM

#         APPROVED: NORMAN E.SEARS                 	  DATE:	 28 MAR 69
#             N.E. SEARS, DIRECTOR, MISSION DEVELOPMENT
#             APOLLO GUIDANCE AND NAVIGATION PROGRAM

#         APPROVED: RICHARD H. BATTIN               	  DATE:	 28 MAR 69
#             R.H. BATTIN, DIRECTOR, MISSION DEVELOPMENT
#             APOLLO GUIDANCE AND NAVIGATION PROGRAM

#         APPROVED: DAVID G. HOAG			  DATE:	 28 MAR 69
#             D.G. HOAG, DIRECTOR
#             APOLLO GUIDANCE AND NAVIGATION PROGRAM

#         APPROVED: RALPH R. RAGAN			  DATE:	 28 MAR 69
#             R.R. RAGAN, DEPUTY DIRECTOR
#             INSTRUMENTATION LABORATORY


================================================
FILE: Comanche055/CSM_GEOMETRY.agc
================================================
# Copyright:	Public domain.
# Filename:	CSM_GEOMETRY.agc
# Purpose:	Part of the source code for Colossus 2A, AKA Comanche 055.
#		It is part of the source code for the Command Module's (CM)
#		Apollo Guidance Computer (AGC), for Apollo 11.
# Assembler:	yaYUL
# Contact:	Ron Burkey <info@sandroid.org>.
# Website:	www.ibiblio.org/apollo.
# Pages:	285-296
# Mod history:	2009-05-08 RSB	Adapted from the Colossus249/ file of the
#				same name, using Comanche055 page images.
#
# This source code has been transcribed or otherwise adapted from digitized
# images of a hardcopy from the MIT Museum.  The digitization was performed
# by Paul Fjeld, and arranged for by Deborah Douglas of the Museum.  Many
# thanks to both.  The images (with suitable reduction in storage size and
# consequent reduction in image quality as well) are available online at
# www.ibiblio.org/apollo.  If for some reason you find that the images are
# illegible, contact me at info@sandroid.org about getting access to the
# (much) higher-quality images which Paul actually created.
#
# Notations on the hardcopy document read, in part:
#
#	Assemble revision 055 of AGC program Comanche by NASA
#	2021113-051.  10:28 APR. 1, 1969
#
#	This AGC program shall also be referred to as
#			Colossus 2A

# Page 285
		BANK	22
		SETLOC	COMGEOM1
		BANK

# THIS ROUTINE TAKES THE SHAFT AND TRUNNION ANGLES AS READ BY THE CM OPTICAL SYSTEM AND CONVERTS THEM INTO A  UNIT
# VECTOR REFERENCED TO THE NAVIGATION BASE COORDINATE SYSTEM AND COINCIDENT WITH THE SEXTANT LINE OF SIGHT.
#
# THE INPUTS ARE  1) THE SEXTANT SHAFT AND TRUNNION ANGLES ARE STORED SP IN LOCATIONS 3 AND 5 RESPECTIVELY OF THE
# MARK VAC AREA.  2) THE COMPLEMENT OF THE BASE ADDRESS OF THE MARK VAC AREA IS STORED SP AT LOCATION X1 OF YOUR
# JOB VAC AREA.
#
# THE OUTPUT IS A HALF-UNIT VECTOR IN NAVIGATION BASE COORDINATES AND STORED AT LOCATION 32D OF THE VAC AREA. THE
# OUTPUT IS ALSO AVAILABLE AT MPAC.


		COUNT	23/GEOM

SXTNB		SLOAD*	RTB		# PUSHDOWN  00,02,04,(17D-19D),32D-36D
			5,1		# TRUNNION = TA
			CDULOGIC
		RTB	PUSH
			SXTLOGIC
		SIN	SL1
		PUSH	SLOAD*		# PD2 = SIN(TA)
			3,1		# SHAFT = SA
		RTB	PUSH		# PD4 = SA
			CDULOGIC

		COS	DMP
			2
		STODL	STARM		# COS(SA)SIN(TA)

		SIN	DMP
		STADR
		STODL	STARM	+2	# SIN(SA)SIN(TA)

		COS
		STOVL	STARM	+4
			STARM		# STARM = 32D
		MXV	VSL1
			NB1NB2
		STORE	32D
		RVQ


SXTLOGIC	CAF	10DEGS-		# CORRECT FOR 19.775 DEGREE OFFSET
		ADS	MPAC
		CAF	QUARTER
		TC	SHORTMP
		TC	DANZIG
# Page 286
# CALCSXA COMPUTES THE SEXTANT SHAFT AND TRUNNION ANGLES REQUIRED TO POSITION THE OPTICS SUCH THAT A STAR LINE-
# OF-SIGHT LIES ALONG THE STAR VECTOR.  THE ROUTINE TAKES THE GIVEN STAR VECTOR AND EXPRESSES IT AS A VECTOR REF-
# ERENCED TO THE OPTICS COORDINATE SYSTEM.  IN ADDITION IT SETS UP THREE UNIT VECTORS DEFINING THE X,Y, AND Z AXES
# REFERENCED TO THE OPTICS COORDINATE SYSTEM.
#
# THE INPUTS ARE  1) THE STAR VECTOR REFERRED TO PRESENT STABLE MEMBER COORDINATES STORED AT STAR.  2) SAME ANGLE
# INPUT AS *SMNB*, I.E. SINES AND COSINES OF THE CDU ANGLES, IN THE ORDER Y Z X, AT SINCDU AND COSCDU.  A CALL
# TO CDUTRIG WILL PROVIDE THIS INPUT.
#
# THE OUTPUTS ARE THE SEXTANT SHAFT AND TRUNNION ANGLES STORED DP AT SAC AND PAC RESPECTIVELY.  (LOW ORDER PART
# EQUAL TO ZERO).


CALCSXA		ITA	VLOAD		# PUSHDOWN 00-26D,28D,30D,32D-36D
			28D
			STAR
		CALL
			*SMNB*
		MXV	VSL1
			NB2NB1
		STOVL	STAR
			HIUNITX
		STOVL	XNB1
			HIUNITY
		STOVL	YNB1
			HIUNITZ
		STCALL	ZNB1
			SXTANG1
# Page 287
# SXTANG COMPUTES THE SEXTANT SHAFT AND TRUNNION ANGLES REQUIRED TO POSITION THE OPTICS SUCH THAT A STAR LINE-OF-
# SIGHT LIES ALONG THE STAR VECTOR.
#
# THE INPUTS ARE  1) THE STAR VECTOR REFERRED TO ANY COORDINATE SYSTEM STORED AT STAR.  2) THE NAVIGATION BASE
# COORDINATES REFERRED TO THE SAME COORDINATE SYSTEM.  THESE THREE HALF-UNIT VECTORS ARE STORED AT XNB, YNB, AND
# ZNB.
#
# THE OUTPUTS ARE THE SEXTANT SHAFT AND TRUNNION ANGLES STORED DP AT SAC AND PAC RESPECTIVELY.  (LOW ORDER PART
# EQUAL TO ZERO).


SXTANG		ITA	RTB		# PUSHDOWN  16D,18D,22D-26D,28D
			28D
			TRANSP1		# EREF WRT NB2
		VLOAD	MXV
			XNB
			NB2NB1
		VSL1
		STOVL	XNB1
			YNB
		MXV	VSL1
			NB2NB1
		STOVL	YNB1
			ZNB
		MXV	VSL1
			NB2NB1
		STORE	ZNB1

		RTB	RTB
			TRANSP1
			TRANSP2

SXTANG1		VLOAD	VXV
			ZNB1
			STAR
		BOV
			+1
		UNIT	BOV
			ZNB=S1
		STORE	PDA		# PDA = UNIT(ZNB X S)

		DOT	DCOMP
			XNB1
		STOVL	SINTH		# SIN(SA) = PDA . -XNB
			PDA

		DOT
			YNB1
		STCALL	COSTH		# COS(SA) = PDA . YNB
			ARCTRIG
# Page 288
		RTB
			1STO2S
		STOVL	SAC
			STAR
		BOV
			+1
		DOT	SL1
			ZNB1
		ACOS
		BMN	SL2
			SXTALARM	# TRUNNION ANGLE NEGATIVE
		BOV	DSU
			SXTALARM	# TRUNNION ANGLE GREATER THAN 90 DEGREES
			20DEG-
		RTB
			1STO2S
		STORE	PAC		# FOR FLIGHT USE, CULTFLAG IS ON IF
		CLRGO			# TRUNION IS GREATER THAN 90 DEG
			CULTFLAG
			28D
SXTALARM	SETGO			# ALARM HAS BEEN REMOVED FROM THIS
			CULTFLAG
			28D		# SUBROUTINE,ALARM WILL BE SET BY MPI
ZNB=S1		DLOAD
			270DEG
		STODL	SAC
			20DEGS-
		STORE	PAC
		CLRGO
			CULTFLAG
			28D
# Page 289
# THESE TWO ROUTINES COMPUTE THE ACTUAL STATE VECTOR FOR LM, CSM BY ADDING
# THE CONIC R,V AND THE DEVIATIONSR,V.  THE STATE VECTORS ARE CONVERTED TO
# METERS B-29 AND METERS/CSEC B-7 AND STORED APPROPRIATELY IN RN,VN OR
# R-OTHER , V-OTHER FOR DOWNLINK.  THE ROUTINES NAMES ARE SWITCHED IN THE
# OTHER VEHICLES COMPUTER.
#
# INPUT
#	STATE VECTOR IN TEMPORARY STORAGE AREA
#	IF STATE VECTOR IS SCALED POS B27 AND VEL B5
#		SET X2 TO +2
#	IF STATE VECTOR IS SCALED POS B29 AND VEL B7
#		SET X2 TO 0
#
# OUTPUT
#	R(T) IN RN, V(T) IN VN, T IN PIPTIME
#		OR
#	R(T) IN R-OTHER, V(T) IN V-OTHER	(T IS DEFINED BY T-OTHER)


		BANK	23
		SETLOC	COMGEOM2
		BANK
		COUNT	10/GEOM
SVDWN1		BOF	RVQ			# SW=1=AVETOMID DOING W-MATRIX INTEG
			AVEMIDSW
			+1
		VLOAD	VSL*
			TDELTAV
			0	-7,2
		VAD	VSL*
			RCV
			0,2
		STOVL	RN
			TNUV
		VSL*	VAD
			0	-4,2
			VCV
		VSL*
			0,2
		STODL	VN
			TET
		STORE	PIPTIME
		RVQ

SVDWN2		VLOAD	VSL*
			TDELTAV
			0	-7,2
		VAD	VSL*
			RCV
# Page 290
			0,2
		STOVL	R-OTHER
			TNUV
		VSL*	VAD
			0	-4,2
			VCV
		VSL*
			0,2
		STORE	V-OTHER
		RVQ
# Page 291
# SUBROUTINE TO COMPUTE THE NATURAL LOG OF C(MPAC, MPAC +1).
#
#	ENTRY:	CALL
#			LOG
#
# SUBROUTINE RETURNS WITH -LOG IN DP MPAC.
#
# EBANK IS ARBITRARY..

		BANK	14
		SETLOC	POWFLIT2
		BANK
		COUNT	23/GEOM

LOG		NORM	BDSU		# GENERATES LOG BY SHIFTING ARG
			MPAC	+3	# UNTIL IT LIES BETWEEN .5 AND 1.
			NEARLY1		# THE LOG OF THIS PART IS FOUND AND THE
		EXIT			# LOG OF THE SHIFTED PART IS COMPUTED

		TC	POLY		# AND ADDED IN.  SHIFT COUNT STORED

		DEC	2		# (N-1, SUPPLIED BY SMERZH)
		2DEC	0		# IN MPAC +3.
		2DEC	.031335467
		2DEC	.0130145859
		2DEC	.0215738898

		CAF	ZERO
		TS	MPAC	+2
		EXTEND
		DCA	CLOG2/32
		DXCH	MPAC
		DXCH	MPAC	+3
		COM			# LOAD POSITIVE SHIFT COUNT IN A.
		TC	SHORTMP		# MULTIPLY BY SHIFT COUNT.

		DXCH	MPAC	+1
		DXCH	MPAC
		DXCH	MPAC	+3
		DAS	MPAC
		TC	INTPRET		# RESULT IN MPAC, MPAC +1

		RVQ

NEARLY1		2DEC	.999999999

# Page 292
CLOG2/32	2DEC	.0216608494

# Page 293
# SUBROUTINE NAME: 	EARTH ROTATOR	(EARROT1 OR EARROT2)		DATE:  		15 FEB 67
# MOD NO:  N +1								LOG SECTION:  	POWERED FLIGHT SUBROS
# MOD BY:  ENTRY GROUP (BAIRNSFATHER)
# FUNCTIONAL DESCRIPTION: 	THIS ROUTINE PROJECTS THE INITIAL EARTH TARGET VECTOR RTINIT AHEAD THROUGH
#	THE ESTIMATED TIME OF FLIGHT.  INITIAL CALL RESOLVES THE INITIAL TARGET VECTOR RTINIT INTO EASTERLY
#	AND NORMAL COMPONENTS RTEAST AND RTNORM .  INITIAL AND SUBSEQUENT CALLS ROTATE THIS VECTOR
#	ABOUT THE (FULL) UNIT POLAR AXIS UNITW THROUGH THE ANGLE WIE DTEAROT TO OBTAIN THE ROTATED
#	TARGET VECTOR RT .  ALL VECTORS EXCEPT UNITW ARE HALF UNIT.
#	THE EQUATIONS ARE
#		-    -        -                      -
#		RT = RTINIT + RTNORM (COS(WT) - 1) + RTEAST SIN(WT)
#	WHERE	WT = WIE DTEAROT
#		RTINIT = INITIAL TARGET VECTOR
#		-        -       -
#		RTEAST = UNITW*RTINIT
#		-        -        -
#		RTNORM = RTEAST*UNITW
#
#	FOR CONTINUOUS UPDATING, ONLY ONE ENTRY TO EARROT1 IS REQUIRED, WITH SUBSEQUENT ENTRIES AT EARROT2.
# CALLING SEQUENCE:	FIRST CALL			SUBSEQUENT CALL
#			STCALL	DTEAROT			STCALL	DTEAROT
#				EARROT1				EARROT2
#			C(MPAC) UNSPECIFIED		C(MPAC) = DTEAROT
#	PUSHLOC = PDL+0, ARBITRARY.  6 LOCATIONS USED.
#
# SUBROUTINES USED:  NONE
# NORMAL EXIT MODES:  RVQ
# ALARMS:  NONE
# OUTPUT:  RTEAST (-1)		.5 UNIT VECTOR EAST, COMPNT OF RTINIT	LEFT BY FIRST CALL
#	   RTNORM (-1)		.5 UNIT VECTOR NORML, COMPNT OF RTINIT	LEFT BY FIRST CALL
#	   RT	  (-1)		.5 UNIT TARGET VECTOR, ROTATED		LEFT BY ALL CALLS
#	   DTEAROT  (-28) CS	MAY BE CHANGED BY EARROT2, IF OVER 1 DAY
# ERASABLE INITIALIZATION REQUIRED:
#	   UNITW  (0)		UNIT POLAR VECTOR			PAD LOADED
#	   RTINIT (-1)		.5 UNIT INITIAL TARGET VECTOR		LEFT BY ENTRY
#	   DTEAROT  (-28) CS	TIME OF FLIGHT				LEFT BY CALLER
# DEBRIS:  QPRET, PDL+0 ... PDL+5
# Page 294
		EBANK=	RTINIT

EARROT1		VLOAD	VXV
			UNITW		# FULL UNIT VECTOR
			RTINIT		# .5 UNIT
		STORE	RTEAST		# .5 UNIT

		VXV
			UNITW		# FULL UNIT
		STODL	RTNORM		# .5 UNIT
			DTEAROT		# (-28) CS

EARROT2		BOVB	DDV
			TCDANZIG	# RESET OVFIND, IF ON
			1/WIE
		BOV	PUSH
			OVERADAY
		COS	DSU
			HIDPHALF
		VXSC	PDDL		# XCH W PUSH LIST
			RTNORM		# .5 UNIT
		SIN	VXSC
			RTEAST		# .5 UNIT
		VAD	VSL1
		VAD	UNIT		# INSURE THAT RT IS 'UNIT'.
			RTINIT		# .5 UNIT
		STORE	RT		# .5 UNIT TARGET VECTOR

		RVQ

OVERADAY	DLOAD	SIGN
			1/WIE
			DTEAROT
		BDSU
			DTEAROT
		STORE	DTEAROT

		GOTO
			EARROT2

#WIE		2DEC	.1901487997
1/WIE		2DEC	8616410
NB2NB1		2DEC	+.8431756920 B-1
		2DEC	0
		2DEC	-.5376381241 B-1
# Page 295
ZERINFLT	2DEC	0
HALFNFLT	2DEC	.5
		2DEC	0
		2DEC	+.5376381241 B-1
		2DEC	0
		2DEC	+.8431756920 B-1
NB1NB2		2DEC	+.8431756920 B-1
		2DEC	0
		2DEC	+.5376381241 B-1
		2DEC	0
		2DEC	.5
		2DEC	0
		2DEC	-.5376381241 B-1
		2DEC	0
		2DEC	+.8431756920 B-1

# Page 296
10DEGS-		DEC	3600

270DEG		OCT	60000		# SHAFT 270 DEGREES	2S COMP.
		OCT	00000

20DEGS-		DEC	-07199
		DEC	-00000

20DEG-		DEC	03600
		DEC	00000


================================================
FILE: Comanche055/DISPLAY_INTERFACE_ROUTINES.agc
================================================
# Copyright:    Public domain.
# Filename:     DISPLAY_INTERFACE_ROUTINES.agc
# Purpose:      Part of the source code for Comanche, build 055. It
#               is part of the source code for the Command Module's
#               (CM) Apollo Guidance Computer (AGC), Apollo 11.
# Assembler:    yaYUL
# Reference:    pp. 1452-1484
# Contact:      Ron Burkey <info@sandroid.org>
# Website:      http://www.ibiblio.org/apollo.
# Mod history:  2009-05-07 RSB	Adapted from Colossus249 file of the same
#				name, and page images. Corrected various
#				typos in the transcription of program
#				comments, and these should be back-ported
#				to Colossus249.
#
# The contents of the "Comanche055" files, in general, are transcribed
# from scanned documents.
#
#       Assemble revision 055 of AGC program Comanche by NASA
#       2021113-051.  April 1, 1969.
#
#       This AGC program shall also be referred to as Colossus 2A
#
#       Prepared by
#                       Massachusetts Institute of Technology
#                       75 Cambridge Parkway
#                       Cambridge, Massachusetts
#
#       under NASA contract NAS 9-4065.
#
# Refer directly to the online document mentioned above for further
# information.  Please report any errors to info@sandroid.org.

# Page 1452
# DISPLAYS CAN BE CLASSIFIED INTO THE FOLLOWING CATEGORIES-
#	1.  PRIORITY DISPLAYS- DISPLAYS WHICH TAKE PRIORITY OVER ALL OTHER DISPLAYS. USUALLY THESE DISPLAYS ARE SENT
#	    OUT UNDER CRITICAL ALARM CONDITIONS.
#	2.  EXTENDED VERB DISPLAYS- ALL EXTENDED VERBS AND MARK ROUTINES SHOULD USE EXTENDED VERB (MARK) DISPLAYS.
#	3.  NORMAL DISPLAYS- ALL MISSION PROGRAM DISPLAYS WHICH INTERFACE WITH THE ASTRONAUT DURING THE NORMAL
#	    SEQUENCE OF EVENTS.
#	4.  MISC. DISPLAYS- ALL DISPLAYS NOT HANDLED BY THE DISPLAY INTERFACEROUTINES. THESE INCLUDE SUCH DISPLAYS AS
#	    MM DISPLAYS AND SPECIAL PURPOSE DISPLAYS HANDLED BY PINBALL.
#	5.  ASTRONAUT INITIATED DISPLAYS- ALL DISPLAYS INITIATED EXTERNALLY.
#
# THE FOLLOWING TERMS ARE USED TO DESCRIBE THE STATUS OF DISPLAYS-
#	1.  ACTIVE-THE DISPLAY WHICH IS (1) BEING DISPLAYED TO THE ASTRONAUT AND WAITING FOR A RESPONSE OR
#	    (2) WAITING FIRST IN LINE FOR THE ASTRONAUT TO FINISH USING THE DSKY OR (3) BEING DISPLAYED ON THE DSKY
#	    BUT NOT WAITING FOR A RESPONSE.
#	2.  INACTIVE -A DISPLAY WHICH HAS (1) BEEN ACTIVE BUT WAS INTERRUPTED BY A DISPLAY OF HIGHER PRIORITY,
#	    (2) BEEN PUT INTO THE WAITING LIST AT TIME IT WAS REQUESTED DUE TO THE FACT A HIGHER PRIORITY DISPLAY
#	    WAS ALREADY GOING, (3) BEEN INTERRUPTED BY THE ASTRONAUT (CALLED A PINBRANCH CONDITION, SINCE THIS TYPE
#	    OF INACTIVE DISPLAY IS USUALLY REACTIVATED ONLY BY PINBALL) OR (4) A DISPLAY WHICH HAS FINISHED BUT STILL
#	    HAS INFO SAVED FOR RESTART PURPOSES.
#
# DISPLAY PRIORITIES WORK AS FOLLOWS-
#	INTERRUPTS-
#		1.  THE ASTRONAUT CAN INTERRUPT ANY DISPLAY WITH AN EXTERNAL DISPLAY REQUEST.
#		2.  INTERNAL DISPLAYS CAN NOT BE SENT OUT WHEN THE ASTRONAUT IS USING THE DSKY.
#		3.  PRIORITY DISPLAYS INTERRUPT ALL OTHER TYPES OF INTERNAL DISPLAYS.  A PRIORITY DISPLAY INTERRUPTING ANOTHER
#		    PRIORITY DISPLAY WILL CAUSE AN ABORT UNLESS BIT14 IS SET FOR THE LINUS ROUTINE.
#		4.  A MARK DISPLAY INTERRUPTS ANY NORMAL DISPLAY.
#		5.  A MARK THAT INTERRUPTS A MARK COMPLETELY REPLACES IT.
#
# 	ORDER OF WAITING DISPLAYS-
#		1.  ASTRONAUT EXTERNAL USE
#		2.  PRIORITY
#		3.  INTERRUPTED MARK
#		4.  INTERRUPTED NORMAL
#		5.  MARK TO BE REQUESTED (SEE DESCRIPTION OF ENDMARK)
#		6.  MARK WAITING
#		7.  NORMAL WAITING
#
# Page 1453
# THE DISPLAY ROUTINES ARE INTENDED TO SERVE AS AN INTERFACE BETWEEN THE USER AND PINBALL.  THE
# FOLLOWING STATEMENTS CAN BE MADE ABOUT NORMAL DISPLAYS AND PRIORITY DISPLAYS (A DESCRIPTION OF MARK ROUTINES
# WILL FOLLOW LATER):
#	1.  ALL ROUTINES THAT END IN R HAVE AN IMMEDIATE RETURN TO THE USER.  FOR ALL FLASHING DISPLAYS THIS RETURN
#	    IS TO THE USERS CALL CADR +4.  FOR THE ONLY NON FLASHING IMMEDIATE RETURN DISPLAY (GODSPR) THIS RETURN
#	    IS TO THE USERS CALLING LOC +1.
#	2.  ALL ROUTINES NOT ENDING IN R DO NOT DO AN IMMEDIATE RETURN TO THE USER.
#	3.  ALL ROUTINES THAT END IN R START A SEPARATE JOB (MAKEPLAY) WITH USERS JOB PRIORITY.
#	4.  ALL ROUTINES NOT ENDING IN R BRANCH DIRECTLY TO MAKEPLAY WHICH MAKES THESE DISPLAYS A PART OF THE
#	    USERS JOB.
#	5.  ALL DISPLAY ROUTINES ARE CALLED VIA BANKCALL.
#	6.  TO RESTART A DISPLAY THE USER WILL GENERALLY USE A PHASE OF ONE WITH DESIRED RESTART GROUP (SEE
#	    DESCRIPTION OF RESTARTS).
#	7.  ALL FLASHING DISPLAYS HAVE 3 RETURNS TO THE USER FROM ASTRONAUT RESPONSES.  A TERMINATE (V34) BRANCHES
#	    TO THE USERS CALL CADR +1.  A PROCEED (V33) BRANCHES TO THE USERS CALL CADR +2.  AN ENTER OR RECYCLE
#	    (V32) BRANCHES TO THE USERS CALL CADR +3.
#	8.  ALL ROUTINES MUST BE USED UNDER EXECUTIVE CONTROL.
#
# A DESCRIPTION OF EACH ROUTINE WITH AN EXAMPLE FOLLOWS:
#	GODSP IS USED TO DISPLAY A VERB NOUN ARRIVING IN A.  NO RETURN IS MADE TO THE USER.
#		1.  GODSP IS NOT RESTARTABLE
#		2.  A VERB PASTE WITH GODSP ALWAYS TURNS ON THE FLASH.
#				CAF	VXXNYY
#				TC	BANKCALL
#				CADR	GODSP
#			VXXNYY	OCT	OXXYY

#	GODSPR IS THE SAME AS GODSP ONLY RETURN IS TO THE USER.
#				CAF	VXXNYY
#				TC	BANKCALL
#				CADR	GODSPR
#				...	...		# IMMEDIATE RETURN OF GODSPR

#	GOFLASH DISPLAYS A FLASHING VERB NOUN WITH NO IMMEDIATE RETURN TO THE USER. 3 RETURNS ARE POSSIBLE FORM
#	THE ASTRONAUT (SEE NO. 7 ABOVE).
#				CAF	VXXNYY		# VXX NYY WILL BE A FLASHING VERB NOUN.
#				TC	BANKCALL
#				CADR	GOFLASH
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER OR RECYCLE RETURN

#	GOPERF1 IS ENTERED WITH DESIRED CHECKLIST VALUE IN A.  GOPERF1 WILL DISPLAY THIS VALUE IN R1 BY MEANS OF A
# Page 1454
# 	V01 N25.A FLASHING PLEASE PERFORM ON CHECKLIST (V50 N25) IS THEN DISPLAYED.  NO IMMEDIATE RETURN IS MADE TO
# 	USER (SEE NO. 7 ABOVE).
#	GOPERF1 BLANKS REGISTERS R2 AND R3
#				CAF	OCTXX		# CODE FOR CHECKLIST VALUE XX
#				TC	BANKCALL
#				CADR	GOPERF1
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#	GOPERF2 IS ENTERED WITH A VARIABLE NOUN AND V01 (V00 FOR N10 OR N11) IN A.  GOPERF2 WILL FIRST DISPLAY THE
# 	REQUESTED NOUN BY MEANS OF A V01NYY OR A V00NYY. PLEASE PERFORM ON NOUN (V50 NYY) THEN BECOMES A FLASHING
#	DISPLAY.  NO IMMEDIATE RETURN IS MADE TO THE USER (SEE NO. 7 ABOVE).
#	GOPERF2 DOES NOT BLANK ANY REGISTERS
#				CAF	VXXNYY		# VARIABLE NOUN YY. XX=00 OR 01.
#				TC	BANKCALL
#				CADR	GOPERF2
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#	GOPERF3 IS USED FOR A PLEASE PERFORM ON A PROGRAM NUMBER.  THE DESIRED PROGRAM NO. IS ENTERED IN A.  GOPERF3
#	DISPLAYS THE NO. BY MEANS OF A V06 N07 FOLLOWED BY A FLASHING V50 N07 FOR A PLEASE PERFORM. NO IMMEDIATE RETURN
#	IS MADE TO THE USER (SEE NO. 7 ABOVE).
#	GOPERF3 BLANKS REGISTERS R2 AND R3
#				CAF	DECXX		# REQUEST PERFORM ON PXX
#				TC	BANKCALL
#				CADR	GOPERF3
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN

#	GOPERF4 IS USED FOR A PLEASE PERFORM ON AN OPTION. THE DESIRED OPTION IS ENTERED IN A AND STORED IN OPTION1.
#	GOPERF4 DISPLAYS R1 AND R2 BY MEANS OF A V04N06 FOLLOWED BY A FLASHING V50N06 FOR A PLEASE PERFORM.  NO
#	IMMEDIATE RETURN IS MADE TO THE USER (SEE NO. 7 ABOVE).
#				CAF	OCTXX		# REQUEST PERFORM ON OPTION XX
#				TC	BANKCALL
#				CADR	GOPERF4
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#	GOPERF4 BLANKS REGISTER R3
#
# Page 1455
#	GODSPRET IS USED TO DISPLAY A VERB NOUN ARRIVING IN A WITH A RETURN TO THE USER AFTER THE DISPLAY HAS BEEN SENT
#	OUT.
#				CAF	VXXXNYY
#				TC	BANKCALL
#				CADR	GODSPRET
#				...	...		# RETURN TO USER

#	REGODSP IS USED TO DISPLAY A VERB NOUN ARRIVING IN A.  REGODSP IS THE SAME AS GODSP ONLY REGODSP REPLACES ANY
# 	ACTIVE NORMAL DISPLAY IF ONE WAS ACTIVE.
#				CAF	VXXNYY
#				TC	BANKCALL
#				CADR	REGODSP

#	REFLASH IS THE SAME AS GOFLASH ONLY REFLASH REPLACES ANY ACTIVE NORMAL DISPLAY IF ONE WAS ACTIVE.
#				CAF	VXXNYY		# VXX NYY WILL BE A FLASHING VERB NOUN
#				TC	BANKCALL
#				CADR	REFLASH
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN

# 	GOFLASHR IF SAME AS GOFLASH ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +4.
#				CAF	VXXNYY
#				TC	BANKCALL
#				CADR	GOFLASHR
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER OR RECYCLE RETURN
#				...	...		# IMMEDIATE RETURN FROM GOFLASHR

#	GOPERF1R IS THE SAME AS GOPERF1 ONLY GOPERF1R HAS AN IMMEDIATE RETURN TO USERS CALL CADR +4.
#	GOPERF1R BLANKS REGISTERS R2 AND R3
#				CAF	OCTXX		# CODE FOR CHECKLIST VALUE XX.
#				TC	BANKCALL
#				CADR	GOPERF1R
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#				...	...		# IMMEDIATE RETURN FROM GOPERF1R

#	GOPERF2R IS THE SAME AS GOPERF2 ONLY AN IMMEDIATE RETURN IS MADE TO USERS CALL CADR +4.
# Page 1456
#	GOPERF2R DOES NOT BLANK ANY REGISTERS
#				CAF	VXXNYY		# VARIABLE NOUN YY REQUESTED.  XX=00 OR 01
#				TC	BANKCALL
#				CADR	GOPERF2R
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#				...	...		# IMMEDIATE RETURN HERE FROM GOPERF2R

# 	GOPERF3R IS THE SAME AS GOPERF3 ONLY AN IMMEDIATE RETURN IS MADE TO USERS CALL CADR +4.
#	GOPERF3R BLANKS REGISTERS R2 AND R3
#				CAF	PROGXX		# PERFORM PROGRAM XX
#				TC	BANKCALL
#				CADR	GOPERF3R
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#				...	...		# GOPERF3R IMMEDIATELY RETURNS HERE

#	GOPERF4R IS THE SAME AS GOPERF4 ONLY AN IMMEDIATE RETURN IS MADE TO USERS CALL CADR +4.
#				CAF	OCTXX		# REQUEST PERFORM ON OPTIONXX
#				TC	BANKCALL
#				CADR	GOPERF4R
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#				...	...		# IMMEDIATE RETURN TO USER
#	GOPERF4R BLANKS REGISTER R3
#
#	REFLASHR IS THE SAME AS REFLASH ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +4.
#				CAF	VXXNYY		# VXX NYY WILL BE A FLASHING VERB NOUN
#				TC	BANKCALL
#				CADR	REFLASHR
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#				...	...		# IMMEDIATE RETURN TO USER

#	REGODSPR IS THE SAME AS REGODSP ONLY A RETURN (IMMEDIATE) IS MADE TO THE USER.
# Page 1457
#				CAF	VXXNYY
#				TC	BANKCALL
#				CADR	REGODSPR
#				...	...		# IMMEDIATE RETURN TO USER

# Page 1458
#	GOMARK IS USED TO DISPLAY A MARK VERB NOUN ARRIVING IN A. NO RETURN IS MADE TO THE USER.
#	GOXDSP = GOMARK
#				CAF	VXXNYY		# VXXNYY CONTAINS VERB AND NOUN
#				TC	BANKCALL
#				CADR	GOMARK		# OTHER EXTENDED VERBS USE CADR GOXDSP

#	GOMARKR IS THE SAME AS GOMARK ONLY RETURN IS TO THE USER.
#	GOXDSPR = GOMARKR
#				CAF	VXXNYY
#				TC	BANKCALL
#				CADR	GOMARKR		# OTHER EXTENDED VERBS USE CADR GOXDSPR
#				...	...		# IMMEDIATE RETURN OF GOMARKR

#	GOMARKF DISPLAYS A FLASHING MARK VERB NOUN WITH NO IMMEDIATE RETURN TO THE USER. 3 RETURNS ARE POSSIBLE FORM
#	THE ASTRONAUT (SEE NO. 7 ABOVE).
#	GOXDSPF = GOMARKF
#				CAF	VXXNYY		# VXXNYY WILL BE A FLASHING MARK VERB NOUN
#				TC	BANKCALL
#				CADR	GOMARKFR	# OTHER EXTENDED VERBS USE CADR GOXDSPFR
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER OR RECYCLE RETURN

#	GOMARKFR IS THE SAME AS GOMARKF ONLY AN IMMEDIATE RETURN IS MADE TO THE USER CALL CADR +4.
#	GOXDSPFR = GOMARKFR
#				CAF	VXXNYY		# FLASHING MARK VERB NOUN
#				TCF	BANKCALL
#				CADR	GOMARKFR	# OTHER EXTENDED VERBS USE CADR GOXDSPFR
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER OR RECYCLE RETURN
#				...	...		# IMMEDIATE RETURN TO THE USER

#	GOMARK1 IS USED FOR A PLEASE PERFORM ON A MARK REQUEST WITH ONLY 1 ASTRONAUT RETURN TO THE USER.  NO IMMEDIATE
#	RETURN IS MADE. THE DESIRED MARK PLEASE PERFORM VERB AND DESIRED NOUN IS ENTERED IN A.  GOMARK1 DISPLAYS R1, R2, R
#	MEANS OF A V05NYY FOLLOWED BY A FLASHING V5XNYY FOR A PLEASE PERFORM. THE ASTRONAUT WILL RESPOND WITH A MARK
#	OR MARK REJECT OR AN ENTER. THE ENTER IS THE ONLY ASTRONAUT RESPONSE THAT WILL COME BACK TO THE USER.
#				CAF	V5XNYY		# X=1,2,3,4	YY= NOUN
#				TC	BANKCALL
# Page 1459
#				CADR	GOMARK1
#				...	...		# ENTER RETURN

#	*** IF BLANKING DESIRED ON NON R ROUTINES, NOTIFY DISPLAYER.
#
#	GOMARK1R IS THE SAME AS A GOMARK1 ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +2.
#				CAF	V5XNYY		# X=1,2,3,4	YY = NOUN
#				TC	BANKCALL
#				CADR	GOMARK1R
#				...	...		# ASTRONAUT ENTER RETURN
#				...	...		# IMMEDIATE RETURN TO USER

#	GOMARK2 IS THE SAME AS GOMARK1 ONLY 3 RETURNS ARE MADE TO THE USER FROM THE ASTRONAUT.
#				CAF	V5XNYY		# X=1,2,3,4	YY=NOUN
#				TC	BANKCALL
#				CADR	GOMARK2
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN

#	GOMARK2R IS THE SAME AS GOMARK1R ONLY 3 ASTRONAUT RETURNS ARE MADE TO THE USER.
#				CAF	V5XNYY		# X=0,1,2,3,4	YY=NOUN
#				TCF	BANKCALL
#				CADR	GOMARK2R
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN
#				...	...		# IMMEDIATE RETURN TO THE USER

#	GOMARK3 IS USED FOR A PLEASE PERFORM ON A MARK REQUEST WITH A 3 COMP. DEC DISPLAY.  THE DESIRED MARK PLEASE
#	PERFORM VERB AND NOUN ARE ENTERED IN A.  GOMARK3 DISPLAYS R1, R2, R3 BY MEANS OF A V06NYY FOLLOWED BY A FLASHING
#	V5XNYY FOR A PLEASE PERFORM.  GOMARK3 HAS 3 ASTRONAUT RETURNS TO THE USER WITH NO IMMEDIATE RETURN.
#				CAF	V5XNYY		# X=1,2,3,4	YY=NOUN
#				TC	BANKCALL
#				CADR	GOMARK3
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
#				...	...		# ENTER RETURN

#	GOMARK4 IS THE SAME AS GOMARK3 ONLY R2 AND R3 ARE BLANKED AND R1 IS DISPLAYED IN OCTAL.
#				CAF	V5XNYY		# X=1,2,3,4	YY=NOUN
#				TC	BANKCALL
#				CADR	GOMARK4
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
# Page 1460
#			...	...			# ENTER RETURN
#	EXDSPRET IS USED TO DISPLAY A VERB NOUN ARRIVING IN A WITH A RETURN MADE TO THE USER AFTER THE DISPLAY HAS BEEN
#	SENT OUT.
#				CAF	VXXNYY
#				TC	BANKCALL
#				CADR	EXDSPRET
#				...	...		# RETURN TO USER

#	KLEENEX CLEANS OUT ALL MARK DISPLAYS (ACTIVE AND INACTIVE). A RETURN IS MADE TO THE USER AFTER THE MARK DISPLAYS
#	HAVE BEEN CLEANED OUT.
#				TC	BANKCALL
#				CADR	KLEENEX
#				...	...		# RETURN TO USER

#	MARKBRAN IS A SPECIAL PURPOSE ROUTINE USED FOR SAVING JOB VAC AREAS (SEE DESCRIPTION OF MARKBRAN BELOW).
#				TC	BANKCALL
#				CADR	MARKBRAN
#				...	...		# BAD RETURN IF MARK DISPLAY NOT ACTIVE
#							# (GOOD RETURN TO IMMEDIATE RETURN LOC OF
#							# LAST FLASHING MARK R ROUTINE)

#	PINBRNCH REESTABLISHES THE LAST ACTIVE FLASHING DISPLAY.  IF THERE IS NO ACTIVE FLASHING DISPLAY, THE DSKY IS
#	BLANKED AND CONTROL IS SENT TO ENDOFJOB.
#				TC	POSTJUMP
#				CADR	PINBRNCH

#	PRIODSP IS USED AS A PRIORITY DISPLAY.  IT WILL DISPLAY A GOFLASH TYPE DISPLAY WITH THREE POSSIBLE RETURNS FROM
#	THE ASTRONAUT(SEE NO.7 ABOVE).
#
#		THE MAIN PURPOSE OF PRIODSP IS TO REPLACE THE PRESENT DISPLAY WITH A DISPLAY OF HIGHER PRIORITY AND TO
#	PROVIDE A MEANS FOR RESTORING THE OLD DISPLAY WHEN THE PRIORITY DISPLAY
# 	IS RESPONDED TO BY THE ASTRONAUT.
#
#		THE FORMER DISPLAY IS RESTORED BY AN AUTOMATIC BRANCH TO WAKE UP THE DISPLAY THAT WAS INTERRUPTED BY THE
#	PRIO DISPLAY.
#				CAF	VXXNYY		# VXXNYY WILL BE A FLASHING VERB NOUN
#				TC	BANKCALL
#				CADR	PRIODSP
#				...	...		# TERMINATE RETURN
#				...	...		# PROCEED RETURN
# Page 1461
#				...	...		# ENTER OR RECYCLE RETURN

#	PRIODSPR IS THE SAME AS PRIODSP ONLY AN IMMEDIATE RETURN IS MADE TO THE USERS CALL CADR +4.
#				CAF	VXXNYY		# VXXNYY WILL BE A FLASHING VERB NOUN
#				TC	BANKCALL
#				CADR	PRIODSPR
#				...	...		# TERMINATE ACTION
#				...	...		# PROCEED RETURN
#				...	...		# ENTER OR RECYCLE RETURN
#				...	...		# IMMEDIATE RETURN

#	PRIOLARM DOES A V05N09 PRIODSPR.
#	CLEANDSP CLEANS OUT ALL NORMAL DISPLAYS (ACTIVE AND INACTIVE). A RETURN IS MADE TO THE USER AFTER NORMAL
#	DISPLAYS ARE CLEANED OUT.
#				TC	BANKCALL
#				CADR	CLEANDSP
#				...	...		# RETURN TO USER
# Page 1462
#
# GENERAL INFORMATION
# -------------------
#
# ALARM OR ABORT EXIT MODES--
#					PRIOBORT	TC	ABORT
#							OCT	1502
#
#	PRIOBORT IS BRANCED TO WHEN (1)  A NORMAL DISPLAY IS REQUESTED AND  ANOTHER NORMAL DISPLAY IS ALREADY ACTIVE
#	(REFLASH AND REGODSP ARE EXCEPTIONS) OR (2) A PRIORITY DISPLAY IS REQUESTED WHEN ANOTHER PRIORITY DISPLAY IS
#	ALREADY ACTIVE (A PRIORITY WITH LINUS BIT14 IS AN EXCEPTION).
#
# ERASABLE INITIALIZATION REQUIRED--
#	ACCOMPLISHED BY FRESH START-	1.  FLAGWRD4 (USED EXCLUSIVELY BY DISPLAY INTERFACE ROUTINES)
#					2.  NVSAVE = NORMAL VERB AND NOUN REGISTER.
#					3.  EBANKTEM = NORMAL INACTIVE FLAGWORD (ALSO CONTAINS NORMALS EBANK).
#					5.  R1SAVE = MARKBRAN CONTROL WORD
#					4.  RESTREG = PRIORITY 30 AND SUPERBANK 3.
#
# OUTPUT--
#	NVWORD = PRIO VERB AND NOUN
#	NVWORD +1(MARKNV) = MARK VERB AND NOUN
#	NVWORD +2(NVSAVE) = NORMAL VERB AND NOUN
#	DSPFLG(EBANKSAV) = PRIO FLAGWORD (INCLUDING EBANK)
#	DSPFLG +1 (MARKEBAN) = MARK FLAGWORD (INCLUDING EBANK)
#	DSPFLG +2 (EBANKTEM) = NORMAL FLAGWORD (INCLUDING EBANK)
#	CADRFLSH = PRIO USERS CALL CADR +1 LOCATION
#	CADRFLSH +1 (MARKFLSH) = MARK USERS CALL CADR +1 LOCATION
#	CADRFLSH +2 (TEMPFLSH) = NORMAL USERS CALL CADR +1 LOCATION
#	PRIOTI
Download .txt
gitextract_sw4va6c1/

├── .editorconfig
├── .github/
│   ├── ISSUE_TEMPLATE/
│   │   ├── Discussion.md
│   │   ├── Humour.md
│   │   ├── Proof_Comanche.md
│   │   └── Proof_Luminary.md
│   ├── PULL_REQUEST_TEMPLATE.md
│   ├── labeler.yml
│   └── workflows/
│       ├── label.yml
│       └── markdownlint.yml
├── .gitignore
├── .markdownlint.yml
├── CONTRIBUTING.md
├── Comanche055/
│   ├── AGC_BLOCK_TWO_SELF-CHECK.agc
│   ├── ALARM_AND_ABORT.agc
│   ├── ANGLFIND.agc
│   ├── ASSEMBLY_AND_OPERATION_INFORMATION.agc
│   ├── AUTOMATIC_MANEUVERS.agc
│   ├── CM_BODY_ATTITUDE.agc
│   ├── CM_ENTRY_DIGITAL_AUTOPILOT.agc
│   ├── CONIC_SUBROUTINES.agc
│   ├── CONTRACT_AND_APPROVALS.agc
│   ├── CSM_GEOMETRY.agc
│   ├── DISPLAY_INTERFACE_ROUTINES.agc
│   ├── DOWN-TELEMETRY_PROGRAM.agc
│   ├── DOWNLINK_LISTS.agc
│   ├── ENTRY_LEXICON.agc
│   ├── ERASABLE_ASSIGNMENTS.agc
│   ├── EXECUTIVE.agc
│   ├── EXTENDED_VERBS.agc
│   ├── FIXED_FIXED_CONSTANT_POOL.agc
│   ├── FRESH_START_AND_RESTART.agc
│   ├── GIMBAL_LOCK_AVOIDANCE.agc
│   ├── GROUND_TRACKING_DETERMINATION_PROGRAM.agc
│   ├── IMU_CALIBRATION_AND_ALIGNMENT.agc
│   ├── IMU_COMPENSATION_PACKAGE.agc
│   ├── IMU_MODE_SWITCHING_ROUTINES.agc
│   ├── INFLIGHT_ALIGNMENT_ROUTINES.agc
│   ├── INTEGRATION_INITIALIZATION.agc
│   ├── INTER-BANK_COMMUNICATION.agc
│   ├── INTERPRETER.agc
│   ├── INTERPRETIVE_CONSTANTS.agc
│   ├── INTERRUPT_LEAD_INS.agc
│   ├── JET_SELECTION_LOGIC.agc
│   ├── KALCMANU_STEERING.agc
│   ├── KEYRUPT_UPRUPT.agc
│   ├── LATITUDE_LONGITUDE_SUBROUTINES.agc
│   ├── LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc
│   ├── LUNAR_LANDMARK_SELECTION_FOR_CM.agc
│   ├── MAIN.agc
│   ├── MEASUREMENT_INCORPORATION.agc
│   ├── MYSUBS.agc
│   ├── ORBITAL_INTEGRATION.agc
│   ├── P11.agc
│   ├── P20-P25.agc
│   ├── P30-P37.agc
│   ├── P32-P33_P72-P73.agc
│   ├── P34-35_P74-75.agc
│   ├── P37_P70.agc
│   ├── P40-P47.agc
│   ├── P51-P53.agc
│   ├── P61-P67.agc
│   ├── P76.agc
│   ├── PHASE_TABLE_MAINTENANCE.agc
│   ├── PINBALL_GAME_BUTTONS_AND_LIGHTS.agc
│   ├── PINBALL_NOUN_TABLES.agc
│   ├── PLANETARY_INERTIAL_ORIENTATION.agc
│   ├── POWERED_FLIGHT_SUBROUTINES.agc
│   ├── R30.agc
│   ├── R31.agc
│   ├── R60_62.agc
│   ├── RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc
│   ├── RCS-CSM_DIGITAL_AUTOPILOT.agc
│   ├── README.md
│   ├── REENTRY_CONTROL.agc
│   ├── RESTARTS_ROUTINE.agc
│   ├── RESTART_TABLES.agc
│   ├── RT8_OP_CODES.agc
│   ├── S-BAND_ANTENNA_FOR_CM.agc
│   ├── SERVICER207.agc
│   ├── SERVICE_ROUTINES.agc
│   ├── SINGLE_PRECISION_SUBROUTINES.agc
│   ├── STABLE_ORBIT.agc
│   ├── STAR_TABLES.agc
│   ├── SXTMARK.agc
│   ├── SYSTEM_TEST_STANDARD_LEAD_INS.agc
│   ├── T4RUPT_PROGRAM.agc
│   ├── TAGS_FOR_RELATIVE_SETLOC.agc
│   ├── TIME_OF_FREE_FALL.agc
│   ├── TPI_SEARCH.agc
│   ├── TVCDAPS.agc
│   ├── TVCEXECUTIVE.agc
│   ├── TVCINITIALIZE.agc
│   ├── TVCMASSPROP.agc
│   ├── TVCRESTARTS.agc
│   ├── TVCROLLDAP.agc
│   ├── TVCSTROKETEST.agc
│   ├── UPDATE_PROGRAM.agc
│   └── WAITLIST.agc
├── LICENSE.md
├── Luminary099/
│   ├── AGC_BLOCK_TWO_SELF_CHECK.agc
│   ├── AGS_INITIALIZATION.agc
│   ├── ALARM_AND_ABORT.agc
│   ├── AOSTASK_AND_AOSJOB.agc
│   ├── AOTMARK.agc
│   ├── ASCENT_GUIDANCE.agc
│   ├── ASSEMBLY_AND_OPERATION_INFORMATION.agc
│   ├── ATTITUDE_MANEUVER_ROUTINE.agc
│   ├── BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc
│   ├── CONIC_SUBROUTINES.agc
│   ├── CONTROLLED_CONSTANTS.agc
│   ├── DAPIDLER_PROGRAM.agc
│   ├── DAP_INTERFACE_SUBROUTINES.agc
│   ├── DISPLAY_INTERFACE_ROUTINES.agc
│   ├── DOWNLINK_LISTS.agc
│   ├── DOWN_TELEMETRY_PROGRAM.agc
│   ├── ERASABLE_ASSIGNMENTS.agc
│   ├── EXECUTIVE.agc
│   ├── EXTENDED_VERBS.agc
│   ├── FINDCDUW--GUIDAP_INTERFACE.agc
│   ├── FIXED_FIXED_CONSTANT_POOL.agc
│   ├── FLAGWORD_ASSIGNMENTS.agc
│   ├── FRESH_START_AND_RESTART.agc
│   ├── GENERAL_LAMBERT_AIMPOINT_GUIDANCE.agc
│   ├── GIMBAL_LOCK_AVOIDANCE.agc
│   ├── GROUND_TRACKING_DETERMINATION_PROGRAM.agc
│   ├── IMU_COMPENSATION_PACKAGE.agc
│   ├── IMU_MODE_SWITCHING_ROUTINES.agc
│   ├── IMU_PERFORMANCE_TESTS_4.agc
│   ├── IMU_PERFORMANCE_TEST_2.agc
│   ├── INFLIGHT_ALIGNMENT_ROUTINES.agc
│   ├── INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc
│   ├── INTEGRATION_INITIALIZATION.agc
│   ├── INTER-BANK_COMMUNICATION.agc
│   ├── INTERPRETER.agc
│   ├── INTERPRETIVE_CONSTANT.agc
│   ├── INTERRUPT_LEAD_INS.agc
│   ├── KALCMANU_STEERING.agc
│   ├── KALMAN_FILTER.agc
│   ├── KEYRUPT_UPRUPT.agc
│   ├── LANDING_ANALOG_DISPLAYS.agc
│   ├── LATITUDE_LONGITUDE_SUBROUTINES.agc
│   ├── LEM_GEOMETRY.agc
│   ├── LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc
│   ├── LUNAR_LANDING_GUIDANCE_EQUATIONS.agc
│   ├── MAIN.agc
│   ├── MEASUREMENT_INCORPORATION.agc
│   ├── ORBITAL_INTEGRATION.agc
│   ├── P-AXIS_RCS_AUTOPILOT.agc
│   ├── P12.agc
│   ├── P20-P25.agc
│   ├── P30_P37.agc
│   ├── P32-P35_P72-P75.agc
│   ├── P34-35_P74-75.agc
│   ├── P40-P47.agc
│   ├── P51-P53.agc
│   ├── P70-P71.agc
│   ├── P76.agc
│   ├── PHASE_TABLE_MAINTENANCE.agc
│   ├── PINBALL_GAME_BUTTONS_AND_LIGHTS.agc
│   ├── PINBALL_NOUN_TABLES.agc
│   ├── PLANETARY_INERTIAL_ORIENTATION.agc
│   ├── POWERED_FLIGHT_SUBROUTINES.agc
│   ├── Q_R-AXIS_RCS_AUTOPILOT.agc
│   ├── R30.agc
│   ├── R31.agc
│   ├── R60_62.agc
│   ├── R63.agc
│   ├── RADAR_LEADIN_ROUTINES.agc
│   ├── RCS_FAILURE_MONITOR.agc
│   ├── README.md
│   ├── RESTARTS_ROUTINE.agc
│   ├── RESTART_TABLES.agc
│   ├── RTB_OP_CODES.agc
│   ├── S-BAND_ANTENNA_FOR_LM.agc
│   ├── SERVICER.agc
│   ├── SERVICE_ROUTINES.agc
│   ├── SINGLE_PRECISION_SUBROUTINES.agc
│   ├── SPS_BACK-UP_RCS_CONTROL.agc
│   ├── STABLE_ORBIT.agc
│   ├── SYSTEM_TEST_STANDARD_LEAD_INS.agc
│   ├── T4RUPT_PROGRAM.agc
│   ├── T6-RUPT_PROGRAMS.agc
│   ├── TAGS_FOR_RELATIVE_SETLOC.agc
│   ├── THE_LUNAR_LANDING.agc
│   ├── THROTTLE_CONTROL_ROUTINES.agc
│   ├── TIME_OF_FREE_FALL.agc
│   ├── TJET_LAW.agc
│   ├── TRIM_GIMBAL_CONTROL_SYSTEM.agc
│   ├── UPDATE_PROGRAM.agc
│   └── WAITLIST.agc
├── README.md
├── Translations/
│   ├── CONTRIBUTING.ar.md
│   ├── CONTRIBUTING.az.md
│   ├── CONTRIBUTING.ca.md
│   ├── CONTRIBUTING.cz.md
│   ├── CONTRIBUTING.da.md
│   ├── CONTRIBUTING.de.md
│   ├── CONTRIBUTING.es.md
│   ├── CONTRIBUTING.fr.md
│   ├── CONTRIBUTING.gl.md
│   ├── CONTRIBUTING.gr.md
│   ├── CONTRIBUTING.hi_in.md
│   ├── CONTRIBUTING.id.md
│   ├── CONTRIBUTING.it.md
│   ├── CONTRIBUTING.ja.md
│   ├── CONTRIBUTING.jv.md
│   ├── CONTRIBUTING.ko_kr.md
│   ├── CONTRIBUTING.ku.md
│   ├── CONTRIBUTING.lt.md
│   ├── CONTRIBUTING.mn.md
│   ├── CONTRIBUTING.nl.md
│   ├── CONTRIBUTING.no.md
│   ├── CONTRIBUTING.pl.md
│   ├── CONTRIBUTING.pt_br.md
│   ├── CONTRIBUTING.sv.md
│   ├── CONTRIBUTING.tr.md
│   ├── CONTRIBUTING.uk.md
│   ├── CONTRIBUTING.vi.md
│   ├── CONTRIBUTING.zh_cn.md
│   ├── CONTRIBUTING.zh_tw.md
│   ├── README.ar.md
│   ├── README.as_in.md
│   ├── README.az.md
│   ├── README.bd_bn.md
│   ├── README.be.md
│   ├── README.ca.md
│   ├── README.cz.md
│   ├── README.da.md
│   ├── README.de.md
│   ├── README.es.md
│   ├── README.fa.md
│   ├── README.fi.md
│   ├── README.fr.md
│   ├── README.gl.md
│   ├── README.gr.md
│   ├── README.hi_in.md
│   ├── README.id.md
│   ├── README.it.md
│   ├── README.ja.md
│   ├── README.jv.md
│   ├── README.ko_kr.md
│   ├── README.ku.md
│   ├── README.lt.md
│   ├── README.ml.md
│   ├── README.mm.md
│   ├── README.mn.md
│   ├── README.ne.md
│   ├── README.nl.md
│   ├── README.no.md
│   ├── README.pl.md
│   ├── README.pt_br.md
│   ├── README.ro.md
│   ├── README.ru.md
│   ├── README.si.md
│   ├── README.sv.md
│   ├── README.tr.md
│   ├── README.uk.md
│   ├── README.vi.md
│   ├── README.zh_cn.md
│   └── README.zh_tw.md
├── bun.lockb
└── package.json
Condensed preview — 262 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,086K chars).
[
  {
    "path": ".editorconfig",
    "chars": 197,
    "preview": "root = true\n\n[*]\ncharset = utf-8\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.agc]\ni"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Discussion.md",
    "chars": 134,
    "preview": "---\nname: Discussion & Questions\nabout: Discussion about the Apollo 11 source code is highly welcomed.\nlabels: \"Type: Di"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Humour.md",
    "chars": 140,
    "preview": "---\nname: Humour / Jokes\nabout: Humourous issues are allowed, but please follow GitHub's Acceptable Use policies\nlabels:"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Proof_Comanche.md",
    "chars": 391,
    "preview": "---\nname: Proof Comanche055\nabout: Template for Comanche055 Proof issues \ntitle: \"Proof \"\n---\nProof read transcribed cod"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/Proof_Luminary.md",
    "chars": 391,
    "preview": "---\nname: Proof Luminary099\nabout: Template for Luminary099 Proof issues \ntitle: \"Proof \"\n---\nProof read transcribed cod"
  },
  {
    "path": ".github/PULL_REQUEST_TEMPLATE.md",
    "chars": 314,
    "preview": "<!-- Proofing PRs:\n1. Title should follow \"Proof [FILE NAME] #[PROOF ISSUE]\", e.g:\n    \"Proof ALARM_AND_ABORT #564\"\n2. M"
  },
  {
    "path": ".github/labeler.yml",
    "chars": 87,
    "preview": "\"Type: Proof\":\n  - \"**/*.agc\"\n\"Type: Meta\":\n  - \"**/MAIN.agc\"\n  - \"**/*.md\"\n  - \"*.md\"\n"
  },
  {
    "path": ".github/workflows/label.yml",
    "chars": 343,
    "preview": "name: Pull Request Labeler\non:\n  schedule:\n    - cron: '0 */3 * * *'\njobs:\n  labeler:\n    runs-on: ubuntu-latest\n    ste"
  },
  {
    "path": ".github/workflows/markdownlint.yml",
    "chars": 380,
    "preview": "name: markdownlint\non: [push, pull_request]\njobs:\n  delivery:\n    runs-on: ubuntu-latest\n    steps:\n    - name: Check ou"
  },
  {
    "path": ".gitignore",
    "chars": 23,
    "preview": "yaYUL.exe\nnode_modules\n"
  },
  {
    "path": ".markdownlint.yml",
    "chars": 144,
    "preview": "default: true\nMD007: false\nMD010: false\nMD013: false\nMD026: false\nMD033: false\nMD034: false\nMD036: false\nMD041: false\nMD"
  },
  {
    "path": "CONTRIBUTING.md",
    "chars": 6271,
    "preview": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Basa Jawa][JV],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n"
  },
  {
    "path": "Comanche055/AGC_BLOCK_TWO_SELF-CHECK.agc",
    "chars": 13911,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tAGC_BLOCK_TWO_SELF-CHECK.agc\n# Purpose:\tPart of the source code for Colossus 2A,"
  },
  {
    "path": "Comanche055/ALARM_AND_ABORT.agc",
    "chars": 4448,
    "preview": "# Copyright:    Public domain.\n# Filename:     ALARM_AND_ABORT.agc\n# Purpose:      Part of the source code for Comanche,"
  },
  {
    "path": "Comanche055/ANGLFIND.agc",
    "chars": 11682,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tANGLFIND.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 05"
  },
  {
    "path": "Comanche055/ASSEMBLY_AND_OPERATION_INFORMATION.agc",
    "chars": 31234,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tASSEMBLY_AND_OPERATION_INFORMATION.agc\n# Purpose:\tPart of the source code for Co"
  },
  {
    "path": "Comanche055/AUTOMATIC_MANEUVERS.agc",
    "chars": 10787,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tAUTOMATIC_MANEUVERS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA "
  },
  {
    "path": "Comanche055/CM_BODY_ATTITUDE.agc",
    "chars": 6926,
    "preview": "# Copyright:    Public domain.\n# Filename:     CM_BODY_ATTITUDE.agc\n# Purpose:      Part of the source code for Comanche"
  },
  {
    "path": "Comanche055/CM_ENTRY_DIGITAL_AUTOPILOT.agc",
    "chars": 31099,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tCM_ENTRY_DIGITAL_AUTOPILOT.agc\n# Purpose:\tPart of the source code for Colossus 2"
  },
  {
    "path": "Comanche055/CONIC_SUBROUTINES.agc",
    "chars": 47233,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tCONIC_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Co"
  },
  {
    "path": "Comanche055/CONTRACT_AND_APPROVALS.agc",
    "chars": 3432,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tCONTRACT_AND_APPROVALS.agc\n# Purpose:\tPart of the source code for Colossus 2A, A"
  },
  {
    "path": "Comanche055/CSM_GEOMETRY.agc",
    "chars": 9913,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tCSM_GEOMETRY.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanch"
  },
  {
    "path": "Comanche055/DISPLAY_INTERFACE_ROUTINES.agc",
    "chars": 40070,
    "preview": "# Copyright:    Public domain.\n# Filename:     DISPLAY_INTERFACE_ROUTINES.agc\n# Purpose:      Part of the source code fo"
  },
  {
    "path": "Comanche055/DOWN-TELEMETRY_PROGRAM.agc",
    "chars": 17718,
    "preview": "# Copyright:    Public domain.\n# Filename:     DOWN-TELEMETRY_PROGRAM.agc\n# Purpose:      Part of the source code for Co"
  },
  {
    "path": "Comanche055/DOWNLINK_LISTS.agc",
    "chars": 13544,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tDOWNLINK_LISTS.agc\n# Purpose:\tPart of the source code for Comanche, build 055. I"
  },
  {
    "path": "Comanche055/ENTRY_LEXICON.agc",
    "chars": 11121,
    "preview": "# Copyright:    Public domain.\n# Filename:     ENTRY_LEXICON.agc\n# Purpose:      Part of the source code for Comanche, b"
  },
  {
    "path": "Comanche055/ERASABLE_ASSIGNMENTS.agc",
    "chars": 102170,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tERASABLE_ASSIGNMENTS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA"
  },
  {
    "path": "Comanche055/EXECUTIVE.agc",
    "chars": 11541,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tEXECUTIVE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 0"
  },
  {
    "path": "Comanche055/EXTENDED_VERBS.agc",
    "chars": 31075,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tEXTENDED_VERBS.agc\n# Purpose:\tPart of the source code for Comanche, build 055. I"
  },
  {
    "path": "Comanche055/FIXED_FIXED_CONSTANT_POOL.agc",
    "chars": 6608,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tFIXED_FIXED_CONSTANT_POOL.agc\n# Purpose:\tPart of the source code for Colossus 2A"
  },
  {
    "path": "Comanche055/FRESH_START_AND_RESTART.agc",
    "chars": 32186,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tFRESH_START_AND_RESTART.agc\n# Purpose:\tPart of the source code for Comanche, bui"
  },
  {
    "path": "Comanche055/GIMBAL_LOCK_AVOIDANCE.agc",
    "chars": 2157,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tGIMBAL_LOCK_AVOIDANCE.agc\n# Purpose:\tPart of the source code for Comanche, build"
  },
  {
    "path": "Comanche055/GROUND_TRACKING_DETERMINATION_PROGRAM.agc",
    "chars": 4642,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tGROUND_TRACKING_DETERMINATION_PROGRAM.agc\n# Purpose:\tPart of the source code for"
  },
  {
    "path": "Comanche055/IMU_CALIBRATION_AND_ALIGNMENT.agc",
    "chars": 23871,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tIMU_CALIBRATION_AND_ALIGNMENT.agc\n# Purpose:      Part of the source code for Co"
  },
  {
    "path": "Comanche055/IMU_COMPENSATION_PACKAGE.agc",
    "chars": 9277,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tIMU_COMPENSATION_PACKAGE.agc\n# Purpose:\tPart of the source code for Colossus 2A,"
  },
  {
    "path": "Comanche055/IMU_MODE_SWITCHING_ROUTINES.agc",
    "chars": 23181,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tIMU_MODE_SWITCHING_ROUTINES.agc\n# Purpose:\tPart of the source code for Colossus "
  },
  {
    "path": "Comanche055/INFLIGHT_ALIGNMENT_ROUTINES.agc",
    "chars": 7027,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINFLIGHT_ALIGNMENT_ROUTINES.agc\n# Purpose:\tPart of the source code for Colossus "
  },
  {
    "path": "Comanche055/INTEGRATION_INITIALIZATION.agc",
    "chars": 26531,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTEGRATION_INITIALIZATION.agc\n# Purpose:\tPart of the source code for Colossus 2"
  },
  {
    "path": "Comanche055/INTER-BANK_COMMUNICATION.agc",
    "chars": 5747,
    "preview": "# Copyright:    Public domain.\n# Filename:     INTER-BANK_COMMUNICATION.agc\n# Purpose:      Part of the source code for "
  },
  {
    "path": "Comanche055/INTERPRETER.agc",
    "chars": 78524,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETER.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche"
  },
  {
    "path": "Comanche055/INTERPRETIVE_CONSTANTS.agc",
    "chars": 1920,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETIVE_CONSTANTS.agc\n# Purpose:\tPart of the source code for Colossus 2A, A"
  },
  {
    "path": "Comanche055/INTERRUPT_LEAD_INS.agc",
    "chars": 2247,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTERRUPT_LEAD_INS.agc\n# Purpose:\tPart of the source code for Comanche, build 05"
  },
  {
    "path": "Comanche055/JET_SELECTION_LOGIC.agc",
    "chars": 21978,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tJET_SELECTION_LOGIC.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA "
  },
  {
    "path": "Comanche055/KALCMANU_STEERING.agc",
    "chars": 5059,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tKALCMANU_STEERING.agc\n# Purpose:\tPart of the source code for Comanche, build 055"
  },
  {
    "path": "Comanche055/KEYRUPT_UPRUPT.agc",
    "chars": 3853,
    "preview": "# Copyright:    Public domain.\n# Filename:     KEYRUPT_UPRUPT.agc\n# Purpose:      Part of the source code for Comanche, "
  },
  {
    "path": "Comanche055/LATITUDE_LONGITUDE_SUBROUTINES.agc",
    "chars": 7119,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLATITUDE_LONGITUDE_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Coloss"
  },
  {
    "path": "Comanche055/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc",
    "chars": 5394,
    "preview": "# Copyright:    Public domain.\n# Filename:     LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\n# Purpose:      Part of the s"
  },
  {
    "path": "Comanche055/LUNAR_LANDMARK_SELECTION_FOR_CM.agc",
    "chars": 1356,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLUNAR_LANDMARK_SELECTION_FOR_CM.agc\n# Purpose:\tPart of the source code for Colos"
  },
  {
    "path": "Comanche055/MAIN.agc",
    "chars": 3545,
    "preview": "$CONTRACT_AND_APPROVALS.agc\t\t\t# p. 1\n$ASSEMBLY_AND_OPERATION_INFORMATION.agc\t\t# pp. 2-26\n$TAGS_FOR_RELATIVE_SETLOC.agc\t\t"
  },
  {
    "path": "Comanche055/MEASUREMENT_INCORPORATION.agc",
    "chars": 8790,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tMEASUREMENT_INCORPORATION.agc\n# Purpose:\tPart of the source code for Colossus 2A"
  },
  {
    "path": "Comanche055/MYSUBS.agc",
    "chars": 2473,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tMYSUBS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055."
  },
  {
    "path": "Comanche055/ORBITAL_INTEGRATION.agc",
    "chars": 14885,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tORBITAL_INTEGRATION.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA "
  },
  {
    "path": "Comanche055/P11.agc",
    "chars": 21763,
    "preview": "# Copyright:    Public domain.\n# Filename:     P11.agc\n# Purpose:      Part of the source code for Colossus 2A, AKA Coma"
  },
  {
    "path": "Comanche055/P20-P25.agc",
    "chars": 71348,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP20-P25.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055"
  },
  {
    "path": "Comanche055/P30-P37.agc",
    "chars": 12085,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP30-P37.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055"
  },
  {
    "path": "Comanche055/P32-P33_P72-P73.agc",
    "chars": 26843,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP32-P33_P72-P73.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Coma"
  },
  {
    "path": "Comanche055/P34-35_P74-75.agc",
    "chars": 35303,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP34-35_P74-75.agc\n# Purpose:      Part of the source code for Comanche, build 05"
  },
  {
    "path": "Comanche055/P37_P70.agc",
    "chars": 37716,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP37_P70.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055"
  },
  {
    "path": "Comanche055/P40-P47.agc",
    "chars": 50844,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP40-P47.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055"
  },
  {
    "path": "Comanche055/P51-P53.agc",
    "chars": 40894,
    "preview": "# Copyright:    Public domain.\n# Filename:     P51-P53.agc\n# Purpose:      Part of the source code for Comanche, build 0"
  },
  {
    "path": "Comanche055/P61-P67.agc",
    "chars": 34115,
    "preview": "# Copyright:    Public domain.\n# Filename:     P61-P67.agc\n# Purpose:      Part of the source code for Comanche, build 0"
  },
  {
    "path": "Comanche055/P76.agc",
    "chars": 4804,
    "preview": "# Copyright:    Public domain.\n# Filename:     P76.agc\n# Purpose:      Part of the source code for Colossus 2A, AKA Coma"
  },
  {
    "path": "Comanche055/PHASE_TABLE_MAINTENANCE.agc",
    "chars": 12224,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPHASE_TABLE_MAINTENANCE.agc\n# Purpose:\tPart of the source code for Colossus 2A, "
  },
  {
    "path": "Comanche055/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc",
    "chars": 100080,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_GAME_BUTTONS_AND_LIGHTS.agc\n# Purpose:\tPart of the source code for Colos"
  },
  {
    "path": "Comanche055/PINBALL_NOUN_TABLES.agc",
    "chars": 26827,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_NOUN_TABLES.agc\n# Purpose:\tPart of the source code for Comanche, build 0"
  },
  {
    "path": "Comanche055/PLANETARY_INERTIAL_ORIENTATION.agc",
    "chars": 9496,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPLANETARY_INERTIAL_ORIENTATION.agc\n# Purpose:\tPart of the source code for Coloss"
  },
  {
    "path": "Comanche055/POWERED_FLIGHT_SUBROUTINES.agc",
    "chars": 10390,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPOWERED_FLIGHT_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Colossus 2"
  },
  {
    "path": "Comanche055/R30.agc",
    "chars": 15336,
    "preview": "# Copyright:    Public domain.\n# Filename:     R30.agc\n# Purpose:      Part of the source code for Colossus 2A, AKA Coma"
  },
  {
    "path": "Comanche055/R31.agc",
    "chars": 5840,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tR31.agc\n# Purpose:      Part of the source code for Comanche, build 055. It\n#   "
  },
  {
    "path": "Comanche055/R60_62.agc",
    "chars": 10521,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tR60_62.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055."
  },
  {
    "path": "Comanche055/RCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc",
    "chars": 2352,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRCS-CSM_DAP_EXECUTIVE_PROGRAMS.agc\n# Purpose:\tPart of the source code for Coloss"
  },
  {
    "path": "Comanche055/RCS-CSM_DIGITAL_AUTOPILOT.agc",
    "chars": 24477,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRCS-CSM_DIGITAL_AUTOPILOT.agc\n# Purpose:\tPart of the source code for Colossus 2A"
  },
  {
    "path": "Comanche055/README.md",
    "chars": 17160,
    "preview": "# Comanche055\n\nThe images (with suitable reduction in storage size and consequent reduction in image quality as well) ar"
  },
  {
    "path": "Comanche055/REENTRY_CONTROL.agc",
    "chars": 31542,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tREENTRY_CONTROL.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Coma"
  },
  {
    "path": "Comanche055/RESTARTS_ROUTINE.agc",
    "chars": 7809,
    "preview": "# Copyright:    Public domain.\n# Filename:     RESTARTS_ROUTINE.agc\n# Purpose:      Part of the source code for Comanche"
  },
  {
    "path": "Comanche055/RESTART_TABLES.agc",
    "chars": 11852,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRESTART_TABLES.agc\n# Purpose:\tPart of the source code for Comanche, build 055. I"
  },
  {
    "path": "Comanche055/RT8_OP_CODES.agc",
    "chars": 7768,
    "preview": "# Copyright:    Public domain.\n# Filename:     RT8_OP_CODES.agc\n# Purpose:      Part of the source code for Comanche, bu"
  },
  {
    "path": "Comanche055/S-BAND_ANTENNA_FOR_CM.agc",
    "chars": 3698,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tS-BAND_ANTENNA_FOR_CM.agc\n# Purpose:\tPart of the source code for Colossus 2A, AK"
  },
  {
    "path": "Comanche055/SERVICER207.agc",
    "chars": 19665,
    "preview": "# Copyright:    Public domain.\n# Filename:     SERVICER207.agc\n# Purpose:      Part of the source code for Comanche, bui"
  },
  {
    "path": "Comanche055/SERVICE_ROUTINES.agc",
    "chars": 6410,
    "preview": "# Copyright:    Public domain.\n# Filename:     SERVICE_ROUTINES.agc\n# Purpose:      Part of the source code for Comanche"
  },
  {
    "path": "Comanche055/SINGLE_PRECISION_SUBROUTINES.agc",
    "chars": 1813,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSINGLE_PRECISION_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Colossus"
  },
  {
    "path": "Comanche055/STABLE_ORBIT.agc",
    "chars": 9172,
    "preview": "# Copyright:    Public domain.\n# Filename:     STABLE_ORBIT.agc\n# Purpose:      Part of the source code for Colossus 2A,"
  },
  {
    "path": "Comanche055/STAR_TABLES.agc",
    "chars": 5473,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSTAR_TABLES.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche"
  },
  {
    "path": "Comanche055/SXTMARK.agc",
    "chars": 15461,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSXTMARK.agc\n# Purpose:\tPart of the source code for Comanche, build 055. It\n#\t\tis"
  },
  {
    "path": "Comanche055/SYSTEM_TEST_STANDARD_LEAD_INS.agc",
    "chars": 3827,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSYSTEM_TEST_STANDARD_LEAD_INS.agc\n# Purpose:\tPart of the source code for Comanch"
  },
  {
    "path": "Comanche055/T4RUPT_PROGRAM.agc",
    "chars": 38224,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tT4RUPT_PROGRAM.agc\n# Purpose:\tPart of the source code for Comanche, build 055.\n#"
  },
  {
    "path": "Comanche055/TAGS_FOR_RELATIVE_SETLOC.agc",
    "chars": 7368,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTAGS_FOR_RELATIVE_SETLOC.agc\n# Purpose:\tPart of the source code for Colossus 2A,"
  },
  {
    "path": "Comanche055/TIME_OF_FREE_FALL.agc",
    "chars": 23513,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTIME_OF_FREE_FALL.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Co"
  },
  {
    "path": "Comanche055/TPI_SEARCH.agc",
    "chars": 10653,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTPI_SEARCH.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche "
  },
  {
    "path": "Comanche055/TVCDAPS.agc",
    "chars": 16414,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTVCDAPS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 055"
  },
  {
    "path": "Comanche055/TVCEXECUTIVE.agc",
    "chars": 7926,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTVCEXECUTIVE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanch"
  },
  {
    "path": "Comanche055/TVCINITIALIZE.agc",
    "chars": 10796,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTVCINITIALIZE.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanc"
  },
  {
    "path": "Comanche055/TVCMASSPROP.agc",
    "chars": 6897,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTVCMASSPROP.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche"
  },
  {
    "path": "Comanche055/TVCRESTARTS.agc",
    "chars": 9821,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTVCRESTARTS.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche"
  },
  {
    "path": "Comanche055/TVCROLLDAP.agc",
    "chars": 18686,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTVCROLLDAP.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche "
  },
  {
    "path": "Comanche055/TVCSTROKETEST.agc",
    "chars": 8776,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTVCSTROKETEST.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanc"
  },
  {
    "path": "Comanche055/UPDATE_PROGRAM.agc",
    "chars": 16798,
    "preview": "# Copyright:    Public domain.\n# Filename:     UPDATE_PROGRAM.agc\n# Purpose:      Part of the source code for Comanche, "
  },
  {
    "path": "Comanche055/WAITLIST.agc",
    "chars": 14011,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tWAITLIST.agc\n# Purpose:\tPart of the source code for Colossus 2A, AKA Comanche 05"
  },
  {
    "path": "LICENSE.md",
    "chars": 1151,
    "preview": "# Public Domain Mark 1.0\n\n## No Copyright\n\nThis work has been identified as being free of known restrictions under copyr"
  },
  {
    "path": "Luminary099/AGC_BLOCK_TWO_SELF_CHECK.agc",
    "chars": 13695,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tAGC_BLOCK_TWO_SELF_CHECK.agc\n# Purpose: \tPart of the source code for Luminary 1A"
  },
  {
    "path": "Luminary099/AGS_INITIALIZATION.agc",
    "chars": 6146,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tAGS_INITIALIZATION.agc\n# Purpose: \tPart of the source code for Luminary 1A build"
  },
  {
    "path": "Luminary099/ALARM_AND_ABORT.agc",
    "chars": 5079,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tALARM_AND_ABORT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 09"
  },
  {
    "path": "Luminary099/AOSTASK_AND_AOSJOB.agc",
    "chars": 28653,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tAOSTASK_AND_AOSJOB.agc\n# Purpose: \tPart of the source code for Luminary 1A build"
  },
  {
    "path": "Luminary099/AOTMARK.agc",
    "chars": 16963,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tAOTMARK.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt"
  },
  {
    "path": "Luminary099/ASCENT_GUIDANCE.agc",
    "chars": 11209,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tASCENT_GUIDANCE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 09"
  },
  {
    "path": "Luminary099/ASSEMBLY_AND_OPERATION_INFORMATION.agc",
    "chars": 31842,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tASSEMBLY_AND_OPERATION_INFORMATION.agc\n# Purpose:\tPart of the source code for Lu"
  },
  {
    "path": "Luminary099/ATTITUDE_MANEUVER_ROUTINE.agc",
    "chars": 27087,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tATTITUDE_MANEUVER_ROUTINE.agc\n# Purpose: \tPart of the source code for Luminary 1"
  },
  {
    "path": "Luminary099/BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc",
    "chars": 22306,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tBURN_BABY_BURN--MASTER_IGNITION_ROUTINE.agc\n# Purpose: \tPart of the source code "
  },
  {
    "path": "Luminary099/CONIC_SUBROUTINES.agc",
    "chars": 47595,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tCONIC_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Luminary 1A build 0"
  },
  {
    "path": "Luminary099/CONTROLLED_CONSTANTS.agc",
    "chars": 14841,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tCONTROLLED_CONSTANTS.agc\n# Purpose:\tPart of the source code for Luminary 1A buil"
  },
  {
    "path": "Luminary099/DAPIDLER_PROGRAM.agc",
    "chars": 13220,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tDAPIDLER_PROGRAM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 0"
  },
  {
    "path": "Luminary099/DAP_INTERFACE_SUBROUTINES.agc",
    "chars": 4811,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tDAP_INTERFACE_SUBROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1"
  },
  {
    "path": "Luminary099/DISPLAY_INTERFACE_ROUTINES.agc",
    "chars": 40245,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tDISPLAY_INTERFACE_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary "
  },
  {
    "path": "Luminary099/DOWNLINK_LISTS.agc",
    "chars": 14597,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tDOWNLINK_LISTS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099"
  },
  {
    "path": "Luminary099/DOWN_TELEMETRY_PROGRAM.agc",
    "chars": 17768,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tDOWN_TELEMETRY_PROGRAM.agc\n# Purpose: \tPart of the source code for Luminary 1A b"
  },
  {
    "path": "Luminary099/ERASABLE_ASSIGNMENTS.agc",
    "chars": 77905,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tERASABLE ASSIGNMENTS.agc\n# Purpose: \tPart of the source code for Luminary 1A bui"
  },
  {
    "path": "Luminary099/EXECUTIVE.agc",
    "chars": 11697,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tEXECUTIVE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\t"
  },
  {
    "path": "Luminary099/EXTENDED_VERBS.agc",
    "chars": 37260,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tEXTENDED_VERBS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099"
  },
  {
    "path": "Luminary099/FINDCDUW--GUIDAP_INTERFACE.agc",
    "chars": 18500,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tFINDCDUW--GUIDAP_INTERFACE.agc\n# Purpose: \tPart of the source code for Luminary "
  },
  {
    "path": "Luminary099/FIXED_FIXED_CONSTANT_POOL.agc",
    "chars": 6679,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tFIXED_FIXED_CONSTANT_POOL.agc\n# Purpose: \tPart of the source code for Luminary 1"
  },
  {
    "path": "Luminary099/FLAGWORD_ASSIGNMENTS.agc",
    "chars": 36824,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tFLAGWORD_ASSIGNMENTS.agc\n# Purpose: \tPart of the source code for Luminary 1A bui"
  },
  {
    "path": "Luminary099/FRESH_START_AND_RESTART.agc",
    "chars": 27861,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tFRESH_START_AND_RESTART.agc\n# Purpose: \tPart of the source code for Luminary 1A "
  },
  {
    "path": "Luminary099/GENERAL_LAMBERT_AIMPOINT_GUIDANCE.agc",
    "chars": 4308,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLAMBERT_AIMPOINT_GUIDANCE.agc\n# Purpose: \tPart of the source code for Luminary 1"
  },
  {
    "path": "Luminary099/GIMBAL_LOCK_AVOIDANCE.agc",
    "chars": 2293,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tGIMBAL_LOCK_AVOIDANCE.agc\n# Purpose: \tPart of the source code for Luminary 1A bu"
  },
  {
    "path": "Luminary099/GROUND_TRACKING_DETERMINATION_PROGRAM.agc",
    "chars": 4796,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tGROUND_TRACKING_DETERMINATION_PROGRAM.agc\n# Purpose: \tPart of the source code fo"
  },
  {
    "path": "Luminary099/IMU_COMPENSATION_PACKAGE.agc",
    "chars": 10414,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tIMU_COMPENSATION_PACKAGE.agc\n# Purpose: \tPart of the source code for Luminary 1A"
  },
  {
    "path": "Luminary099/IMU_MODE_SWITCHING_ROUTINES.agc",
    "chars": 23400,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tIMU_MODE_SWITCHING_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary"
  },
  {
    "path": "Luminary099/IMU_PERFORMANCE_TESTS_4.agc",
    "chars": 6228,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tIMU_PERFORMANCE_TESTS_4.agc\n# Purpose: \tPart of the source code for Luminary 1A "
  },
  {
    "path": "Luminary099/IMU_PERFORMANCE_TEST_2.agc",
    "chars": 6936,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tIMU_PERFORMANCE_TEST_2.agc\n# Purpose: \tPart of the source code for Luminary 1A b"
  },
  {
    "path": "Luminary099/INFLIGHT_ALIGNMENT_ROUTINES.agc",
    "chars": 6931,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINFLIGHT_ALIGNMENT_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary"
  },
  {
    "path": "Luminary099/INPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc",
    "chars": 9400,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINPUT_OUTPUT_CHANNEL_BIT_DESCRIPTIONS.agc\n# Purpose: \tPart of the source code fo"
  },
  {
    "path": "Luminary099/INTEGRATION_INITIALIZATION.agc",
    "chars": 25139,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTEGRATION_INITIALIZATION.agc\n# Purpose: \tPart of the source code for Luminary "
  },
  {
    "path": "Luminary099/INTER-BANK_COMMUNICATION.agc",
    "chars": 5886,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTER-BANK_COMMUNICATION.agc\n# Purpose: \tPart of the source code for Luminary 1A"
  },
  {
    "path": "Luminary099/INTERPRETER.agc",
    "chars": 78662,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETER.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#"
  },
  {
    "path": "Luminary099/INTERPRETIVE_CONSTANT.agc",
    "chars": 1852,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTERPRETIVE_CONSTANT.agc\n# Purpose: \tPart of the source code for Luminary 1A bu"
  },
  {
    "path": "Luminary099/INTERRUPT_LEAD_INS.agc",
    "chars": 2343,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tINTERRUT_LEAD_INS.agc\n# Purpose: \tPart of the source code for Luminary 1A build "
  },
  {
    "path": "Luminary099/KALCMANU_STEERING.agc",
    "chars": 4807,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tKALCMANU_STEERING.agc\n# Purpose: \tPart of the source code for Luminary 1A build "
  },
  {
    "path": "Luminary099/KALMAN_FILTER.agc",
    "chars": 2261,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tKALMAN_FILTER.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099."
  },
  {
    "path": "Luminary099/KEYRUPT_UPRUPT.agc",
    "chars": 3833,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tKEYRUPT_UPRUPT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099"
  },
  {
    "path": "Luminary099/LANDING_ANALOG_DISPLAYS.agc",
    "chars": 11726,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLANDING_ANALOG_DISPLAYS.agc\n# Purpose:\tPart of the source code for Luminary, bui"
  },
  {
    "path": "Luminary099/LATITUDE_LONGITUDE_SUBROUTINES.agc",
    "chars": 7080,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLATITUDE_LONGITUDE_SUBROUTINES.agc\n# Purpose:\tPart of the source code for Lumina"
  },
  {
    "path": "Luminary099/LEM_GEOMETRY.agc",
    "chars": 5084,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLEM_GEOMETRY.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n"
  },
  {
    "path": "Luminary099/LUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc",
    "chars": 6094,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLUNAR_AND_SOLAR_EPHEMERIDES_SUBROUTINES.agc\n# Purpose: \tPart of the source code "
  },
  {
    "path": "Luminary099/LUNAR_LANDING_GUIDANCE_EQUATIONS.agc",
    "chars": 31942,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tLUNAR_LANDING_GUIDANCE_EQUATIONS.agc\n# Purpose: \tPart of the source code for Lum"
  },
  {
    "path": "Luminary099/MAIN.agc",
    "chars": 3815,
    "preview": "$ASSEMBLY_AND_OPERATION_INFORMATION.agc\t\t# pp. 1-27\n$TAGS_FOR_RELATIVE_SETLOC.agc\t\t\t# pp. 28-37\n$CONTROLLED_CONSTANTS.ag"
  },
  {
    "path": "Luminary099/MEASUREMENT_INCORPORATION.agc",
    "chars": 8613,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tMEASUREMENT_INCORPORATION.agc\n# Purpose:\tPart of the source code for Luminary 1A"
  },
  {
    "path": "Luminary099/ORBITAL_INTEGRATION.agc",
    "chars": 15916,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tORBITAL_INTEGRATION.agc\n# Purpose: \tPart of the source code for Luminary 1A buil"
  },
  {
    "path": "Luminary099/P-AXIS_RCS_AUTOPILOT.agc",
    "chars": 21026,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP-AXIS_RCS_AUTOPILOT.agc\n# Purpose: \tPart of the source code for Luminary 1A bui"
  },
  {
    "path": "Luminary099/P12.agc",
    "chars": 4407,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP12.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is "
  },
  {
    "path": "Luminary099/P20-P25.agc",
    "chars": 121255,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP20-P25.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt"
  },
  {
    "path": "Luminary099/P30_P37.agc",
    "chars": 4937,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP30_P37.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt"
  },
  {
    "path": "Luminary099/P32-P35_P72-P75.agc",
    "chars": 25575,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP32-P35_P72-P75.agc\n# Purpose: \tPart of the source code for Luminary 1A build 09"
  },
  {
    "path": "Luminary099/P34-35_P74-75.agc",
    "chars": 34716,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP34-35_P74-75.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099."
  },
  {
    "path": "Luminary099/P40-P47.agc",
    "chars": 30910,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP40-P47.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt"
  },
  {
    "path": "Luminary099/P51-P53.agc",
    "chars": 43690,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP51-P53.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt"
  },
  {
    "path": "Luminary099/P70-P71.agc",
    "chars": 7797,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP70-P71.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt"
  },
  {
    "path": "Luminary099/P76.agc",
    "chars": 4400,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tP76.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is "
  },
  {
    "path": "Luminary099/PHASE_TABLE_MAINTENANCE.agc",
    "chars": 12373,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPHASE_TABLE_MAINTENANCE.agc\n# Purpose: \tPart of the source code for Luminary 1A "
  },
  {
    "path": "Luminary099/PINBALL_GAME_BUTTONS_AND_LIGHTS.agc",
    "chars": 102264,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_GAME_BUTTONS_AND_LIGHTS.agc\n# Purpose:\tPart of the source code for Lumin"
  },
  {
    "path": "Luminary099/PINBALL_NOUN_TABLES.agc",
    "chars": 28087,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPINBALL_NOUN_TABLES.agc\n# Purpose: \tPart of the source code for Luminary 1A buil"
  },
  {
    "path": "Luminary099/PLANETARY_INERTIAL_ORIENTATION.agc",
    "chars": 9233,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPLANETARY_INERTIAL_ORIENTATION.agc\n# Purpose:\tPart of the source code for Lumina"
  },
  {
    "path": "Luminary099/POWERED_FLIGHT_SUBROUTINES.agc",
    "chars": 10932,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tPOWERED_FLIGHT_SUBROUTINES.agc\n# Purpose: \tPart of the source code for Luminary "
  },
  {
    "path": "Luminary099/Q_R-AXIS_RCS_AUTOPILOT.agc",
    "chars": 17289,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tQ_R-AXIS_RCS_AUTOPILOT.agc\n# Purpose: \tPart of the source code for Luminary 1A b"
  },
  {
    "path": "Luminary099/R30.agc",
    "chars": 14653,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tR30.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is "
  },
  {
    "path": "Luminary099/R31.agc",
    "chars": 5012,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tR31.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is "
  },
  {
    "path": "Luminary099/R60_62.agc",
    "chars": 15295,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tR60_R62.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt"
  },
  {
    "path": "Luminary099/R63.agc",
    "chars": 4925,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tR63.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tIt is "
  },
  {
    "path": "Luminary099/RADAR_LEADIN_ROUTINES.agc",
    "chars": 2538,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRADAR_LEADIN_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A bu"
  },
  {
    "path": "Luminary099/RCS_FAILURE_MONITOR.agc",
    "chars": 5834,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRCS_FAILURE_MONITOR.agc\n# Purpose: \tPart of the source code for Luminary 1A buil"
  },
  {
    "path": "Luminary099/README.md",
    "chars": 19648,
    "preview": "# Luminary099\n\nThe images (with suitable reduction in storage size and consequent reduction in image quality as well) ar"
  },
  {
    "path": "Luminary099/RESTARTS_ROUTINE.agc",
    "chars": 7689,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRESTARTS_ROUTINE.agc\n# Purpose: \tPart of the source code for Luminary 1A build 0"
  },
  {
    "path": "Luminary099/RESTART_TABLES.agc",
    "chars": 7458,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRESTART_TABLES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099"
  },
  {
    "path": "Luminary099/RTB_OP_CODES.agc",
    "chars": 5660,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tRTB_OP_CODES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n"
  },
  {
    "path": "Luminary099/S-BAND_ANTENNA_FOR_LM.agc",
    "chars": 4670,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tS-BAND_ANTENNA_FOR_LM.agc\n# Purpose: \tPart of the source code for Luminary 1A bu"
  },
  {
    "path": "Luminary099/SERVICER.agc",
    "chars": 34569,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSERVICER.agc\n# Purpose:\tPart of the source code for Luminary, build 099. It\n#\t\ti"
  },
  {
    "path": "Luminary099/SERVICE_ROUTINES.agc",
    "chars": 5418,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSERVICE_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1A build 0"
  },
  {
    "path": "Luminary099/SINGLE_PRECISION_SUBROUTINES.agc",
    "chars": 1726,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSINGLE_PRECISION_SUBROUTINES.agc\n# Purpose: \tPart of the source code for Luminar"
  },
  {
    "path": "Luminary099/SPS_BACK-UP_RCS_CONTROL.agc",
    "chars": 5909,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSPS_BACK-UP_RCS_CONTROL.agc\n# Purpose: \tPart of the source code for Luminary 1A "
  },
  {
    "path": "Luminary099/STABLE_ORBIT.agc",
    "chars": 9235,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSTABLE_ORBIT.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n"
  },
  {
    "path": "Luminary099/SYSTEM_TEST_STANDARD_LEAD_INS.agc",
    "chars": 3636,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tSYSTEM_TEST_STANDARD_LEAD_INS.agc\n# Purpose: \tPart of the source code for Lumina"
  },
  {
    "path": "Luminary099/T4RUPT_PROGRAM.agc",
    "chars": 37085,
    "preview": "# Copyright:    Public domain.\n# Filename:     T4RUPT_PROGRAM.agc\n# Purpose:      Part of the source code for Luminary 1"
  },
  {
    "path": "Luminary099/T6-RUPT_PROGRAMS.agc",
    "chars": 4500,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tT6-RUPT_PROGRAMS.agc\n# Purpose: \tPart of the source code for Luminary 1A build 0"
  },
  {
    "path": "Luminary099/TAGS_FOR_RELATIVE_SETLOC.agc",
    "chars": 5620,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTAGS_FOR_RELATIVE_SETLOC.agc\n# Purpose:\tPart of the source code for Luminary 1A "
  },
  {
    "path": "Luminary099/THE_LUNAR_LANDING.agc",
    "chars": 7460,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTHE_LUNAR_LANDING.agc\n# Purpose: \tPart of the source code for Luminary 1A build "
  },
  {
    "path": "Luminary099/THROTTLE_CONTROL_ROUTINES.agc",
    "chars": 5906,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTHROTTLE_CONTROL_ROUTINES.agc\n# Purpose: \tPart of the source code for Luminary 1"
  },
  {
    "path": "Luminary099/TIME_OF_FREE_FALL.agc",
    "chars": 23387,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTIME_OF_FREE_FALL.agc\n# Purpose: \tPart of the source code for Luminary 1A build "
  },
  {
    "path": "Luminary099/TJET_LAW.agc",
    "chars": 17211,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTJET_LAW.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tI"
  },
  {
    "path": "Luminary099/TRIM_GIMBAL_CONTROL_SYSTEM.agc",
    "chars": 17459,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tTRIM_GIMBAL_CNTROL_SYSTEM.agc\n# Purpose: \tPart of the source code for Luminary 1"
  },
  {
    "path": "Luminary099/UPDATE_PROGRAM.agc",
    "chars": 17802,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tUPDATE_PROGRAM.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099"
  },
  {
    "path": "Luminary099/WAITLIST.agc",
    "chars": 14816,
    "preview": "# Copyright:\tPublic domain.\n# Filename:\tWAITLIST.agc\n# Purpose: \tPart of the source code for Luminary 1A build 099.\n#\t\tI"
  },
  {
    "path": "README.md",
    "chars": 5917,
    "preview": "# Apollo-11\n\n[![NASA][1]][2]\n[![SWH]][SWH_URL]\n[![Comanche]][ComancheMilestone]\n[![Luminary]][LuminaryMilestone]\n\n🌐\n[Aze"
  },
  {
    "path": "Translations/CONTRIBUTING.ar.md",
    "chars": 5646,
    "preview": "<div dir=\"RTL\">\n\n# المساهمة\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deu"
  },
  {
    "path": "Translations/CONTRIBUTING.az.md",
    "chars": 6089,
    "preview": "# Töhfə\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English]"
  },
  {
    "path": "Translations/CONTRIBUTING.ca.md",
    "chars": 5691,
    "preview": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[E"
  },
  {
    "path": "Translations/CONTRIBUTING.cz.md",
    "chars": 5259,
    "preview": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[E"
  },
  {
    "path": "Translations/CONTRIBUTING.da.md",
    "chars": 6041,
    "preview": "# Bidrag\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[English"
  },
  {
    "path": "Translations/CONTRIBUTING.de.md",
    "chars": 6395,
    "preview": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[E"
  },
  {
    "path": "Translations/CONTRIBUTING.es.md",
    "chars": 5591,
    "preview": "# Contributing\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[E"
  },
  {
    "path": "Translations/CONTRIBUTING.fr.md",
    "chars": 6320,
    "preview": "# Contribuer\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[Eng"
  },
  {
    "path": "Translations/CONTRIBUTING.gl.md",
    "chars": 5524,
    "preview": "# Contribuíndo\n\n🌐\n[Azerbaijani][AZ],\n[bahasa Indonesia][ID],\n[Català][CA]،\n[Čeština][CZ],\n[Dansk][DA],\n[Deutsch][DE],\n[E"
  }
]

// ... and 62 more files (download for full content)

About this extraction

This page contains the full source code of the chrislgarry/Apollo-11 GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 262 files (3.4 MB), approximately 908.1k tokens. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!